Skip to main content
Anthropic’s Demystifying evals for AI agents is the clearest published account of how agent evals fail in practice. This page maps each recommendation to the thing you actually run. Every row names a command or API that exists in the release stated — no aspirational rows.

Vocabulary

The post’s vocabulary and multivon-eval’s API names, stated once. The API is not being renamed — a rename would break every existing suite for zero information gain.
Post saysmultivon-eval says
taskEvalCase (a case)
trialone of runs=N (a run)
graderEvaluator
transcriptagent trace / conversation transcript
outcomeCaseResult status (PASSED, FAILED_QUALITY, JUDGE_ERROR, …)
New warning and report copy uses the post’s terms (“40/40 trials passed”, “broken task or grader”, “graduate this suite”).

The mapping

RecommendationWhat executes itSince
Write reference solutions; 0% pass means a broken task, not a bad agentmultivon-eval validate — runs every task’s graders against its reference output, never calls the model; report.zero_pass_cases flags all-trials-failed suspects in every run0.16.0 (unreleased — on main)
Measure pass@k and pass^k under non-determinismsuite.run(fn, runs=N) + report.pass_at_k(k) / report.pass_hat_k(k) — unbiased estimators, cluster-bootstrap CIs, assert_pass_hat_k gate0.16.0 (unreleased — on main)
Graduate saturated capability evalsSaturation monitorreport.saturated, report.min_detectable_regression, EvalSuite(purpose="regression")0.16.0 (unreleased — on main)
Give the judge an “Unknown” way outUNKNOWN verdicts — hedged judge replies excluded from the score denominator and disclosed, never coerced to yes; the max_error_rate budget keeps judge outages from gating green0.16.0 (unreleased — on main)
Read the transcriptsmultivon-eval view --dir — report browser with per-case judge reasons and side-by-side run diffs0.15.0
Use isolated per-dimension judges, not one 1–10 ratingQAG evaluators — binary questions per dimension, auditable down to each verdictshipped
Calibrate the judge against human labelssuite.calibrate() + per-(judge × evaluator) calibrated thresholds with provenanceshipped
The four 0.16.0 features protect the places where evals lie most confidently: the 0% floor (validate), the 100% ceiling (saturation monitor), the single-number middle (pass@k vs pass^k), and the coerced verdict (the judge-UNKNOWN row — hedged judge verdicts parse as UNKNOWN, never as a silent yes).