Add the decisive probe case with two system messages, the shape the bought Gemini cells actually used
This commit is contained in:
parent
20783511e0
commit
2b665fd5c4
1 changed files with 13 additions and 2 deletions
|
|
@ -43,10 +43,21 @@ def main() -> int:
|
|||
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")
|
||||
led = R.MONEY.Guarded("ФД-N", default_expect=0.01)
|
||||
# ⚠ ТРЕТИЙ СЛУЧАЙ — РЕШАЮЩИЙ. Первые два показали, что счётчик исправен и полный промт доезжает,
|
||||
# КОГДА системное сообщение ОДНО. Боевой арм шлёт ДВА системных (ядро роли + банк-закон) плюс
|
||||
# user, и намерил 515 токенов — это примерно ровно размер ОДНОГО user-сообщения. Проверяем
|
||||
# прямую гипотезу: слой OpenAI у Gemini теряет системные сообщения, когда их больше одного.
|
||||
cases = [("короткий system", "short", "Ты — переводчик. " + MARK),
|
||||
("ПОЛНЫЙ system роли", "full", sysm + "\n\n" + MARK)]
|
||||
("ПОЛНЫЙ system роли", "full", sysm + "\n\n" + MARK),
|
||||
("ДВА системных, как у боевого арма", "two", None)]
|
||||
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",
|
||||
R.ED22.client("gemini-3.1-flash-lite"),
|
||||
R.call_kwargs("gemini-3.1-flash-lite", msgs, "RE"),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue