Freeze the erratum arm that runs glm-5 with its vendor-default thinking, the confound the bought cells revealed

This commit is contained in:
Claude (backend session) 2026-08-20 23:47:45 +03:00
parent 3433a85d1f
commit 26bf4f297a
2 changed files with 50 additions and 4 deletions

View file

@ -3429,3 +3429,33 @@ RK grok-4.3 xAI 16 $0.4136
Английская глава впятеро короче; бюджет вывода 32000. Обрыв `finish=length` — объявляется числом.
* Эхо-мина: гейт годности `C.draft_defect` стоит на каждой клетке; эхо на этих вендорах не мерено
ни разу, и частота печатается как результат арма.
### Д25.1 ⛔ ЭРРАТА, ОБЪЯВЛЕНА ПОСЛЕ 32 КУПЛЕННЫХ КЛЕТОК И ДО СУДЕЙСТВА: `RG` шёл БЕЗ РАЗМЫШЛЕНИЯ
Проверка купленного (а не заявленного) вскрыла конфаунд, которого пре-рег Д25 не предусмотрел.
```
арм модель $/клетка размышление/клетка знаков/клетка
RN deepseek-v4-pro 0.0278 6 139 1 530
RK grok-4.3 0.0068 737 1 567
RG glm-5 0.0029 0 1 600 ← НОЛЬ
```
Ноль не аномалия провода и не молчание вендора: **ростер гасит размышление `glm-5` по умолчанию**
(`extra_body: {"thinking": {"type": "disabled"}}`, квирк-бюллетень :53, подтверждено живыми армами
эксп-18/21). Проверено чтением кода, а не догадкой.
**Почему это ломает именно ЭТОТ замер.** Трейс 20.08 показал: `dspro` пишет 8894% финального
текста ВНУТРИ размышления, то есть промт-роль опирается ровно на тот механизм, который у `glm-5`
выключен. Сравнение «промт на dspro с думанием» против «того же промта на glm-5 без думания»
мерило бы думание, а не переносимость промта — и вывод «промт не переносим» был бы артефактом
конфигурации.
**Лечение — арм, а не правка.** Заведён `RGT`: тот же `glm-5` с ВЕНДОР-ДЕФОЛТНЫМ размышлением.
`RG` остаётся в панели: разность `RG`/`RGT` — цена размышления у этого вендора, замеренная попутно
и бесплатно, и это самостоятельный результат.
**Что при этом уже видно и не зависит от эрраты.** Смета Д25 ($0.7007) завышена в 4.5 раза:
факт **$0.1546** за 32 клетки, все `finish=stop`, гейт годности не поднял ни одной. Оба чужих
вендора оказались кратно дешевле `dspro` в этой роли: `glm-5` в 9.6 раза, `grok-4.3` в 4.1 раза.
Риск «grok разгонит размышление ×163» НЕ реализовался: 737 токенов против 6 139 у `dspro`.

View file

@ -119,7 +119,7 @@ PAIRS["zh"]["restore"] = None
# модели не схлопнулись в один тег: кэш `purchase` смотрит на существование файла и вернул бы
# первую клетку второй раз.
ARMS = {"RN": ("deepseek-v4-pro", 1), "RN2": ("deepseek-v4-pro", 2),
"RG": ("glm-5", 1), "RK": ("grok-4.3", 1),
"RG": ("glm-5", 1), "RGT": ("glm-5", 1), "RK": ("grok-4.3", 1),
"RA": ("deepseek-v4-pro", 1), # тот же промт, ВОССТАНОВЛЕННЫЕ абзацы исходника
"RC": ("deepseek-v4-pro", 1), # промт МИНУС рамка оценки, см. CUT
"RB": ("deepseek-v4-pro", 1)} # рамка оценки ПЕРЕВЁРНУТА: брак = чужой язык
@ -434,10 +434,26 @@ def chosen(p: str) -> list[dict]:
return ZK.chosen(p)
def call_kwargs(model: str, msgs: list[dict]) -> dict:
# ⚠ РАЗМЫШЛЕНИЕ У `glm-5` РОСТЕР ГАСИТ ПО УМОЛЧАНИЮ (`extra_body:{thinking:{type:disabled}}`,
# квирк-бюллетень :53). Для этого замера это КОНФАУНД, а не деталь: трейс 20.08 показал, что
# `dspro` пишет 8894% финального текста ВНУТРИ размышления, то есть промт-роль опирается ровно на
# тот механизм, который у `glm-5` выключен. Сравнивать «промт на dspro с думанием» с «тем же промтом
# на glm-5 без думания» значит мерить думание, а не переносимость промта.
# ⇒ арм `RGT` — тот же `glm-5` с ВЕНДОР-ДЕФОЛТНЫМ размышлением. `RG` остаётся: разность RG/RGT и
# есть цена размышления у этого вендора, замеренная попутно и бесплатно.
THINK_ON = ("RGT",)
def call_kwargs(model: str, msgs: list[dict], arm: str = "") -> dict:
"""Боевая конфигурация модели. Отступлений нет: у `grok-4.3` вендор-дефолт = размышление ON,
а запрет D30.1 прямой reasoning-off в редакторской роли даёт no-op-редактора."""
return ROSTER.call_kwargs(model, msgs, max_out=MAX_OUT)
kw = ROSTER.call_kwargs(model, msgs, max_out=MAX_OUT)
if arm in THINK_ON and isinstance(kw.get("extra_body"), dict):
eb = {k: v for k, v in kw["extra_body"].items() if k != "thinking"}
kw["extra_body"] = eb if eb else None # пустой extra_body вендору не шлём
if kw["extra_body"] is None:
del kw["extra_body"]
return kw
# ── ПОКУПКА ──────────────────────────────────────────────────────────────────────────────────
@ -469,7 +485,7 @@ def buy(p: str, which: list[str]) -> None:
# часами, и пересёкший 16:00 UTC цикл писал бы вызовы по вчерашнему прайсу.
ZK.price_gate(quiet=True)
rec = MONEY.purchase(led, tg, model, ED22.client(model),
call_kwargs(model, rol_msgs(p, src_of(p, arm, u), arm)),
call_kwargs(model, rol_msgs(p, src_of(p, arm, u), arm), arm),
role="onepass", uid=u["uid"], arm=arm, gen=gen, pair=p,
podacha="абзацы" if arm in RESTORE_ARMS else "плоско")
if rec.get("skipped"):