01Start from failure taxonomy
Define what can go wrong—wrong answer, unsupported claim, missed tool, unsafe action, bad refusal—and build cases for each. Include easy, hard, boundary, adversarial, and real production examples.
Define success at the task level before choosing a grader. A support answer might need correct policy, cited evidence, complete resolution, and no unauthorized disclosure. These are distinct properties; one aggregate “quality” rating can hide a serious failure. Build ordinary, boundary, ambiguous, adversarial, and missing-evidence cases, with labels that another reviewer can apply consistently.
Separate development cases from held-out evaluation. Keep input, expected evidence or outcome, slice labels, and versioned grading rules together. Small hand-built datasets are useful for diagnosing mechanisms, but a few successes do not establish a production failure rate. For example, five percentage points on twenty cases is one changed case. Inspect uncertainty and critical failures before treating that as a robust improvement.
- Keep development and holdout sets separate
- Version data and grading rubrics
- Stratify results by meaningful slice
02Graders need evaluation too
Exact checks fit schemas and known answers; code graders fit executable properties; model judges fit nuanced comparisons. Calibrate automated graders against blinded human labels and inspect disagreement.
Choose the simplest reliable grader for each property. Parse code for schema validity, execute a calculation for exact results, inspect source support for factual claims, and use human or calibrated model review for nuanced quality. A model judge is another fallible component. It may prefer verbosity, familiar phrasing, or answers from a particular style.
Calibrate on blinded examples with human labels, then inspect disagreements. For a binary safety gate, a false pass can matter much more than a false fail; report those separately. Pairwise review can simplify some comparisons but still needs randomized presentation and controls for irrelevant style. Preserve grader versions so a changing evaluator does not masquerade as a changing model.
- Pairwise is often easier than absolute scoring
- Avoid judging style when correctness matters
- Use multiple signals for high-stakes gates
03Close the online loop
Offline improvement may not improve user outcomes. Canary and A/B test meaningful changes, observe latency/cost/safety, and mine failures back into the suite without contaminating the holdout.
Offline evaluation makes changes comparable; online observation checks whether those changes help real users. A canary should monitor task completion, latency, spend, and critical failure slices with a rollback rule. Thumbs-up is useful but biased: some users never respond, and dissatisfaction can reflect product policy rather than model error. Treat feedback as evidence to investigate rather than an automatic ground-truth label.
Turn production failures into reproducible cases by recording safe input representations, model and prompt versions, evidence IDs, tool observations, and policy decisions. Add diagnosed cases to development data while protecting a fresh holdout. Keep a release ledger that states what improved, what regressed, and which tradeoffs were accepted; a single rising score is not a complete release argument.
- Log model, prompt, retrieval, and tool versions
- Watch Goodhart effects
- Re-evaluate when traffic shifts