"""Génère une déclinaison réelle et sauvegarde la sortie pour inspection. PYTHONPATH=. .venv/bin/python tests/gen_decl_sample.py [qcm|qat] [exo] """ import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from app import _load_env, _setup_logging _setup_logging() _load_env() from app.pipeline.orchestrator import run_declinaisons decl = sys.argv[1] if len(sys.argv) > 1 else "qcm" SRC = Path(sys.argv[2]) if len(sys.argv) > 2 else \ Path(__file__).resolve().parent.parent / "bench" / "corpus" / "trinome_pythonise.md" content = SRC.read_text(encoding="utf-8") (dt, res), = run_declinaisons(content, filename=SRC.name, lang="fr", types=[decl]) out = Path(f"/tmp/decl_{decl}_sample.md") out.write_text(res["exercise"], encoding="utf-8") print(f"harnais : {'VERT' if res['harness']['ok'] else 'ROUGE'} → {out}") ped = res.get("pedagogical") if ped: print(f"pédagogique : verdict={ped.get('verdict')} score={ped.get('score')} " f"issues={len(ped.get('issues') or [])}") for it in (ped.get("issues") or [])[:5]: print(f" - [{it.get('gravite')}] {it.get('ou')} : {it.get('probleme')}") tel = res.get("policy_telemetry") if tel: print(f"policy : échelons={len(tel.get('tried') or [])} " f"gagnant={tel.get('winning_model')} pédago={tel.get('pedago_verdict')}")