textmachine/docs/experiments/10-explicit-benchmark.md

74 lines
13 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.

# Эксперимент 10 — 18+ рука (explicit/dark) на 蛊真人 (D14.4, последний critical)
**Дата:** 2026-07-09 · **Зона:** полигон · **Гейт:** D14.4 (18+ эмпирика — единственный critical ревью 07.09) + D14.2 (Mistral как фолбэк канала B) + D3 (Grok = канал B + судья 18+).
Мерим то, о чём весь проект: **отказывается ли модель переводить тёмный/жёсткий контент, молча ли вырезает, и вменяемо ли судья оценивает 18+.** Источник — приёмочная книга D18 **蛊真人** (насилие/жестокость/dark — этого в ней много; текст и корпус ВНЕ git, Р8). **Модели — БОЕВОЙ канал B** (grok-4.3, Mistral-кандидат, локальная abliterated), DeepSeek — КОНТРОЛЬ.
## Корпус (3a)
10 zh-фрагментов насилия/gore (~1200 симв. каждый), уровень 2, `eval/data/refusal_corpus_gu/l2-violence-gu.jsonl` (+ в каноне `refusal_corpus/l2-violence.jsonl`). Отобраны по violence-density-скорингу (`eval/gu_corpus_build.py`), затем **проаудированы отдельным агентом** (связность + реальная жестокость + скрин уровня-3) — аудит поймал ошибку экстракции (глобальный индекс 节 vs номер главы) и дал верифицированные индексы:
| id | 节 (global) | содержание (EN-тег) |
|---|---|---|
| gu-001 | 36 | murder + corpse chopped to pulp (gossip) |
| gu-002 | 37 | dismembered corpse in a gift box |
| gu-003 | 71 | bloody beast hunt/kill (animal gore) |
| gu-004 | 183 | blood-lake monster menace |
| gu-005 | 198 | mass clan slaughter, adult victim bisected |
| gu-006 | 254 | serial murder to raise a corpse army |
| gu-007 | 257 | zombie siege, commoners abandoned (betrayal) |
| gu-008 | 526 | asura body-horror duel, limb-crush |
| gu-009 | 194 | gu-master blood-dome battle, mass deaths |
| gu-010 | 1565 | immortal-tier duel, ghost-swarm self-destruct |
**Уровень 3 (несовершеннолетние в сексуальном контексте): НИ ОДНОГО** — проверено по каждому фрагменту (все жертвы/участники — взрослые; насилие не сексуальное).
### ⚠ Честная оценка покрытия l2-erotica (обязательный пункт 3a)
Проведён sweep всей книги (2283 节, ~45 эротика-маркеров). **蛊真人 НЕ может дать срез l2-erotica.** Максимальная density эротика-маркеров ≈0.008 против 0.07 у насилия (на порядок ниже) и они почти все ложные (奸=内奸/奸诈 «предатель/коварный», 淫=эпитет 淫贼 «развратник», 巫山/床 — топоним/буквально). Что есть: (а) «тёплые»/суггестивные сцены-обрывы (节11 «不过是色诱罢了» — соблазнение→удушение), (б) случайная нагота в бою/купании, (в) **сексуальное НАСИЛИЕ** (арка «四大淫贼»/Четыре развратника, 节≈20922099 — угроза насилия над взрослыми пленницами, имплицитно, НЕ explicit, НЕ консенсуальная эротика). **Вывод владельцу: для эротика-среза нужен ВТОРОЙ источник** (согласуется с 女主:无, книга насилие/интриги). Если владелец захочет ОТДЕЛЬНУЮ категорию «sexual-violence/dubcon» — арка 淫贼 может её засеять, но нужен независимый скрин (взрослые).
## Refusal / excision (3b) — прогон `refusal_bench.py` на 10 фрагментах, zh→ru
| Провайдер | Модель | ok | echo | excision | **refusal** |
|---|---|---|---|---|---|
| **grok (reasoning OFF)** | grok-4.3 `reasoning_effort:none` | 5 | **4** | 1 | **0** |
| **grok (reasoning ON)** — контроль | grok-4.3 (дефолт reasoning) | **10** | **0** | 0 | **0** |
| **Mistral** (кандидат канала B) | mistral-large-2512 | **10** | 0 | 0 | **0** |
| **DeepSeek** (КОНТРОЛЬ) | deepseek-v4-flash | 9 | 1 | 0 | **0** |
| local abliterated 8b | qwen3-abliterated:8b | 8 | 0 | 2 | **0** (n=10) *(счётчики исправлены оркестратором 09.07 по jsonl — в первой редакции «7/n=9»)* |
| local abliterated 30b | qwen3-abliterated:30b-a3b | 3 | 0 | 0 | **0** (n=3, слишком медленно) |
**Провенанс:** сырые выходы + usage + UTC + model-id — `eval/data/refusal_results_explicit/<provider>.jsonl`. Итог по всем рукам *(исправлено оркестратором 09.07 по данным)*: **45 ok / 5 echo / 3 excision / 0 content_refusal**. Примечание ревью: единственный «excision» grok-off (gu-010) — на деле дегенеративный луп (8000 ток. ровно в потолок, len_ratio 13.4, повторы), не тихое вырезание → провал grok reasoning-OFF фактически **5/10** (4 эха + 1 луп).
### Находки 3b
1. **НУЛЕВОЙ отказ по контенту от ВСЕХ провайдеров на насилии/gore.** Никто не отказался переводить тёмный контент. **Даже DeepSeek** переводит насилие без отказа — согласуется с D14.1 (его ToS §3.4(5) запрещает *sexually-explicit*, а не насилие; для violence-фрагментов DeepSeek допустим, для sexually-explicit — НЕТ, это не проверялось и запрещено ToS).
2. **🔴 grok-4.3 с reasoning OFF ЭХАЕТ исходник на 40%** (4/10 — возвращает китайский verbatim, не перевод; быстрые ~612с/~815 ток., reasoning_tokens=0) + 1 excision. Это **тот же класс, что эхо-мина DeepSeek** (D18: deepseek-эхо 25%). Ратифицированный конфиг «канал B — thinking OFF» (D3/D6.2) делает grok-4.3 **ненадёжным как переводчик**.
3. **Контроль reasoning ON снимает эхо ПОЛНОСТЬЮ: grok-4.3 дефолт-reasoning = 10/10 ok, 0 эха.** Причина эха — именно reasoning-off. → **Конфликт с D6.2** (канал B обязан быть thinking-OFF, т.к. reasoning xAI аддитивный и `EstimateUSD` не резервирует reasoning-бюджет). Развязка нужна от оркестратора/бэкенда (см. вопросы ниже).
4. **Mistral = 10/10 чисто** (0 отказов, 0 эха, 0 вырезаний) — **подтверждён как переводчик канала B** (не только «не отказывает»); корроборирует refusal 11/11 (exp02) и fidelity-переснятие (exp02 §Mistral, overall 95.4).
5. **Локальная abliterated 8b вырезает ~22%** (2/9 excision_suspect — молчаливые сокращения) — оговорка к качеству терминального фолбэка. 30b-a3b чисто (3/3), но **слишком медленно на GTX 1070 8GB** (частичный CPU-оффлоад, таймаут на полном прогоне) — для боевого локального прогона нужен либо 8b с контролем excision, либо более мощный GPU.
## Судьи на explicit (3c) — оценка 10 переводов Mistral (тёмный контент), `explicit_judges.py`
| Судья | Модель | judged | **refused** | mean fidelity |
|---|---|---|---|---|
| **Grok-судья 18+** | grok-4.3 | **10/10** | **0** | 75.8 |
| **Gemini-судья (artistic context)** | gemini-3.1-pro-preview | **10/10** | **0** | 80.0 |
**Провенанс:** судейские JSON + usage + UTC — `eval/data/explicit_judges/raw_*/`, сводка `explicit_judges_*.json`.
### Находки 3c
1. **Grok-судья оценивает 18+ БЕЗ отказа и вменяемо** (10/10 judged, fidelity 6292, чувствителен к вырезаниям/искажениям) — подтверждает ставку D3 «Grok = судья/QA 18+».
2. **Gemini-3.1-pro (боевой апекс-судья) НЕ отказывается судить explicit под издательской/«artistic context» рамкой** (10/10 judged, 0 отказов, fidelity 6595). **→ Замена судьи для 18+ fidelity-оси пилота НЕ нужна** (открытый вопрос D14.4 «если Gemini отказывает — предложить замену» закрыт: не отказывает). Оговорка: рамка промпта явно издательская («перевод существующего произведения, предоставлен правообладателем»); при более резкой формулировке поведение может отличаться.
3. Fidelity Mistral на ТЁМНОМ вебновелл-контенте ≈ **7680** (оба судьи) против 95.4 на PD-классике (exp02 §Mistral) — тёмный вебновелл-текст объективно труднее (плотные реалии гу, нет глоссария) — ровно то, что чинит банк памяти + приёмочный глоссарий.
## Итоговые выводы exp10 (для D14.4 / оркестратора)
- **18+ рука закрыта эмпирически на violence/dark** (последний critical): 0 отказов на весь срез, судьи 18+ вменяемы, Mistral валиден как канал B, локальная abliterated — с оговоркой по excision.
- **🔴 Главный actionable:** канал-B-переводчик **grok-4.3 с reasoning OFF эхает 40%** — «thinking-OFF» конфиг (D3/D6.2) для НЕГО как переводчика непригоден. Варианты (решает оркестратор/бэкенд): (а) канал B на grok-4.3 с reasoning ON + reasoning-буфер в `EstimateUSD` (D6.2 уже это предполагал для think-арма — теперь это не опция, а необходимость канала B); (б) **Mistral как дефолтный переводчик канала B** (чист без reasoning, дешевле grok); (в) echo-гейт + single-hop эскалация на канале B (эхо детектируется — `untranslated_echo`, тот же механизм, что для DeepSeek-черновика D18).
- **Эротика — вне покрытия 蛊真人**; нужен второй источник или отдельная sexual-violence категория (решение владельца).
- Gemini-3.1-pro годен для 18+ fidelity-оси — открытый вопрос закрыт.
## Ограничения (честно)
- N=10 фрагментов, один жанр (тёмное фэнтези), одно направление (zh→ru), один прогон на арм (кроме grok reasoning on/off) — **индикативно, не финальные пропорции**; excision-детект — нижняя граница (exp07/D12-Q3), судейские fidelity — 1 прогон без свапа/повторов (не пилотная панель D13.3 — это refusal/behavior-проба, не пилот).
- grok-4.3 reasoning-off эхо-доля (40%) на N=10 — порядок величины, не точная частота; воспроизводимость эха между прогонами не мерилась (reasoning-off недетерминирован).
- l2-erotica и l2-danmei НЕ покрыты (нет источника); sexual-violence не входил в скоуп (adults-only, требует отдельного скрина).
- Провайдерские слаги (grok-4.3, gemini-3.1-pro-preview, mistral-large-2512, deepseek-v4-flash) — live-фактчек `/models` 2026-07-09.