textmachine/backend/configs/pipeline-c1.yaml

89 lines
5.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Ядро C1: draft → editor (Р2). Обязательное приложение Фазы 0 — фиксирует
# границу «конфиг vs код раннера»:
# КОНФИГ: состав/порядок стадий, роль→модель, версии промптов, сэмплинг,
# пороги гейтов, режим инъекции глоссария, токен-бюджеты сборки контекста,
# именованные эскалационные цепочки, fan-out N, cache TTL.
# РАННЕР (код): циклы по главам/чанкам, ветвление по гейтам, механика
# эскалации/ретраев, правило «эскалация → re-gate → флаг», channel-aware
# фильтр цепочек (Anthropic вне 18+), resume по чекпоинтам.
core: C1
version: 1
defaults:
# max_tokens ≈ ratio × входные токены; калибровка полигона (эксп. 01):
# русский выход zh→ru ≈1.9× входа в токенах — 2.2 с запасом на ja/en.
max_output_ratio: 2.2
min_max_tokens: 2048
context:
# Р5: обе схемы инъекции глоссария обязаны поддерживаться конфигом.
# selective — ключи/алиасы/леммы в волатильном хвосте (~100800 ток.);
# full_prefix — весь глоссарий в стабильном префиксе (выгодно при cache-hit
# DeepSeek $0.0028/M — решается расчётом на прототипе).
glossary_injection: selective
glossary_token_budget: 800
stm_depth: 2 # глубина STM в чанках (Фаза 1)
overlap_tokens: 200 # перекрытие чанков = read-only контекст (Фаза 1)
cache_ttl: "5m"
retries:
# Содержательные регенерации после провала гейта ДО эскалации (транспортные
# ретраи — отдельно, в timeouts models.yaml).
regenerate_before_escalate: 1
stages:
- name: draft
role: translator
model: deepseek-v4-flash
prompt: ../prompts/translator.md
prompt_version: v0-draft
temperature: 0.3
reasoning: "off"
# single-hop echo-эскалация (D18: deepseek-эхо 25% на 蛊真人 → фолбэк выстрелит). deepseek-v4-pro —
# хоп 1 цепочки A (D3); стреляет ТОЛЬКО при escalation.budget_usd>0 (см. ниже). Escalate_to разрешён
# лишь на translator-роли (editor pinned — D12); результат ре-гейтится.
escalate_to: deepseek-v4-pro
- name: edit
role: editor
# Дефолт-редактор — grok-4.3 (D1/D3, bake-off эксп-04; glm-5 был плейсхолдером).
# reasoning:"off" → grok шлёт ЯВНЫЙ reasoning_effort:"none" (control:effort/off_effort:none,
# models.yaml) — омиссия у grok = low. Прод: только чистый xAI-ключ без data-sharing.
model: grok-4.3
prompt: ../prompts/editor.md
# D1-уточнение №3: коммит 6a68dfd сделал editor.md монолингвальным (убрал {{text}}) →
# сменил SHA, но лейбл остался v0-draft (один лейбл на два SHA). Бамп на v1-monolingual;
# осознанно меняет снапшот (боевых прогонов ещё не было).
prompt_version: v1-monolingual
temperature: 0.4
reasoning: "off"
gates:
coverage:
# Фаза 1. Пороги полигона (эксп. 02, символы БЕЗ пробелов): нижняя граница
# — подозрение на вырезание, верхняя — аномалия/галлюцинация.
enabled: false
len_ratio_bounds:
zh-ru: [2.2, 4.2]
ja-ru: [1.4, 2.6]
en-ru: [0.70, 1.4]
sent_cov_min: 0.75
min_chunk_chars: 500 # калибровка порогов — на фрагментах 5002500 симв.
escalation:
chains:
# D3-цепочка ЗАВЕДЕНА (пакет №3; все слаги live-фактчекнуты 2026-07-10 — /models + пробный вызов):
# канал A: deepseek-v4-pro → glm-5.1 → gemini-3.1-pro-preview (кросс-семейно; апекс — mandatory-thinking Gemini).
# канал B (18+): grok-4.3 reasoning-ON (D19.1; переводчик канала B = Mistral, задаётся channel:adult-стадией — Ф2).
# ⚠️ Именованные цепочки — валидируемый конфиг для мульти-хопа (шаг 7); раннер Ф1 исполняет
# SINGLE-HOP через stage.escalate_to (draft → deepseek-v4-pro выше). Слаг ИМЕННО gemini-3.1-pro-preview
# (gemini-3.1-pro → HTTP 404, live 2026-07-10). adult-цепочка — permissive-провайдеры (D4.1).
default: [deepseek-v4-pro, glm-5.1, gemini-3.1-pro-preview]
adult: [grok-4.3]
# Адресный премиум-бюджет книги, $. Формула «≤2×» из Р5 неоднозначна — [НУЖНО РЕШЕНИЕ] п.1.
# ⚠️ budget_usd=0 ⇒ эскалация НЕ исполняется (НИ chains, НИ stage.escalate_to — escalationBudgetRemains=false;
# CheckKeys не требует её ключей). Приёмочная сессия 蛊真人 ОБЯЗАНА выставить budget_usd>0, иначе echo-эскалация
# черновика (D18) не выстрелит. Дефолт 0 держит CI/Ф0 зелёными без gemini/mistral-ключей.
budget_usd: 0
fanout:
candidates: 1 # C1: один черновик