Skip to main content
EvalReport is the object returned by EvalSuite.run(). It exposes the run’s results both as flat attributes (the common readouts) and as derived methods (breakdowns, exports, comparisons). The reference below covers the main public attributes and methods through 0.19.0, including provider evidence and accounting.

Quick reference

Quality aggregates exclude errored and skipped cases. Per-evaluator aggregates also exclude that evaluator’s skips. Tag quality aggregates use evaluated cases, while count_by_tag() counts all cases. Read the counts alongside the averages. A case with one measured check and another skipped check still counts as evaluated. The built-in gate blocks wholly skipped cases; enforce per-check coverage separately when every evaluator is required. In development, comparison results also expose execution_changes (changed target and policy paths) and execution_notes (unknown target configuration). A deliberate target change preserves case/grader pairing; observed target drift during a run makes a controlled comparison indeterminate.

Common gotchas

Field-vs-method shapes. Pass-rate and average score are attributes (plain access, no parens). The 95% CIs are methods (call them) so you can pass a different confidence level when needed. So:
costs is a dataclass, not a dict. Use attribute access:
The serialised JSON exposes the same data under string keys (r['costs']['total_cost_usd']), which is sometimes a source of confusion. Use the dataclass at runtime, the JSON-keyed view when consuming a saved report. case_results is the iterable, not cases. Older docs and blog posts sometimes show report.cases[i]; the correct attribute is case_results. passed_by_evaluator is a method. Some older snippets show it as an attribute. Always call it:

CaseResult shape

The objects in report.case_results.

EvalResult shape

The objects in case_result.results (per-evaluator).

Costs shape

The dataclass on report.costs. The coverage fields and semantics below ship in 0.19.0. See provider accounting. ProviderUsage has provider, model, input_tokens, output_tokens, total_tokens, calls, and cost_usd.

CI examples

Fail below an absolute quality threshold, on errors, or on incomplete coverage:
Compare vs a baseline run:
Filter by tag (e.g. only the adversarial subset):