Add the decisive probe case with two system messages, the shape the bought Gemini cells actually used

This commit is contained in:
Claude (backend session) 2026-08-22 00:35:02 +03:00
parent 20783511e0
commit 2b665fd5c4

View file

@ -43,10 +43,21 @@ def main() -> int:
sysm = "\n\n".join(x["content"] for x in full if x["role"] == "system") sysm = "\n\n".join(x["content"] for x in full if x["role"] == "system")
usr = next(x["content"] for x in full if x["role"] == "user") usr = next(x["content"] for x in full if x["role"] == "user")
led = R.MONEY.Guarded("ФД-N", default_expect=0.01) led = R.MONEY.Guarded("ФД-N", default_expect=0.01)
# ⚠ ТРЕТИЙ СЛУЧАЙ — РЕШАЮЩИЙ. Первые два показали, что счётчик исправен и полный промт доезжает,
# КОГДА системное сообщение ОДНО. Боевой арм шлёт ДВА системных (ядро роли + банк-закон) плюс
# user, и намерил 515 токенов — это примерно ровно размер ОДНОГО user-сообщения. Проверяем
# прямую гипотезу: слой OpenAI у Gemini теряет системные сообщения, когда их больше одного.
cases = [("короткий system", "short", "Ты — переводчик. " + MARK), cases = [("короткий system", "short", "Ты — переводчик. " + MARK),
("ПОЛНЫЙ system роли", "full", sysm + "\n\n" + MARK)] ("ПОЛНЫЙ system роли", "full", sysm + "\n\n" + MARK),
("ДВА системных, как у боевого арма", "two", None)]
for name, slug, s in cases: for name, slug, s in cases:
msgs = [{"role": "system", "content": s}, {"role": "user", "content": usr}] if s is None:
msgs = [x for x in full if x["role"] == "system"]
msgs = [dict(x) for x in msgs] + [{"role": "user", "content": usr}]
msgs[0]["content"] = msgs[0]["content"] + "\n\n" + MARK
s = "\n\n".join(x["content"] for x in msgs if x["role"] == "system")
else:
msgs = [{"role": "system", "content": s}, {"role": "user", "content": usr}]
rec = R.MONEY.purchase(led, f"dv-n-probe-gemsys-{slug}", "gemini-3.1-flash-lite", rec = R.MONEY.purchase(led, f"dv-n-probe-gemsys-{slug}", "gemini-3.1-flash-lite",
R.ED22.client("gemini-3.1-flash-lite"), R.ED22.client("gemini-3.1-flash-lite"),
R.call_kwargs("gemini-3.1-flash-lite", msgs, "RE"), R.call_kwargs("gemini-3.1-flash-lite", msgs, "RE"),