Pre-register exp13 translator bake-off: six arms, cross-family span-citing judges, output gates, frozen before paid calls
This commit is contained in:
parent
9e3762eaa8
commit
5bc75d0e9a
1 changed files with 81 additions and 0 deletions
81
docs/experiments/13-translator-bakeoff.md
Normal file
81
docs/experiments/13-translator-bakeoff.md
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
# Эксперимент 13. Бейк-офф ПЕРЕВОДЧИКОВ (蛊真人 zh→ru) + финализация сида v2
|
||||
|
||||
**Статус:** полигон-сессия exp13 (D30.6, приоритет №1). Пре-скрин пилота Ф2.5, безκ-режим, N-судьи + флагман-сверка владельца. Смену дефолта ратифицирует ОРКЕСТРАТОР (D-блоком) — не эта сессия.
|
||||
**Мандат:** `docs/POLYGON_EXP13_SESSION_PROMPT.md` + D30.6/30.10. Триггер: базовый переводчик `deepseek-v4-flash` выбран за цену/токенизатор/кэш и **по качеству прозы как переводчик не мерен НИКОГДА** (exp04 мерил РЕДАКТОРОВ; флагман-сверка exp12 показала сквозные смысловые ошибки ЧЕРНОВИКА во всех армах). Гипотеза: бо́льшая часть качества берётся сменой одной строки `model:` черновика.
|
||||
**Зона:** `eval/` + этот файл + PROGRESS «Полигон» + курация сида (вне git). Бэкенд не трогаю (пакет D15.2). Кап **$5**.
|
||||
**Артефакты:** сэмплы/выходы/сырьё судей — `/home/ubuntu/books/gu-zhenren/diag/` (ВНЕ git; в доке — числа и цитаты ≤15 слов). Каждый платный скрипт персистит usage/cost (D30.10).
|
||||
|
||||
---
|
||||
|
||||
## 0. Онбординг-факты (контракт, на которых стоит дизайн)
|
||||
|
||||
- **D30.6 (ратификация):** exp13 приоритет №1; армы mistral-large-2512 / glm-5 / deepseek-v4-pro / **grok-4.3 reasoning-ON** (единственный CJK-чистый замер 10/10 exp10; ключ разблокирован D27); qwen — опционально, гейт на DashScope-ключ владельца; deepseek — thinking ON (эхо-мина). Судьи span-цитирующие reasoning-ON (урок exp12) + флагман-сверка владельца monitor-паттерном.
|
||||
- **D30.1 (флип D1):** редактор пере-прогона — БИЛИНГВАЛЬНЫЙ glm-5; re-gate верности обязателен. Пере-прогон 25 глав = {переводчик по exp13} → glm-5-билингв → reflow → сид v2 → санитайзер. Т.е. exp13 выбирает ТОЛЬКО стадию черновика; downstream-редактор чинит вёрстку и стиль.
|
||||
- **D30.2 (reflow):** «Сохраняй разбивку на абзацы» снимается из `translator.md:9`/`editor.md:8`. Пакет бэкенда D15.2 НЕ залендён на момент exp13 (translator.md ещё несёт строку 9) → армы строят промпт переводчика в eval-коде, **удаляя строку 9 согласно ратифицированному D30.2** (не изобретаю новую строку; PROGRESS-пинг оркестратору на сверку финальной прод-редакции). Влияние на РАНЖИРОВАНИЕ мало: reflow-вёрстку downstream делает билингв-редактор (D30.1), не черновик.
|
||||
- **Draft-стадия РЕАЛЬНО инъектит глоссарий** (`chunkrun.go:68` `translatorInjection = renderGlossaryBlock`) → армы несут ТОТ ЖЕ блок инъекции (`blocks.json[chunk].bilingual_glossary`, «src → dst», V1-сид приёмки), идентичный по чанку у ВСЕХ армов. Единственная варьируемая переменная — модель переводчика.
|
||||
- **exp04 (D3):** мерил РЕДАКТОРОВ (билингв, PD-классика). Переводчики как таковые не меряны никем. deepseek выбран за цену/токенизатор/кэш (Р4), не за качество прозы.
|
||||
- **grok-биллинг:** reasoning-ON = additive (xAI отдаёт `reasoning_tokens` отдельным полем; в eval даём max_tokens с запасом, считаем по usage). deepseek: thinking ON, reasoning ⊆ completion (subset). glm: thinking off (`extra_body {thinking:{type:disabled}}`). mistral: не reasoning-модель. Пруф-слаги/цены — models.yaml, prices_checked 2026-07-10.
|
||||
|
||||
---
|
||||
|
||||
## 1. ПРЕ-РЕГИСТРАЦИЯ (заморожена ДО платных вызовов; коммит до первого платного вызова — D30.10)
|
||||
|
||||
Всё ниже зафиксировано до генерации армов и оценки. Промпт переводчика **заморожен** — никакого промпт-инжиниринга по ходу (урок exp04: сломанная слепота однажды уже дала дефолт-редактора).
|
||||
|
||||
### 1.1. Материал — те же 3 чистые главы/6 чанков, что exp12 (сравнимость)
|
||||
|
||||
Frame и выбор — унаследованы из exp12 §1.1 (детерминированная формула диалого-плотности `D`, не черри-пик): **гл. 7** (диалого-плотная, D=0.490), **гл. 5** (смешанная = медиана, D=0.222), **гл. 14** (экспозиция, D=0.022). По 2 чанка на главу → 6 источников. Источник zh и его V1-инъекция — из приёмочного store (`diag/chunks.json`, `diag/blocks.json`), общие для всех армов.
|
||||
|
||||
### 1.2. Армы-переводчики (варьируется ТОЛЬКО модель черновика)
|
||||
|
||||
Каждый арм: `system(translator.md reflow-edition, brief-filled)` → `system(инъекция = blocks[chunk].bilingual_glossary)` [если непусто] → `user("Переведи следующий фрагмент:\n\n{source}")`. Layout = `MessagesWithInjection` (render.go). Brief-vars из `acceptance/book.yaml`: source_lang=zh, target_lang=ru, genre=вебновелла, audience=взрослые читатели вебновелл, title=蛊真人, honorifics=keep, transcription=palladius, venuti=0.6, footnotes=minimal. Decoding: **temperature 0.3** (прод draft-стадия), max_tokens 8000 (запас под thinking-модели; счёт по usage).
|
||||
|
||||
| Арм | Модель | Провайдер | reasoning-постура | Источник | Прайм-цена $/1M (in/out) |
|
||||
|---|---|---|---|---|---|
|
||||
| **T1** | deepseek-v4-flash (=база) | deepseek | thinking ON (эхо-мина; прод no-op «off») | **store, $0** (`chunks.json.draft`) | 0.14 / 0.28 |
|
||||
| **T2** | mistral-large-2512 | mistral | нет (не reasoning-модель) | live | 0.5 / 1.5 |
|
||||
| **T3** | glm-5 | zai | thinking OFF (`{thinking:{type:disabled}}`, = прод draft-постура) | live | 1.0 / 3.2 |
|
||||
| **T4** | deepseek-v4-pro | deepseek | thinking ON (эхо-мина; subset) | live | 0.435 / 0.87 |
|
||||
| **T5** | grok-4.3 **reasoning-ON** | xai | reasoning ON (default low; additive) — МАНДАТ D30.6 (reasoning-off = доказанный no-op) | live | 1.25 / 2.50 |
|
||||
| **T6** | qwen-flash | dashscope | нет | **ТОЛЬКО если владелец даст DashScope-ключ** (спрошено 1 раз, не блокируюсь) | — |
|
||||
|
||||
Постуры зафиксированы как прод-draft-постура каждой модели (draft-стадия шлёт reasoning «off»), КРОМЕ T5: reasoning-off grok = доказанный no-op (exp12 §2.2), поэтому мандат меряет grok reasoning-ON — единственный содержательный замер grok-как-переводчика.
|
||||
|
||||
### 1.3. Гейты на выходах (все армы; D30.10)
|
||||
|
||||
- **Эхо-rate** (отдельная колонка; deepseek-прайор 25%): доля Han-символов в ru-выходе > порога ⇒ эхо/копия исходника. Порог: >10% Han (нормальный ru-перевод ≈0–2% Han на редких терминах; полное эхо ≈100%). Флаг + запись, не роняю.
|
||||
- **Refusal:** маркеры отказа (не могу/не буду/as an AI) на не-18+ SFW-входе = дефект.
|
||||
- **Объём-коридор:** `len(ru)/len(zh_source)` вне zh→ru-бандов приёмки `[2.2, 4.2]` ⇒ флаг (усечение/раздувание).
|
||||
- **Полнота:** пустой выход / finish=length ⇒ дефект арма.
|
||||
|
||||
### 1.4. Оценка (уроки exp12 — D30.1/30.10)
|
||||
|
||||
**Судейская панель (кросс-семейная; НИ ОДИН арм не из семей судей → self-family exclusion соблюдён без исключений):**
|
||||
- **J1 gemini-3.1-pro-preview** (Google; thinking mandatory = reasoning-ON), **J2 gpt-5-mini** (OpenAI; reasoning_effort=medium = ON), **J3 kimi-k2.6** (Moonshot; reasoning-ON, temp=1 форс, max_tokens 16000). Ни deepseek/mistral/glm/grok (все — армы) в судьи не берём.
|
||||
- **Раздельные оси:** ВЕРНОСТЬ и СТИЛЬ — РАЗНЫМИ вызовами (урок exp12: смешанные скаляры слепы). Каждый вызов — ранжирование всех армов по одной оси на одном чанке.
|
||||
- **Рационале обязательно:** JSON `{ranking:[labels best→worst], evidence_spans:[{label, quote(zh/ru ≤15 слов), note}]}`. Пустой evidence ⇒ вызов невалиден, повтор.
|
||||
- **Слепота:** метки V1..VN, перемешанные СВОЕЙ перестановкой на каждый (чанк × ось × повтор); ключ — отдельный файл, не открывается до агрегации.
|
||||
- **≥3 повтора** со свапом на (чанк × ось × судья). Агрегация — среднее место (Borda), устойчивость к leak — по разбросу.
|
||||
- **Parse-чек полноты ранжирования:** `set(ranking)==set(labels)`; неполный вердикт выбрасывается (не доклеивается), дисклоуз в отчёте.
|
||||
- **Флагман-сверка владельца:** тем же monitor-паттерном (слепые метки, ключ отдельно, оригинал+вариант на копирование во Fable 5/5.6). Сырьё флагманов → `diag/`.
|
||||
- Судьи — вторичны к чтению владельца/флагманов (урок exp12: судейский слой давал ложные «единогласия»).
|
||||
|
||||
### 1.5. Гигиена (D30.10)
|
||||
|
||||
Каждый платный вызов персистит usage+cost в `diag/arms13/costs.jsonl`; финальная сумма — в отчёте. Хард-стоп на 80% капа ($4). Пре-регистрация коммитится ДО первого платного вызова. Аномалии провайдеров → вендор-дока, не гадание.
|
||||
|
||||
### 1.6. Deliverable
|
||||
|
||||
Таблица армов (стиль/верность со спанами/эхо-rate/цена за главу) → рекомендация переводчика для пере-прогона 25 глав (+ цена/25 глав) → финальный сид v2 со статусами после подписи владельца. **Перенос победителя на 18+ регистры требует ОТДЕЛЬНОЙ пробы** (D22/exp10-11): этот срез — ранние SFW-главы, канал-B ToS не активен здесь.
|
||||
|
||||
### 1.7. Финализация сида v2 (D30.5, вторая половина сессии)
|
||||
|
||||
- Спорные термины → `status:draft` (修炼/культивация, 人祖/Первопредок, род «гу», 花酒行者; тихие промоушены draft→approved откатить) → таблица на подпись владельцу → статусы после подписи.
|
||||
- Влить обогащение мн.ч. (D24.4: 元石/凡人/蛊师-класс, все счётные) в ту же v2-итерацию.
|
||||
- Дисклоузер-аддендум в exp12-док §4.2 (провенанс v2-сида и делегации — дефект провенанса из ревью D30.5).
|
||||
|
||||
---
|
||||
|
||||
## 2. Результаты
|
||||
|
||||
_(заполняется после исполнения; ничего выше не редактируется — пре-рег заморожен)_
|
||||
Loading…
Add table
Reference in a new issue