textmachine/docs/experiments/04-editor-quality.md

71 lines
14 KiB
Markdown
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.

# Эксперимент 04. Качество редактора ru-стиля (бейк-офф)
> **⚠ Рекомендация ОТМЕНЕНА (ревизия D31 / D30.1, 12.07).** Этот бейк-офф короновал grok-4.3 как дефолт-редактор, но: (а) мерил редакторов **БИЛИНГВАЛЬНО** (исходник+черновик, строка 7) на **дефолт-reasoning**, тогда как боевой D1 был МОНО + `reasoning_effort:none` — quality-transfer риск (exp08 §Ограничения) **материализовался** (exp12: grok reasoning-off = no-op-редактор, активность 0.001; glm-моно = нечитаемый этап A); (б) слепота LLM-плеча структурно сломана (D13.5). **Актуальный редактор: БИЛИНГВ, кандидат glm-5-билингв** (exp12/D30.1; GLM-4.6 был слабейшим ЗДЕСЬ — перемерен на GLM-5), gemini — премиум-эскалация только за санитайзером (течёт преамбулой 6/6, D30.3), grok reasoning-off из редакторов снят. Токен-замеры/методика — историческая фактура; **вывод о дефолте не абсорбировать**. Финал редактора — пере-прогон кандидатом (D30.9) + подтверждающий арм пилота D13.1.
Дата: 2026-07-04. Отвечает на вопрос бэкенда №2 (дефолт редактора для Фазы 1) и решение владельца заменить Anthropic. Скрипт: `eval/editor_bench.py`; сравнение: `eval/build_editor_artifact.py` → артефакт.
## Метод
Пайплайн как в продукте: **DeepSeek делает черновой перевод → редактор-кандидат полирует** его в живую художественную прозу (чек-лист Норы Галь: канцелярит, кальки, синтаксис), сохраняя смысл и все предложения. Каждый редактор получает **оригинал + черновик**.
- Кандидаты (дорогой тир, без Anthropic/OpenAI по решению владельца): **glm-4.6, kimi-k2.6, gemini-3.1-pro-preview, grok-4.3**.
- 4 фрагмента: Расёмон (ja), А-Кью (zh), Беги Мелос (ja), Машина времени (en — владелец судит и стиль, и верность напрямую).
- Для ja/zh — английский эталон смысла (владелец читает en/ru, не ja/zh) как якорь верности.
- **Оценка — человеческая, слепая** (A/B/C/D): худ. качество ru — единственная надёжная метрика человек, LLM-судьи расходятся с людьми (LAIT, research/03). Артефакт: слепые версии, ключ и цена скрыты до вынесения оценки.
## Объективные находки (не зависят от стиля)
Латентность и цена на один абзац (для роли, вызываемой на каждый чанк книги, — решающе):
| Редактор | Латентность | Особенность цены |
|---|---|---|
| **grok-4.3** | ~13 с | без «размышлений» — самый быстрый и дешёвый |
| **glm-4.6** | ~105 с | thinking off (иначе таймаут) |
| **gemini-3.1-pro** | ~6086 с | thinking **не отключить** (обязателен), нужен `max_tokens` ≥16k |
| **kimi-k2.6** | ~150 с | **~11 000 токенов «размышлений» на абзац** — биллятся как выход → самый дорогой |
**Вывод по цене:** Kimi как редактор экономически тяжёлый (11k reasoning-токенов × output-тариф на каждый чанк книги — это сотни тысяч токенов на том). Grok-4.3 — противоположный полюс (быстрый: ~13с на **дефолтном `low`-reasoning**, не многословный думатель как Kimi; в проде редактор шлёт `reasoning_effort:"none"` → 0 reasoning-токенов — см. эксп.08/00-quirks). Если человеческая оценка стиля не покажет явного превосходства Kimi, его цена его дисквалифицирует. Это входит в решение наравне со стилем.
## Провайдерские грабли, найденные по пути
Все — в [00-provider-quirks.md](00-provider-quirks.md): Kimi только `temp=1` + reasoning в `reasoning_content` (нужен бюджет ≥16k); Gemini 3.1 Pro обязательно-думающая; **DeepSeek «эхал» оригинал на zh-фрагменте Лу Синя «祝福»** (82% CJK, воспроизводимо 3/3) → пришлось сменить zh-фрагмент на А-Кью и добавить фолбэк-черновик (GLM) + детектор CJK-эха. Последнее — реальный класс дефекта для черновой стадии бэкенда (тихий отказ = оригинал вместо перевода).
## Оценка (слепая) — выполнена двумя фронтир-судьями
Артефакт: https://claude.ai/code/artifact/25394796-96f0-4f3f-b8d0-de000d415472. Владелец отдал слепую оценку **двум независимым судьям (GPT-фронтир + Opus 4.8)**, которые сверялись не только с английским якорем, но и с **каноническими русскими переводами** (Н. Фельдман — Расёмон, В. Рогов — А-Кью, С. Смоляков/канон — Мелос, К. Морозов — Машина времени) и оригиналами. Оба судьи **сошлись независимо** — высокая уверенность.
**Ключ слепой разметки:** A = grok-4.3, B = glm-4.6, C = gemini-3.1-pro, D = kimi-k2.6.
### Свод (оба судьи согласны)
| Ось | Ранжирование |
|---|---|
| **Стиль** (живость ru, без канцелярита/калек) | **C (gemini) > A (grok) > D (kimi) > B (glm)** |
| **Верность** (без потерь и отсебятины) | **A (grok) > C (gemini) > B (glm) > D (kimi)** |
| **Value** (качество / цена+скорость) | **A (grok) ≫ C (gemini) > B (glm) > D (kimi)** |
Ключевые наблюдения судей:
- **A = grok-4.3 — лучший value с огромным отрывом**: ранг-1 по верности, ранг-2 по стилю, при **самой низкой цене и в разы быстрее** многословных думателей (~13 с на дефолтном `low`; в проде `reasoning_effort:"none"` → 0 reasoning-токенов, ещё дешевле). Оба судьи независимо назвали его лучшим выбором «одной модели на роль».
- **C = gemini-3.1-pro — лучшая проза**: сильнейший художественный русский, эталонно решает культурные узлы (каламбур заглавия 正传 у Лу Синя, глосса к имени А-гуй — и это **не отсебятина**, а ровно приём канонического Рогова). Иногда переусиливает/дописывает. Выбор, когда литературность важнее цены и текст потом вычитывает редактор.
- **B = glm-4.6 — слабейший**: площе всех, кальки, пара опечаток, при этом ~105 с. Плохой value.
- **D = kimi-k2.6 — худший value**: дороже и медленнее всех (~150 с, ~11k reasoning-токенов/абзац), а по верности — последний (чаще всех подменяет детали). Лишние «размышления» точность не купили. Колоритен на Дадзае, но нестабилен.
### Рекомендация дефолта редактора (Фаза 1)
1. **Дефолт: `grok-4.3`** — лучший баланс качество/цена, надёжен по смыслу «из коробки». Закрывает вопрос бэкенда №2.
2. **Премиум-эскалация: `gemini-3.1-pro`** — на дорогих книгах / по сигналу судьи, где нужна максимальная проза и есть человеческая вычитка.
3. **GLM-4.6 — снять с роли дефолтного редактора** (был допущением Р4 «редактор = GLM», эмпирически слабейший). NB: тестировали glm-4.6; при появлении GLM-5 можно перемерить.
4. **Kimi — из кандидатов в редакторы убрать** (цена+скорость+риск верности).
**Следствие для архитектуры (→ оркестратору):** правка Р4 — редактор ru-стиля по умолчанию `grok-4.3`, премиум `gemini-3.1-pro`; GLM/Kimi не дефолт. Нюанс контуров: grok/gemini — Западный/прямых-ключей контур; в ru-BYOK экономика иная, но по качеству+цене grok-4.3 выигрывает и дёшев. Полигон архитектурные доки не редактирует — решение вносит оркестратор.
### Оговорки
- **Короткие фрагменты** (по одному отрывку) — срез, не приговор моделям в целом; полный выбор ядра пайплайна — пилот Фазы 2.5 (задача 4).
- Судьи поймали реальный дефект данных: версия C (Gemini) на «Мелосе» была **обрезана** (бюджет 8k при обязательном thinking) — **исправлено** после оценки (перегенерирована с 16k, артефакт обновлён); вывод по «Мелосу» (лидер A) от этого не меняется.
- «Якорь ≠ эталон»: оба судьи отметили места, где английский якорь сам упрощает оригинал (напр. оттенок «жалостливо усмехнуться» у Дадзая) — подтверждает методическое следствие ниже.
- **⚠ Слепота задним числом сломана (сноска D13.5, 2026-07-09; историю не переписываем).** Оценку вынесли LLM-судьи (GPT-фронтир + Opus), фетчащие артефакт целиком. А в том же артефакте лежали (а) **ключ «метка→модель»** (строка «Ключ слепой разметки» выше) и (б) **цена/латентность** — за `<details>`, что для DOM/markdown-фетча НЕ скрытие; плюс маппинг A/B/C/D был **зафиксирован одинаково на всех 4 фрагментах**. Значит слепота LLM-судейского плеча **структурно нарушена** (07-review §4.5, verified). ⇒ **Выбор `grok-4.3` дефолтным редактором остаётся ПРОВИЗОРНЫМ** — из этого плеча его нельзя считать чисто-слепым результатом. Что страхует выбор независимо от слепоты: **объективные латентность/цена** (grok — самый быстрый/дешёвый; модель-независимые факты, не подверженные предвзятости судьи) и **руки пилота Ф2.5** — мономодельный бейк-офф редактора (exp09 §7-bis, реальная моно-задача без исходника) + арм «моно-vs-билингв на одной модели» (D13.1). Инструмент починен: `build_editor_artifact.py` теперь рандомизирует метки ПО ФРАГМЕНТУ (соль в ключ-файле) и пишет ключ+цену в ОТДЕЛЬНЫЙ (непубликуемый до оценки) файл `--key` — будущие оценки слепы структурно.
## Методическое следствие (важно для пилота, задача 4)
Владелец читает только **en и ru**. Прямая человеческая оценка **верности** доступна лишь на en→ru и на русской стороне; для zh/ja→ru нужен английский эталон-якорь (или метрики+глоссарий). Заложить в протокол пилота: не строить человеческую оценку верности на языках, которых судья не читает.