#!/usr/bin/env python3 """Prueft die Ausfuehrmechanik gegen die Referenzloesungen der Datensaetze. HumanEval+ und MBPP+ liefern ihre kanonische Loesung mit. Wenn die durch meine Pruefroutine faellt, liegt es an der Routine, nicht am Modell — und jede Prozentzahl aus so einem Lauf waere Unsinn. """ import json import sys sys.path.insert(0, "/mnt/models/qwen38-prep") import bench_humaneval as B for satz, n in (("humanevalplus", 25), ("mbppplus", 25)): aufgaben = B.lade(satz, n) ok_n, fehler = 0, [] for a in aufgaben: if satz.startswith("humaneval"): # Kanonisch ist nur der Rumpf; der Kopf steht im prompt. loesung = a["prompt"] + a["canonical_solution"] else: loesung = a["code"] ok, grund = B.pruefe(satz, a, loesung) ok_n += ok if not ok: fehler.append((a["task_id"], grund)) print(f"\n=== {satz}: {ok_n}/{len(aufgaben)} Referenzloesungen bestehen ===") for t, g in fehler[:8]: print(f" {t}: {g}") if ok_n < len(aufgaben): print(f" -> Pruefmechanik greift bei {len(fehler)} Aufgaben nicht.")