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). This page is the complete public API — if something isn’t on this page, treat it as internal and don’t rely on it.

Quick reference

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. ProviderUsage has provider, model, input_tokens, output_tokens, total_tokens, calls, and cost_usd.

CI examples

Fail the build on regressions:
Compare vs a baseline run:
Filter by tag (e.g. only the adversarial subset):