diff --git a/eval/editor_tier/screen.py b/eval/editor_tier/screen.py index 2b8f130d..4e1aaf4b 100644 --- a/eval/editor_tier/screen.py +++ b/eval/editor_tier/screen.py @@ -48,6 +48,21 @@ SPECIAL = {"kimi-k3": dict(units=1, roles=("editor",), max_out=4000)} ROLES = ("translator", "editor") +def client(model: str): + """Соединение по РАСШИРЕННОЙ таблице. Клиент эксп-22 знает только свои 11 слагов и падает + KeyError на новом кандидате — тот же класс, что уронил его собственный скрин на середине.""" + import os # noqa: PLC0415 + + from dotenv import load_dotenv # noqa: PLC0415 + from openai import OpenAI # noqa: PLC0415 + load_dotenv(REPO / "eval" / ".env") + base, env, *_ = ROSTER.CANDIDATES[model] + key = os.environ.get(env) + if not key: + raise SystemExit(f"нет ключа {env} для {model}") + return OpenAI(base_url=base, api_key=key, timeout=600.0, max_retries=1) + + def tag(model: str, role: str, uid: str) -> str: return f"et-scr-{model}-{role}-{uid[:6]}" @@ -88,7 +103,7 @@ def cmd_run() -> None: continue msgs = S22.msgs_for(role, u) kw = ROSTER.call_kwargs(m, msgs, max_out=SPECIAL.get(m, {}).get("max_out", 16000)) - rec = MONEY.purchase(led, t, m, S22.client(m), kw, role=role, uid=u["uid"]) + rec = MONEY.purchase(led, t, m, client(m), kw, role=role, uid=u["uid"]) if rec is None: print(f" {t}: не куплено") continue