Eval harness: regression tests for LLM apps and agents in CI
We run this harness on every change to a prompt, model or tool in the AI systems we build. It scores your test set with deterministic and model-graded checks, compares the result with the last release and fails the build when quality drops.
What's inside.
Test sets as files
Cases live as CSV or YAML in your repository, grouped by category and severity, in the same format as our eval test set template.
Deterministic checks
Required and forbidden content, citations, JSON schemas and expected tool calls, checked in code on every run.
Model-graded checks
Rubric grading with a fixed judge prompt and model version, plus a calibration mode that compares judge scores with human labels.
Regression gate in CI
Results are compared with a stored baseline per category, and the build fails on a drop in pass rate or any new critical failure.
Cost and latency tracking
Tokens, cost and response time per case and per run, so a change that costs more shows up next to its quality result.
Reports
A Markdown summary for pull requests and a JSON report per run that you can keep as history or send to Langfuse.
How it fits together.
- 01
Load
The runner reads the test sets and the configuration for the prompt, model and tools under test.
- 02
Run
Each case goes to your application through a small adapter, with concurrency limits and retries for provider errors.
- 03
Grade
Deterministic checks run first. Cases that pass them go to the model grader where a rubric applies.
- 04
Compare
Scores, cost and latency are compared with the baseline, a report is written and CI passes or fails.
A look at the code.
The gate at the end of a run: compare each suite with the baseline and fail CI on a regression.
Built with.
All technologiesHear when it is public.
We are preparing the eval harness for release. One email when it is out, and our occasional notes.