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):
|
||||
"""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:
|
||||
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):
|
||||
@@ -332,7 +339,7 @@ def suite_recherche(cfg, ergebnisse):
|
||||
'die deine Antwort belegt>"')
|
||||
msg, tim, err = api_chat(cfg.endpoint, cfg.model,
|
||||
[{"role": "user", "content": prompt}],
|
||||
max_tokens=1200)
|
||||
max_tokens=2800)
|
||||
eintrag = {"suite": "recherche", "id": task.get("id", tid),
|
||||
"dauer_s": round(time.time() - t0, 1),
|
||||
"tg_tps": tim.get("predicted_per_second"),
|
||||
@@ -358,6 +365,7 @@ def suite_recherche(cfg, ergebnisse):
|
||||
eintrag["pass"] = not fehlschlaege
|
||||
if fehlschlaege:
|
||||
eintrag["grund"] = "; ".join(fehlschlaege)[:400]
|
||||
eintrag["antwort_auszug"] = antwort[:300]
|
||||
ergebnisse.append(eintrag)
|
||||
|
||||
|
||||
@@ -381,7 +389,7 @@ def suite_deutsch(cfg, ergebnisse):
|
||||
t0 = time.time()
|
||||
msg, tim, err = api_chat(cfg.endpoint, cfg.model,
|
||||
[{"role": "user", "content": task["prompt"]}],
|
||||
max_tokens=900)
|
||||
max_tokens=2400)
|
||||
eintrag = {"suite": "deutsch", "id": task["id"],
|
||||
"dauer_s": round(time.time() - t0, 1),
|
||||
"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)
|
||||
if note is None:
|
||||
eintrag["grund"] = f"Richter ohne Note ({jerr or 'Format'})"
|
||||
if not eintrag["pass"]:
|
||||
eintrag["antwort_auszug"] = antwort[:300]
|
||||
ergebnisse.append(eintrag)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user