textmachine/eval/providers.json

101 lines
8 KiB
JSON
Raw Permalink 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.

{
"_comment": "Конфиг провайдеров для refusal_bench.py. Ключи ТОЛЬКО из env (api_key_env). Все endpoints — OpenAI-совместимые chat/completions. Модели и параметры сверены вживую воркфлоу-аудитом 2026-07-04 (/models + пробный вызов). Грабли — docs/experiments/00-provider-quirks.md.",
"providers": [
{
"name": "deepseek",
"base_url": "https://api.deepseek.com/v1",
"model": "deepseek-v4-flash",
"api_key_env": "DEEPSEEK_API_KEY",
"rps_delay": 0.5,
"max_tokens": 8000,
"_comment": "deepseek-chat СНЯТ с /models (депрекация). v4-flash — гибридная reasoning-модель: thinking ВКЛючён по умолчанию и ОБЯЗАТЕЛЕН для перевода. При отключении thinking модель ЭХАЕТ китайский исходник (это и был баг deepseek-chat) — поэтому extra_body с thinking НЕ ставим. reasoning уходит в reasoning_content, content чистый; max_tokens 8000 чтобы reasoning+перевод не обрезались. НЕ ставить reasoning_params (это для gpt-5)."
},
{
"name": "qwen-intl",
"base_url": "https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
"model": "qwen-flash",
"api_key_env": "DASHSCOPE_API_KEY",
"rps_delay": 1.0,
"_comment": "Ожидаем hard-фильтр data_inspection_failed (gap-2 §4) — это и проверяем. Ключа пока нет."
},
{
"name": "grok",
"base_url": "https://api.x.ai/v1",
"model": "grok-4.20-0309-non-reasoning",
"api_key_env": "XAI_API_KEY",
"rps_delay": 0.5,
"_comment": "grok-4-fast СНЯТ с /v1/models. Взят явно НЕ-reasoning слаг (reasoning/non-reasoning — разные модели, режим в имени): перевод сразу, ~0.7с, thinking отключать нечего. Флагман grok-4.3 доступен, но reasoning-by-default — для простого перевода избыточен. usage отдаёт нестандартные cost_in_usd_ticks/num_sources_used — игнорировать."
},
{
"name": "glm",
"base_url": "https://api.z.ai/api/paas/v4",
"model": "glm-4.5-air",
"api_key_env": "ZAI_API_KEY",
"rps_delay": 1.0,
"timeout": 120,
"temperature": 0.3,
"max_tokens": 4000,
"extra_body": { "thinking": { "type": "disabled" } },
"_comment": "glm-4.5-air — дешёвый/быстрый (~1.5с). thinking у всей GLM-линии ВКЛючён по умолчанию — ОБЯЗАТЕЛЬНО отключать, иначе долго и жжёт бюджет. Фолбэк на glm-4.6 для сложных фрагментов. В /models новее: glm-4.7, glm-5, glm-5.1, glm-5.2 (для перевода не обязательны)."
},
{
"name": "kimi",
"base_url": "https://api.moonshot.ai/v1",
"model": "kimi-k2.6",
"api_key_env": "KIMI_API_KEY",
"rps_delay": 0.5,
"temperature": 1,
"max_tokens": 24000,
"timeout": 300,
"_comment": "Kimi K2.6: принимает ТОЛЬКО temperature=1 (иначе HTTP 400 — это была ложная 'отказ'). Многословная думалка (~11k reasoning-токенов/абзац) в reasoning_content → max_tokens ≥16000, иначе content пуст (finish=length). Дорогой; интернациональный endpoint api.moonshot.ai (не .cn)."
},
{
"name": "gemini",
"base_url": "https://generativelanguage.googleapis.com/v1beta/openai",
"model": "gemini-3.1-flash-lite",
"api_key_env": "GEMINI_API_KEY",
"rps_delay": 1.0,
"max_tokens": 8000,
"_comment": "МИГРИРОВАН 2026-07-10 (D21.9): gemini-2.5-flash EOL 16.10.2026 + интермиттентный 404-флейк → gemini-3.1-flash-lite (вендор-замена 2.5-flash-lite; НЕ 3.5-flash — та даёт 503 high-demand, проба research/15 + live-смоук 07-10). Live-смоук 07-10: finish=stop, thinking не съедает бюджет на коротком выходе → thinking_config НЕ нужен (прежний extra_body был ДВОЙНО ВЛОЖЕН extra_body.extra_body.google — на провод не уходил, баг убран). safety_settings через OpenAI-слой НЕ передаются (400 Unknown name); дефолт фильтров 3.x зависит от класса: SAFETY конфигурируем, PROHIBITED_CONTENT — НЕТ (00-provider-quirks). Для явного контроля фильтров судьи 18+ → нативный Gemini API."
},
{
"name": "openai",
"base_url": "https://api.openai.com/v1",
"model": "gpt-5-mini",
"api_key_env": "OPENAI_API_KEY",
"rps_delay": 0.5,
"reasoning_params": true,
"max_tokens": 8000,
"extra_body": { "reasoning_effort": "minimal" },
"_comment": "reasoning-модель: max_completion_tokens вместо max_tokens, БЕЗ temperature, reasoning_effort=minimal (иначе выжигает бюджет до пустого). Замер transformation exception (gap-2 §1)."
},
{
"name": "mistral",
"base_url": "https://api.mistral.ai/v1",
"model": "mistral-large-2512",
"api_key_env": "MISTRAL_API_KEY",
"rps_delay": 0.5,
"temperature": 0.3,
"max_tokens": 8000,
"extra_body": { "safe_prompt": false },
"_comment": "Канал-B фолбэк-кандидат (D14.2): Mistral Usage Policy eff.2026-06-11 без бланкетного запрета adult-текста (только CSAM/NCII). Слаг сверен вживую /models 2026-07-09 — реальный дейтед-слаг mistral-large-2512 (large-latest→2512). OpenAI-совместимый /v1/chat/completions, Bearer MISTRAL_API_KEY. safe_prompt=false: дефолт уже false + депрекейтед, но ставим явно (пре-пендит safety-промпт при true — вреден каналу B). Large 3 НЕ reasoning-модель → reasoning_effort НЕ ставим (риск 400); reasoning-линия = magistral-medium/small-2509. Эхо-мины НЕТ (проба zh→ru чисто, cjk_share=0). Refusal-срез SFW/L1/L2-violence 11/11 ok (exp02). Цена mistral-large-2512 (Large 3, текущий фронтир) = $0.50/$1.50 за 1M — сверено 2026-07-10 (OpenRouter-зеркало провайдера openrouter.ai/mistralai/mistral-large-2512 + pricepertoken/cloudzero: 75% срез от Large 2). $2/$6 = LEGACY Large 2 (mistral-large-2411, ретайр 31.05.2026); офиц. mistral.ai/pricing FAQ показывает УСТАРЕВШИЙ generic-пример $2/$6 — остаточная нестыковка вендор-доки (D19.5б закрыт). temperature ≤0.7."
},
{
"name": "openrouter-deepseek",
"base_url": "https://openrouter.ai/api/v1",
"model": "deepseek/deepseek-chat-v3-0324",
"api_key_env": "OPENROUTER_API_KEY",
"rps_delay": 1.0,
"_comment": "Открытые веса у пермиссивных хостеров — канал B №2; модель уточнить на дату прогона. Ключа пока нет."
},
{
"name": "local-ollama",
"base_url": "http://localhost:11434/v1",
"model": "huihui_ai/qwen3-abliterated:8b",
"api_key_env": "OLLAMA_FAKE_KEY",
"rps_delay": 0.0,
"timeout": 600,
"_comment": "Терминальный fallback. timeout 600 — книжные чанки на 8b идут 60-200с (иначе ложный infra_error); прогрев модели делается харнессом перед прогоном. Сэмплеры Qwen3 через /v1 не пробрасываются — для боевого прогона тег с запечённым Modelfile (qwen3-vojo)."
}
]
}