agent-evals
An evaluation harness for AI agents. Define tasks in YAML, run them against pluggable agent runners, score the answers, capture full step-by-step traces, and track regressions run over run.
Quickstart
pip install -e .
agent-evals run --suite builtin --runner mock
Running 10 tasks with runner 'mock'...
run id: 9f3c1a2b4d5e
[PASS] chained_calc score=1.00 steps=3
...
Result: 10/10 passed, avg score 1.00
Compare two runs and generate a report:
agent-evals run --suite builtin --runner mock --mock-mode flaky
agent-evals diff <run-a> <run-b>
agent-evals report <run-b> -o report.html --vs <run-a>
Or run the full demo: bash demo.sh
How it works
Tasks are YAML files: a prompt, whitelisted tools, and scoring checks. Ten built-in tasks ship with the harness, across math reasoning, JSON extraction, multi-step tool use, instruction following, and logic puzzles.
id: chained_calc
name: Chained calculation
category: tool_use
prompt: |
A store sells notebooks for $4.50 each. A customer buys 6 notebooks and a 10%
discount is applied to the total. What does the customer pay?
Respond with only the number, rounded to 2 decimals.
tools: [calculator]
max_steps: 8
scoring:
- type: exact_match
expected: "24.30"
Runners decide the agent's next action. Two ship out of the box:
| Runner | Use |
|---|---|
mock |
Deterministic scripted agent, for CI and offline runs. --mock-mode flaky fails two tasks on purpose, for diff demos. |
http |
Any OpenAI chat-completions compatible endpoint. Set AGENT_EVALS_BASE_URL (plus AGENT_EVALS_API_KEY, AGENT_EVALS_MODEL). |
Tool loop. The harness drives the agent loop and executes whitelisted
tools: calculator (sandboxed arithmetic), kv_store (per-run key-value
state), web_fetch (per-task stubbed responses, so evals stay offline).
Scorers. exact_match, contains, regex, json_schema, llm_judge
(with a deterministic StubJudge for offline use), and python for custom
module:function scorers. Checks are weighted and averaged per task.
Traces and history. Every step of every task is persisted to SQLite
(.agent-evals/runs.db by default), exportable as JSONL. The CLI lists runs,
shows per-task scores and full traces, diffs two runs (improved / regressed /
unchanged with score deltas), and renders a single-file offline HTML report.
CLI reference
agent-evals run --suite builtin --runner mock [--mock-mode flaky] [--report out.html]
agent-evals list-tasks
agent-evals runs
agent-evals show <run-id> [--trace <task-id>] [--jsonl trace.jsonl]
agent-evals diff <run-a> <run-b>
agent-evals report <run-id> -o report.html [--vs <other-run-id>]
Project layout
agent_evals/
tasks.py YAML task loading and validation
builtin_tasks/ 10 shipped eval tasks
runners.py MockRunner, HttpRunner (OpenAI-compatible)
tools.py calculator, kv_store, web_fetch
loop.py agent tool-use loop
scorers.py exact_match, contains, regex, json_schema, llm_judge, python
store.py SQLite run history, traces, regression diffs
report.py single-file HTML report
cli.py command line interface
tests/ 58 pytest tests
demo.sh end-to-end demo: run, diff, report
Development
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest -q && ruff check . && ruff format --check . && mypy agent_evals
License
MIT. See LICENSE.
Metadata
Release files for provingground 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| provingground-0.1.0.tar.gz | 27.5 kB | With provenance | Details for provingground-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| provingground-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for provingground-0.1.0-py3-none-any.whl |
Total release size: 54.1 kB
Release files / provingground-0.1.0.tar.gz
| Download URL | provingground-0.1.0.tar.gz |
|---|---|
| Size | 27.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
230eba3cfe8201952cbfd6c823a4d87d2e473285471d111f1e43394467e4c5ad
|
|
BLAKE2b-256 checksum How to use checksums |
7369af70c5e339389db4e9bb79f61c129643f64acd930bfb85222fd06b4d6b5c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logRelease files / provingground-0.1.0-py3-none-any.whl
| Download URL | provingground-0.1.0-py3-none-any.whl |
|---|---|
| Size | 26.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
909ae7807e2d90c1d38f88fbbc69fd3a0de80133fb32eb93d27d2ecf558b1242
|
|
BLAKE2b-256 checksum How to use checksums |
62527a97f3d19097d9eff53928e0f052df2d27e2a71e41d0d4d7169a3df5cb58
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logSecurity for provingground 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for provingground-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.