tests/Evals/SupportBotTest.php
Terminal
Quickstart
Your first recorded eval — from install to a baseline-gated CI check in five minutes.
Baselines & Regressions
The core idea: every run compared against the run you trusted, row by row.
The LLM Judge
Structured-output scoring with persisted reasoning — and calibration against human labels.
Assertions Reference
30+ checks against the real AgentResponse: tool calls, cost, tokens, multi-turn.
Dashboard
Score trends, per-sample drill-downs, judge reasoning, and run comparison in your browser.
Datasets
JSONL, CSV, Eloquent — or replay real production conversations.
Why recorded evals?
Agents are nondeterministic
One sample proves nothing. Every row runs N times; results are pass rates and score distributions, not single booleans.
Pass/fail is a policy, not a verdict
Scores are the primary output. Gates — minimum score, pass rate, zero regressions — are applied at the run level, where they belong.
A run that isn't persisted is worthless
Every run, sample, assertion, and judge rationale lands in your database. Six weeks from now you can answer “when did quality drop, and on which inputs?”
Cheap checks first, expensive checks last
Deterministic assertions run before LLM judges; gate failures skip the judge entirely. Broken samples never burn judge tokens.
Using pestphp/pest-plugin-evals? The two coexist happily — see Vizra Evals vs pest-plugin-evals. Coming from the Vizra ADK evaluation system? See the migration guide.