textmachine/backend/configs/models.yaml

332 lines
30 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.

# Модели и цены TextMachine (Р4/Р5: состав и цены — ТОЛЬКО здесь, с датой
# проверки; код не знает ни одной цены).
#
# ⚠ ПЕРЕ-ПИН DeepSeek 2026-08-15 (вендор-сессия, строка 172 / D39.136). Вендор ввёл
# TIME-BASED прайсинг, наша схема цены ПЛОСКАЯ и его НЕ выражает → пишем ПИКОВЫЕ цены:
# потолок срабатывает раньше, а не позже; переплата резерва в офф-пик — осознанная цена
# простоты. Сноска (1) прайс-страницы, дословно (факт-чек 2026-08-15):
# «DeepSeek API pricing will be updated to peak / off-peak billing, with off-peak rates at
# half the peak rates. Peak hours are 01:00 - 04:00 and 06:00 - 10:00 UTC (all other hours
# are off-peak). The new prices take effect at 16:00 UTC on August 16, 2026»
# https://api-docs.deepseek.com/quick_start/pricing (таблица там же) · анонс 13.08
# https://api-docs.deepseek.com/news/news260813 + вендор-картинка /img/v4_260813_price_en.png
# ПИК за 1M (в таблицу ниже): flash $0.44 in / $1.32 out / cache-hit $0.014 · pro $1.32 / $3.96 / $0.044
# ОФФ-ПИК ровно ½ (НЕ пишем): flash $0.22 / $0.66 / $0.007 · pro $0.66 / $1.98 / $0.022
# Цены ЗАПИСИ в кэш у вендора нет ни на прайс-странице, ни в guides/kv_cache → cache_write_per_m: 0.
# ⚠ prices_checked бампнут по факт-чеку ТОЛЬКО DeepSeek — у остальных строк проверка
# 2026-07-10 (ниже), и их 120-дневный счётчик свежести уехал вместе с общим полем (пинг сдан).
#
# Источники проверки 2026-07-10 (D3-цепочка/канал B заведены пакетом №3; каждый
# слаг live-фактчекнут — /models И пробный вызов, правило двух направлений):
# DeepSeek ↑ СУПЕРСИДНУТО пере-пином 2026-08-15 (было v4-pro $0.435/$0.87, cache-hit $0.003625)
# Z.AI/GLM https://docs.z.ai/guides/overview/pricing (glm-5.1 $1.4/$4.4, cached $0.26)
# Kimi https://platform.kimi.ai/docs/pricing/chat-k26
# xAI https://docs.x.ai/docs/models (Grok 4.1 Fast retired 15.05.2026!)
# Gemini https://ai.google.dev/gemini-api/docs/pricing (3.1-pro-preview $2/$12 ≤200k, cache $0.20, output incl. thinking)
# Mistral https://mistral.ai/pricing/api (Large 3 = mistral-large-2512 $0.5/$1.5; FAQ "$2/$6" = legacy Large 2)
# OpenAI https://developers.openai.com/api/docs/models/gpt-5-mini (gpt-5-mini $0.25/$2.0, cached $0.025)
# Live-факты пакета №3 (2026-07-10, все HTTP 200 пробным вызовом, кроме отмеченного):
# • gemini-3.1-pro → 404 NOT_FOUND; callable слаг ТОЛЬКО gemini-3.1-pro-preview (D3-текст назвать -preview — пинг).
# • Gemini thinking-токены НЕ в completion_tokens (проба: completion=2, total=847 → 823 thinking в total_tokens,
# поля reasoning_tokens нет) → провайдер gemini reasoning:additive_total (адаптер деривит reasoning=totalpromptcompletion,
# иначе mistral-класс слепоты потолка на mandatory-thinking апексе).
# • gpt-5-mini жив пробой (→ dated gpt-5-mini-2025-08-07), но снят с прайс-страницы (там gpt-5.4/5.5/5.6); кандидат D3, не в цепочке Ф1.
prices_checked: "2026-08-15"
# Fallback-якорь цены: неизвестная модель (например, фактическая модель после
# фейловера, которой нет в таблице) книжится по этой цене, никогда по $0.
default_model: deepseek-v4-flash
providers:
deepseek:
kind: openai
base_url: https://api.deepseek.com/v1
api_key_env: DEEPSEEK_API_KEY
reasoning: subset # thinking внутри completion_tokens
# ⚠️ ЭХО-МИНА (трасса 2026-07-04, PROGRESS «Ответ Полигону»): на плотном CJK
# DeepSeek с thinking ВЫКЛ воспроизводимо возвращает ИСХОДНИК вместо перевода
# (тихий отказ, HTTP 200). Держится только тем, что reasoning:"off" через
# ReasoningNone — осознанный no-op (thinking остаётся ON по дефолту). Флаг
# включает fail-fast (config.echoMineViolation): нельзя завести deepseek
# capabilities.reasoning.off_extra_body:{thinking:{type:disabled}} — включит
# эхо в проде. ⚠️ ПОПРАВКА пака-17: оговорка «GLM с thinking:disabled безопасен (вход — русский
# черновик)» УСТАРЕЛА против D30.1 — редактор БИЛИНГВ, видит плотный CJK. Гейт echoMineViolation
# по-прежнему не стреляет по zai (флаг стоит только здесь), но экспозиция НЕ измерена: загрузка
# предупреждает громко (runner.sourceEchoExposure), ловит гейт эха (D19.2). Обобщение D19.1 п.2 на
# xai в ДАННЫЕ не вносил осознанно — это сняло бы grok-off-выключатель, чья цена (grok думает по
# дефолту, additive) — решение владельца, а не сессии.
echoes_when_thinking_off: true
timeouts: { attempt_s: 240, max_attempts: 3, backoff_cap_s: 60 }
zai: # GLM, международный контур (docs.z.ai)
kind: openai
base_url: https://api.z.ai/api/paas/v4
api_key_env: ZAI_API_KEY
reasoning: subset
timeouts: { attempt_s: 240, max_attempts: 3, backoff_cap_s: 60 }
kimi: # API-хост — api.moonshot.ai (intl, НЕ .cn). Веб-консоль переехала
# platform.moonshot.ai → platform.kimi.ai, но API-эндпоинт остаётся
# api.moonshot.ai: api.kimi.ai НЕ резолвится (DNS fail, live-проба 2026-07-04
# /models: 000; moonshot.ai → 200 c kimi-k2.6). Прежний base_url был битый.
kind: openai
base_url: https://api.moonshot.ai/v1
api_key_env: KIMI_API_KEY
reasoning: subset
timeouts: { attempt_s: 240, max_attempts: 3, backoff_cap_s: 60 }
xai: # Grok — главный тир канала B (18+) + судья 18+; из редакторских ролей СНЯТ (D30.1 — reasoning-off no-op).
# ⚠️ КЛЮЧЕВАЯ ПОЛИТИКА (D27, супрсидит «чистый ключ» D19.4/D20.3): ЕДИНЫЙ XAI_API_KEY С data-sharing
# (промо) идёт на ВСЕ тесты И пилот И прод; data-sharing ОТКЛЮЧАЕТСЯ перед релизом (сверить механику
# с вендор-докой — чек-лист первого боевого прогона). Риски приняты владельцем (копирайт 蛊真人 в обучение —
# только свои тесты, для клиентских книг НИКОГДА; NSFW-история аккаунта). По ключу не проверяется.
kind: openai
base_url: https://api.x.ai/v1
api_key_env: XAI_API_KEY
reasoning: additive # xAI биллит reasoning ПОВЕРХ completion (проверено vojo); think-ON заблокирован до резерва в EstimateUSD (D6.2/F3)
# СПОСОБНОСТЬ ПО КОНТЕНТУ (D39.25/D39.26). Флаг `permissive: true` ОТСТАВЛЕН (падает громко):
# вместо булева «можно 18+» endpoint объявляет, КАКИЕ лейблы ему разрешено ПОЛУЧАТЬ, и книга
# маршрутизируется только в модели, чей набор её лейблы покрывает. Значения — ДАННЫЕ; движок не
# знает ни одного. ВОКАБУЛЯР РЕШЁН владельцем (D39.27): ПАРА `violence` / `sexually-explicit` —
# она сохраняет ратифицированную развязку D14 п.1 (ToS DeepSeek запрещает sexually explicit, но
# violence оставляет допустимым), то есть violence-книга не теряет dspro-редактора.
# ФАКТЫ ДОБЫТЫ полигоном по первоисточникам и ПОДПИСАНЫ владельцем 25.07 (D39.29/D39.30);
# цитаты — `experiments/00-provider-quirks.md` §«Право по ToS/AUP», вердикты даны ПЕР-ЛЕЙБЛУ.
# xAI AUP (Effective 2026-06-26) + Enterprise ToS (Last Updated 2026-05-12): в сексуальной семье
# названы только реальные лица (undressing/nudifying, порнографические подобия) и дети — взрослая
# художественная эротика НЕ названа ⇒ право есть. `violence` НЕ выдан: слов violen* в AUP 0 вхождений
# (чистое молчание, а молчание права не даёт). Пере-проверка: 2026-10-25 и перед первой explicit-книгой.
accepts_labels: [sexually-explicit]
# Эмпирика этого endpoint: главный пермиссив-тир канала B + reasoning-ON эскалация (D3/D19.1),
# первичный судья эротики (D22.6).
timeouts: { attempt_s: 240, max_attempts: 3, backoff_cap_s: 60 }
# Anthropic убран из стека по решению владельца (04.07): дорого, в RU-контуре
# экономически недоступен (Р5), в eval не валидирован. Судья Р4 — Gemini
# (нативный адаптер, Фаза 2). Нативный Anthropic-адаптер в коде помечен
# DEPRECATED, но НЕ удалён — оставлен как референс нативного адаптера под
# Gemini Фазы 2 (см. provider_anthropic.go). Эскалация — не-Anthropic (Kimi/GLM).
gemini: # Google Gemini через OpenAI-совместимый слой (base .../v1beta/openai). Апекс канала A +
# судья violence/SFW Ф2 + премиум-эскалация редактора ЗА санитайзером (D30.1/30.3 — течёт преамбулой 6/6).
# ⚠️ Как судья 18+ ЭРОТИКИ НЕПРИГОДЕН (D22.6/exp11: 8× PROHIBITED_CONTENT, фильтр неконфигурируем — native
# НЕ спасает; первичный судья эротики = Grok). На violence/SFW Gemini-судья остаётся. OpenAI-слой достаточен
# для перевода/эскалации (фильтры OFF по дефолту у 3.x, кроме неконфигурируемого PROHIBITED_CONTENT — D21.9).
kind: openai
base_url: https://generativelanguage.googleapis.com/v1beta/openai
api_key_env: GEMINI_API_KEY
# reasoning:additive_total — thinking у Gemini биллится как output, но в OpenAI-слое НЕ попадает в
# completion_tokens и НЕ отдаётся полем reasoning_tokens (в отличие от xAI); виден ТОЛЬКО как
# total_tokenspromptcompletion (live-проба 2026-07-10: completion=2, total=847 → 823 thinking).
# Адаптер деривит их из total и биллит по output — иначе mandatory-thinking апекс слепил бы потолок.
reasoning: additive_total
# ⚠️ ОДНО системное сообщение на запрос. Конвейер строит ДВА (базовый промпт + инъекция банка
# памяти, render.go MessagesWithInjection), и этот слой второе не проносит: инъекция —
# глоссарий — пропадала БЕЗ ошибки, ответ приходил 200 и выглядел правильным переводом.
# ВЕНДОР-ОСНОВАНИЕ (ai.google.dev/api/generate-content, страница помечена 2026-08-17, снято
# 2026-08-28): в нативном GenerateContentRequest поле `systemInstruction` — ОДИН
# `object (Content)` (в той же таблице `contents[]` и `tools[]` несут суффикс повторяемого
# поля `[]`), а `Content.role` документирован как «Must be either 'user' or 'model'» ⇒ второму
# системному ходу в нативном запросе места нет вовсе. Что делает с ним OpenAI-совместимый
# шим, вендор НЕ документирует нигде (раздел «Current limitations» молчит и в живой странице,
# и в снимке 2026-08-21). Наша проба ($0, полигон 22.08) устанавливает, что они НЕ
# склеиваются и что инструкция ПЕРВОГО не исполняется; выживает ли второй — открыто и для
# решения безразлично: при любом чтении, кроме «склеиваются», два системных теряют текст.
# Поэтому склеиваем сами — это единственная форма, которая потерять не может.
capabilities:
system_messages: single
timeouts: { attempt_s: 300, max_attempts: 3, backoff_cap_s: 60 } # апекс думает дольше
openai: # OpenAI прямой ключ (D3: Anthropic убран, OpenAI ОСТАЁТСЯ). gpt-5-nano альт-черновик,
# gpt-5-mini кандидат-редактор/second-opinion судья — НЕ в дефолтной цепочке Ф1 (слот под Ф2).
kind: openai
base_url: https://api.openai.com/v1
api_key_env: OPENAI_API_KEY
reasoning: subset # gpt-5: reasoning_tokens ⊆ completion (OpenAI-спека), покрыто maxTokens
timeouts: { attempt_s: 240, max_attempts: 3, backoff_cap_s: 60 }
mistral: # Mistral La Plateforme (base api.mistral.ai/v1). Переводчик-дефолт канала B (D19.1):
# 10/10 чисто на violence, policy 11.06.2026 без запрета adult, НЕ reasoning-модель → эхо-мины нет.
kind: openai
base_url: https://api.mistral.ai/v1
api_key_env: MISTRAL_API_KEY
reasoning: subset # mistral-large — не thinking-модель; reasoning-токенов нет
# ФАКТЫ ДОБЫТЫ и ПОДПИСАНЫ 25.07 (D39.29/D39.30; цитаты — `experiments/00-provider-quirks.md`).
# Mistral Usage Policy (Effective 2026-06-11, хост `legal.mistral.ai`): названы CSAM, NCII
# («intimate images … without the explicit consent»), sexual services — взрослая художественная
# эротика НЕ названа ⇒ право есть. `violence` НЕ выдан: §«Violence and threats» регулирует
# «promotes, incites, threatens, or glorifies» — пропаганду, а не изображение (D39.30 п.1).
# Эмпирика: переводчик-дефолт канала B (D19 п.1, 10/10 чисто на violence). Пере-проверка 2026-10-25.
accepts_labels: [sexually-explicit]
timeouts: { attempt_s: 240, max_attempts: 3, backoff_cap_s: 60 }
local: # ollama/llama-server на стенде (боевой env — memory textmachine-local-stand)
kind: local
base_url: http://127.0.0.1:11434/v1
model: huihui_ai/qwen3-abliterated:8b
max_tokens: 8192 # у ollama лимит покрывает thinking+ответ вместе
# РЕШЕНИЕ ВЛАДЕЛЬЦА 25.07 (D39.32): к локальному инференсу вендорских контентных политик НЕ
# применяется — наружу ничего не уходит (стенд), веса Apache-2.0 без контентных ограничений,
# Ollama ToS §4 признан неприменимым к локальному `ollama serve`. Переводим всё.
# `violence` сегодня инертен (лейбл книгам не назначается, D39.30 п.1) — стоит для полноты.
accepts_labels: [violence, sexually-explicit]
# Эмпирика: abliterated-скрининг / дешёвый фолбэк канала B (D3/D19.1, 8/10 ok) — не несущий редактор.
timeouts: { attempt_s: 600, max_attempts: 2, backoff_cap_s: 10 } # полигон: чанки 63278 с
models:
deepseek-v4-flash:
provider: deepseek
# ПИК с 16.08.2026 16:00 UTC (пере-пин 15.08, шапка): $0.44 in / $1.32 out / cache-hit $0.014 за 1M.
# Было $0.14 / $0.28 / $0.0028 — рост ×3.1 / ×4.7 / ×5. Офф-пик ровно ½ — плоская схема его не
# несёт, держим пик (D39.136). Слаг тот же, версия весов вендора DeepSeek-V4-Flash-0731.
price: { input_per_m: 0.44, cached_per_m: 0.014, cache_write_per_m: 0, output_per_m: 1.32 }
capabilities:
# Floor per quirks (thinking ⊆ completion, subset): <8000 → reasoning eats the
# budget, content пуст, finish=length (НЕ отказ). Schema, not a comment (D24.3).
min_max_tokens: 8000
note: >-
Черновик (Р4). Автокэш по префиксу, отдельной цены записи нет.
deepseek-chat/reasoner отключаются 24.07.2026 — сюда не возвращаться.
deepseek-v4-pro:
provider: deepseek
# ПИК с 16.08.2026 16:00 UTC (пере-пин 15.08, шапка): $1.32 in / $3.96 out / cache-hit $0.044 за 1M.
# Было $0.435 / $0.87 / $0.003625 — рост ×3.0 / ×4.6 / ×12.1 (кэш-хит дороже всех: эскалация с
# горячим префиксом перестала быть почти бесплатной). Офф-пик ровно ½, плоская схема его не несёт.
# ⚠ Слаг тот же, но ВЕСА новые: вендор объявил MODEL VERSION DeepSeek-V4-Pro-0813 («Model names
# remain unchanged», news260813) — класс D39.61, поведение не сверялось (пинг сдан).
price: { input_per_m: 1.32, cached_per_m: 0.044, cache_write_per_m: 0, output_per_m: 3.96 }
capabilities:
# Floor (D24.3): без него хоп наследовал бюджет праймари (2048/3291 на приёмке этапа A)
# и вернул finish=length / 0 байт контента — эскалация впустую.
#
# 8000 → 16000 ПО ЗАМЕРУ мини-прогона 25.07 (10 глав, 14 edit-единиц): две единицы вернули
# finish=length на 8000 и прошли на ретрае с 16000 — **$0.0177, то есть 15.5% всего счёта
# прогона, ушло в две выброшенные генерации**. Размер текста тут ни при чём: единица с
# черновиком 8189 символов в 8000 УЛОЖИЛАСЬ, а с 6380 — нет; разница в длине РАЗМЫШЛЕНИЯ,
# которое у DeepSeek (reasoning: subset) считается ВНУТРИ completion_tokens и потому ест тот
# же бюджет, что и текст. Оценочный множитель max_output_ratio этого не знает и знать не
# может — на редакторской единице он всё равно даёт меньше флора.
#
# Асимметрия цены и решает: перебор бюджета БЕСПЛАТЕН (резервация транзитна, списание идёт по
# фактическому usage), недобор стоит ЦЕЛОЙ генерации. Поэтому флор ставится с запасом, а не
# впритык: 16000 против измеренных 10951 максимум.
# ⚠ Двигает max_tokens ⇒ request_hash ⇒ снапшот: правка = громкий --resnapshot.
min_max_tokens: 16000
note: >-
Эскалация черновика канала A, хоп 1 (D3): deepseek-эхо 25% на приёмочной 蛊真人 (D18) → single-hop
фолбэк с draft. Наследует deepseek: thinking ON (эхо-мина того же класса — echoes_when_thinking_off),
reasoning ⊆ completion (subset). Живьём 2026-07-10: /models ✓, chat 200 (reasoning_content, перевёл).
glm-5:
provider: zai
price: { input_per_m: 1.0, cached_per_m: 0.2, cache_write_per_m: 0, output_per_m: 3.2 }
# thinking-выключатель переехал из extra_body в capabilities.reasoning (D3.1):
# тело запроса байт-в-байт то же ({thinking:{type:disabled}} при reasoning=off),
# но теперь это единая wire-форма — и off_extra_body разблокирует think-ON
# эскалацию (D6.2) без второй ручки. Смена снапшота осознанная (--resnapshot).
capabilities:
reasoning:
control: extra_body_disable
off_extra_body: { thinking: { type: disabled } } # эмпирика полигона: thinking GLM — таймауты ×3
note: Редактор ru-стиля (Р4). Флагманы линейки уже GLM-5.1/5.2 ($1.4/$4.4) — пересмотреть к Фазе 2.
glm-5.1:
provider: zai
# $1.4/$4.4, cached $0.26 (факт. 2026-07-10, docs.z.ai/guides/overview/pricing).
price: { input_per_m: 1.4, cached_per_m: 0.26, cache_write_per_m: 0, output_per_m: 4.4 }
capabilities:
reasoning:
control: extra_body_disable
off_extra_body: { thinking: { type: disabled } } # как glm-5: thinking GLM — таймауты ×3 (полигон)
note: >-
Эскалация канала A, хоп 2 (D3), кросс-семейный к deepseek-хопу 1. Живьём 2026-07-10: /models ✓
(glm-4.5..5.2 листятся), chat 200 (thinking:disabled → reasoning_tokens=0). Флагман линейки vs glm-5.
kimi-k2.6:
provider: kimi
price: { input_per_m: 0.95, cached_per_m: 0.16, cache_write_per_m: 0, output_per_m: 4.0 }
# Альт-редактор (bake-off эксп-04, проиграл grok-4.3): принимает ТОЛЬКО temperature:1
# (иначе 400), ~11k reasoning tok/абзац. capabilities фиксируют квирк, чтобы edit-стадия
# на temp 0.4 не 400-ла; min_max_tokens закрепляет min-бюджет схемой (был комментарий).
capabilities:
temperature: { mode: force, value: 1 }
# Floor 16000 (D24.3): <16000 → reasoning съедает лимит, content пустой, finish=length.
min_max_tokens: 16000
note: Альтернативный редактор (Р4).
grok-4.3:
provider: xai
# $1.25/$2.50/1M (факт. 2026-07-04, docs.x.ai). cached_per_m=input: кэш-цену xAI
# не верифицировали, а для редактора (черновик — свежий вход на чанк) cache-hit≈0,
# поэтому консервативно не моделируем скидку — потолок не слепнет. Уточнит полигон.
price: { input_per_m: 1.25, cached_per_m: 1.25, cache_write_per_m: 0, output_per_m: 2.50 }
# Дефолт-редактор (bake-off эксп-04): temperature шлём; reasoning OFF даётся ТОЛЬКО явным
# reasoning_effort:"none" (control:effort + off_effort:none). Дефолт grok = low → омиссия
# заставляет думать: проба eval 05.07 (Chat Completions) — omission→444 reasoning-ток., "none"→0.
# control:none (off-by-omission) молча оставил бы low; control:effort/off_effort шлёт явный none.
capabilities:
temperature: { mode: send }
reasoning: { control: effort, off_effort: none }
note: >-
Главный пермиссив-тир канала B + судья 18+ ЭРОТИКИ (первичный для НЕ-grok переводов — D22.6: Gemini
fail-closed на графичной эротике, native не спасает). Из редакторов СНЯТ (D30.1 — reasoning-off no-op;
editor теперь glm-5-билингв). reasoning additive: think-ON только после резерва в EstimateUSD (D6.2/техдолг F3).
Ключ — единый с data-sharing, off перед продом (D27).
gemini-3.1-pro-preview: # ⚠️ слаг ИМЕННО -preview: gemini-3.1-pro → HTTP 404 NOT_FOUND (live 2026-07-10)
provider: gemini
# $2/$12 за 1M ≤200k (факт. 2026-07-10, ai.google.dev/gemini-api/docs/pricing; >200k тир $4/$18 —
# не моделируем, чанки книги ≤200k). Output ВКЛЮЧАЕТ thinking-токены (reasoning-as-output, D3.2/D6.3).
price: { input_per_m: 2.0, cached_per_m: 0.20, cache_write_per_m: 0, output_per_m: 12.0 }
capabilities:
# mandatory: thinking обязателен (thinking_budget:0 → HTTP 400, D6.3); адаптер молча глотает
# reasoning:"off", forced thinking биллится как output. Учёт токенов — provider gemini reasoning:additive_total.
reasoning: { control: mandatory }
# Floor 8000 (D24.3): mandatory-thinking съедает бюджет; <8000 → перевод обрезан.
# Раньше «дать max_tokens ≥8000» — комментарий; теперь схема (thinking ⊆ бюджета, additive_total).
min_max_tokens: 8000
note: >-
Апекс канала A / судья violence/SFW Ф2 / премиум-эскалация редактора за санитайзером (D30.1). min_max_tokens 8000
держит thinking внутри бюджета (резерв не слепнет; settle биллит thinking через additive_total). Как судья ЭРОТИКИ
непригоден (D22.6: PROHIBITED_CONTENT неконфигурируем, native не спасает — первичный судья эротики Grok). Живьём 2026-07-10: chat 200.
mistral-large-2512:
provider: mistral
# $0.5/$1.5 за 1M (факт. 2026-07-10, mistral.ai/pricing/api — Mistral Large 3, релиз дек.2025, Apache 2.0,
# 262K). ⚠️ Маркетинг-FAQ mistral.ai/pricing даёт generic "$2/$6" = legacy Large 2; per-model /pricing/api
# = $0.5/$1.5 (OpenRouter согласен) → разрешает D19-подозрение ($0.5/$1.5 при $2/$6 = 4×). cached=input
# консервативно (cache-read не моделируем; канал B — свежий вход/чанк, hit≈0, потолок не слепнет).
price: { input_per_m: 0.5, cached_per_m: 0.5, cache_write_per_m: 0, output_per_m: 1.5 }
# WS1 §1б / WS6 gate №4: mistral-large — агрессивный rate-limiter (~48% retry-fails под N-∥ @1.3s;
# токен-бакет/конкуренц-кап, тир-зависим — 00-provider-quirks §Транспорт). Пер-модельный семафор
# конкуренции волнового раннера ограничивает одновременные вызовы (транспорт-ось, НЕ снапшот).
# Значение — консервативный старт; пере-замерить на прод-тире (правило двух направлений). Свап-арм
# редактора mistral НЕ идёт через прод-путь без этого guard (ревью-2 F4).
rate_limit: { max_concurrency: 2, min_interval_ms: 0 }
note: >-
Переводчик-дефолт канала B (D19.1): 10/10 чисто на violence, policy 11.06.2026 без запрета adult, не
reasoning-модель (эхо-мины нет). Свап-арм редактора (WS6, за rate-guard). Полный wiring канала B — Ф2.
Полигон перепроверяет цену (D19.5б). Живьём 2026-07-10: /models ✓, chat 200.
gpt-5-mini: # кандидат-редактор/second-opinion судья (D3) — НЕ в дефолтной цепочке Ф1
provider: openai
# $0.25/$2.0, cached $0.025 (факт. 2026-07-10, developers.openai.com/api/docs/models/gpt-5-mini). Слаг жив
# (chat 200 → dated gpt-5-mini-2025-08-07), но снят с текущей прайс-страницы (там gpt-5.4/5.5/5.6) — пересмотр к Ф2.
price: { input_per_m: 0.25, cached_per_m: 0.025, cache_write_per_m: 0, output_per_m: 2.0 }
capabilities:
budget_field: max_completion_tokens # gpt-5: max_tokens → HTTP 400
temperature: { mode: omit } # gpt-5: temperature не принимается → HTTP 400
reasoning: { control: effort, off_effort: minimal } # reasoning ON выжигает бюджет → пустой ответ; шлём minimal
note: >-
Кандидат-редактор Р4 / second-opinion судья (D3). Не в дефолтной цепочке Ф1 (слот под Ф2).
Живьём 2026-07-10 — chat 200.
# claude-sonnet-5 / claude-opus-4-8 удалены вместе с провайдером anthropic
# (см. комментарий у providers выше). Судья Фазы 2 — Gemini: нативный адаптер для
# safety-off судьи 18+; для перевода/эскалации достаточно OpenAI-слоя (провайдер gemini выше).
local-qwen3-8b:
provider: local
price: { input_per_m: 0, cached_per_m: 0, cache_write_per_m: 0, output_per_m: 0 }
note: Скрининг/экстракция (Р4 — «спецслужба, не переводчик»). $0 допустим только для local-провайдера.