Pruefstand-Harness: Think-Blöcke strippen + Budgets rauf (Baseline-Befund 17.07.)
Rohe :8080-Aufrufe an Denk-Modelle (Qwen3.6) liefern <think>-Monologe im content: der Deutsch-Richter benotete Grübel-Text (Note 1-3), das Zitat-Gate suchte darin, und 900 max_tokens gingen komplett fürs Denken drauf (leere Antworten). - inhalt_von() entfernt <think>-Blöcke; abgeschnittenes Denken = ehrlich leer - recherche 1200->2800, deutsch 900->2400 max_tokens (Denkbudget einpreisen) - Fehlschläge speichern jetzt antwort_auszug (Diagnose ohne Nachstellen) - pv-anteil: überstrenges Pflicht-Stichwort 412 entfernt Mock-E2E nach Patch: coding 6/6, recherche 4/4; Think-Strip-Unit-Probe grün. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -62,10 +62,17 @@ def api_chat(endpoint, model, messages, max_tokens=1800, tools=None, timeout=420
|
|||||||
|
|
||||||
|
|
||||||
def inhalt_von(msg):
|
def inhalt_von(msg):
|
||||||
"""content zuerst, reasoning_content als Notnagel (Reasoning-Modelle)."""
|
"""content zuerst, reasoning_content als Notnagel (Reasoning-Modelle).
|
||||||
|
<think>-Blöcke werden entfernt: rohe :8080-Aufrufe an Denk-Modelle (Qwen3.6)
|
||||||
|
liefern den Grübel-Text im content mit — bewertet wird NUR die Antwort
|
||||||
|
(Baseline-Befund 17.07.: Richter benotete sonst Denk-Monologe)."""
|
||||||
if not msg:
|
if not msg:
|
||||||
return ""
|
return ""
|
||||||
return (msg.get("content") or msg.get("reasoning_content") or "").strip()
|
text = (msg.get("content") or msg.get("reasoning_content") or "")
|
||||||
|
text = re.sub(r"<think>.*?</think>", "", text, flags=re.DOTALL)
|
||||||
|
# abgeschnittenes Denken ohne Schluss-Tag: ehrlich als leer werten
|
||||||
|
text = re.sub(r"<think>.*$", "", text, flags=re.DOTALL)
|
||||||
|
return text.strip()
|
||||||
|
|
||||||
|
|
||||||
def norm(s):
|
def norm(s):
|
||||||
@@ -332,7 +339,7 @@ def suite_recherche(cfg, ergebnisse):
|
|||||||
'die deine Antwort belegt>"')
|
'die deine Antwort belegt>"')
|
||||||
msg, tim, err = api_chat(cfg.endpoint, cfg.model,
|
msg, tim, err = api_chat(cfg.endpoint, cfg.model,
|
||||||
[{"role": "user", "content": prompt}],
|
[{"role": "user", "content": prompt}],
|
||||||
max_tokens=1200)
|
max_tokens=2800)
|
||||||
eintrag = {"suite": "recherche", "id": task.get("id", tid),
|
eintrag = {"suite": "recherche", "id": task.get("id", tid),
|
||||||
"dauer_s": round(time.time() - t0, 1),
|
"dauer_s": round(time.time() - t0, 1),
|
||||||
"tg_tps": tim.get("predicted_per_second"),
|
"tg_tps": tim.get("predicted_per_second"),
|
||||||
@@ -358,6 +365,7 @@ def suite_recherche(cfg, ergebnisse):
|
|||||||
eintrag["pass"] = not fehlschlaege
|
eintrag["pass"] = not fehlschlaege
|
||||||
if fehlschlaege:
|
if fehlschlaege:
|
||||||
eintrag["grund"] = "; ".join(fehlschlaege)[:400]
|
eintrag["grund"] = "; ".join(fehlschlaege)[:400]
|
||||||
|
eintrag["antwort_auszug"] = antwort[:300]
|
||||||
ergebnisse.append(eintrag)
|
ergebnisse.append(eintrag)
|
||||||
|
|
||||||
|
|
||||||
@@ -381,7 +389,7 @@ def suite_deutsch(cfg, ergebnisse):
|
|||||||
t0 = time.time()
|
t0 = time.time()
|
||||||
msg, tim, err = api_chat(cfg.endpoint, cfg.model,
|
msg, tim, err = api_chat(cfg.endpoint, cfg.model,
|
||||||
[{"role": "user", "content": task["prompt"]}],
|
[{"role": "user", "content": task["prompt"]}],
|
||||||
max_tokens=900)
|
max_tokens=2400)
|
||||||
eintrag = {"suite": "deutsch", "id": task["id"],
|
eintrag = {"suite": "deutsch", "id": task["id"],
|
||||||
"dauer_s": round(time.time() - t0, 1),
|
"dauer_s": round(time.time() - t0, 1),
|
||||||
"tg_tps": tim.get("predicted_per_second"),
|
"tg_tps": tim.get("predicted_per_second"),
|
||||||
@@ -406,6 +414,8 @@ def suite_deutsch(cfg, ergebnisse):
|
|||||||
eintrag["pass"] = (note is not None and note >= 6)
|
eintrag["pass"] = (note is not None and note >= 6)
|
||||||
if note is None:
|
if note is None:
|
||||||
eintrag["grund"] = f"Richter ohne Note ({jerr or 'Format'})"
|
eintrag["grund"] = f"Richter ohne Note ({jerr or 'Format'})"
|
||||||
|
if not eintrag["pass"]:
|
||||||
|
eintrag["antwort_auszug"] = antwort[:300]
|
||||||
ergebnisse.append(eintrag)
|
ergebnisse.append(eintrag)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"id": "pv-anteil",
|
"id": "pv-anteil",
|
||||||
"frage": "Wie viel Strom lieferte die Photovoltaik-Anlage im zweiten Quartal und welchen Anteil am Verbrauch deckte das?",
|
"frage": "Wie viel Strom lieferte die Photovoltaik-Anlage im zweiten Quartal und welchen Anteil am Verbrauch deckte das?",
|
||||||
"muss_gruppen": [["96"], ["Viertel", "25", "24", "23"], ["412"]],
|
"muss_gruppen": [["96"], ["Viertel", "25", "24", "23"]],
|
||||||
"zitat_pflicht": true
|
"zitat_pflicht": true
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user