textmachine/eval/providers.json

102 lines
7.1 KiB
JSON
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.

{
"_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-2.5-flash",
"api_key_env": "GEMINI_API_KEY",
"rps_delay": 1.0,
"max_tokens": 8000,
"extra_body": { "extra_body": { "google": { "thinking_config": { "thinking_budget": 0 } } } },
"_comment": "thinking по умолчанию съедал max_tokens и молча обрезал перевод — выключен через thinking_budget:0. safety_settings через OpenAI-слой НЕ передаются; дефолт фильтров 2.5/3 — OFF (gap-2 §6); явный контроль фильтров → нативный 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). Цена ~$0.50/$1.50 за 1M (API pricing 07-09; маркетинг-страница показывает старые $2/$6). 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)."
}
]
}