Write the goal before choosing metrics
For a refund assistant, “be helpful” is too broad. A testable goal is:Given an order and the applicable policy, issue the correct authorized refund once, record it against that order, and accurately tell the customer what happened. If required information is missing, ask for it before acting.Record the initial state, permitted actions, success conditions, unacceptable side effects, and evidence the grader can inspect. Include both cases where the assistant should act and cases where it should abstain or ask a question.
ToolCallAccuracy measures the expected tool sequence or set. A tool name in
a trace does not prove that the transaction committed. TaskCompletion is an
LLM judgment, not an external-state verifier. Collect final state from a test
sandbox or application adapter and implement a custom evaluator
when that state determines success.
Build cases that distinguish good from bad
Start from real successful tasks and failures with permission to use the data. Add boundaries: missing inputs, conflicting instructions, repeated requests, partial tool failures, stale context, unsupported claims, and required abstention. Synthetic cases can expand coverage but need review before becoming acceptance criteria. Keep the source document or conversation identifier so related cases stay in the same split. Separate the cases used to design prompts, rubrics, and thresholds from a held-out test set. Do not inspect that test set repeatedly while tuning. Save fixed case definitions for baseline/proposal comparisons. PyPI 0.17.0 pairs reports by input text and cannot reliably identify changed context or labels. The development branch adds versioned cases and trial evidence to detect these changes; it still requires representative, reviewed data.Verify the grader
Runmultivon-eval validate on reference outputs to catch graders that reject
known-good answers. Also test known-bad and mixed answers, including a refusal
followed by an unsupported claim. A grader that accepts everything can pass
reference validation.
Use suite.calibrate() to measure agreement on human-reviewed examples; it
does not fit thresholds. Report false accepts, false rejects, errors, skips,
and important task slices alongside overall agreement. Bootstrap’s p25 score
suggestions are provisional distribution summaries, not labeled calibration.

