A general framework for online-driving, recording, and scoring AI agents against task suites.
Project description
evalpilot
A general framework for evaluating agents. It online-drives any agent through a task suite, records its trajectory, scores it with four pluggable scorers (objective checkpoints, LLM-as-judge, trajectory/process, efficiency), and emits a JSON + static HTML report.
Install
Published on PyPI as evalpilot; the CLI command is evalpilot.
Run with no install (recommended):
uvx evalpilot run
Install as a tool:
uv tool install evalpilot # or: pipx install evalpilot
For browser-UI (webui) agents, install the extra and the browser once:
uv tool install "evalpilot[webui]"
playwright install chromium
From source (development):
python -m venv .venv
.venv/bin/pip install -e ".[dev]"
Quick start
.venv/bin/evalpilot run --suite suites/example.yaml --agent configs/function-echo.yaml --run-id demo --no-llm-judge
open runs/demo/report.html
Or run it interactively — omit --suite/--agent and a wizard walks you through
defining the agent and tasks (no YAML needed):
evalpilot run
Browse all runs at once:
open runs/index.html
Concepts
- Task / TaskSuite — declarative units of evaluation (prompt, setup, checkpoints, rubric, budget).
- AgentAdapter — narrow interface that drives the agent under test. Built-in:
function,cli,http,webui. Add a new agent by writing one subclass. - Trajectory — the recorded run (steps, output, usage, final state). Sole data source for all scorers.
- Scorers — checkpoint, llm_judge, trajectory, efficiency. Read-only,
pluggable, weighted. Checkpoints include file/command checks plus
output_contains/output_matchesfor grading text answers objectively. - Runner / Reporter — orchestrate and report.
Adding an agent
Write a YAML config selecting an adapter type. For a CLI agent:
type: cli
name: my-agent
command: my-agent --prompt {prompt} --json-stream
For an in-process Python callable:
type: function
name: my-agent
entrypoint: my_module:run
For an OpenAI-style HTTP endpoint:
type: http
name: my-agent
url: http://localhost:8000/v1/chat/completions
For a browser-based (web UI) agent:
type: webui
name: my-chat-agent
url: https://my-agent.example.com/chat
input_selector: "textarea"
output_selector: ".message.assistant:last-child"
The webui adapter needs Playwright (an optional extra):
pip install -e ".[webui]"
playwright install chromium
It types the prompt into input_selector, waits until the reply text in
output_selector stops changing (default 1.5s), then scrapes it. Reuse a
logged-in session with storage_state: ./auth.json.
Scoring weights
Defaults: checkpoint=3, llm_judge=2, trajectory=1, efficiency=0. Override per
suite (default_weights) or per task (weights). Each scorer's sub-score and
its reason are always preserved in the report, not just the aggregate.
Commands
evalpilot run --suite SUITE.yaml --agent AGENT.yaml [--run-id ID] [--out DIR] [--no-llm-judge]
evalpilot run # interactive wizard (builds agent + tasks)
evalpilot report --run runs/ID # re-render report.html from result.json
evalpilot compare runs/a runs/b # combined leaderboard across runs
evalpilot index [--out runs] # overview page listing all runs -> runs/index.html
Testing
.venv/bin/python -m pytest
All scorer/adapter tests inject fakes (fake CLI scripts, fake HTTP post, fake LLM completion), so the suite runs fully offline with no network or API key.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file evalpilot-0.1.1.tar.gz.
File metadata
- Download URL: evalpilot-0.1.1.tar.gz
- Upload date:
- Size: 31.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f043bd422bc48917e61172179f81142a2b1d00e317241beee5bf3a56a9f8cdec
|
|
| MD5 |
5a656616f8c2ba2d6bd1d75f3ec72baf
|
|
| BLAKE2b-256 |
f541386218f668e5f569915ea78c1be4c417751bf442c1e35400415e8a6536e4
|
File details
Details for the file evalpilot-0.1.1-py3-none-any.whl.
File metadata
- Download URL: evalpilot-0.1.1-py3-none-any.whl
- Upload date:
- Size: 26.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eaa53d9a3df5309bfa711a2e382a671e5475158a90cb6c8e6636adcb0669b90a
|
|
| MD5 |
c58641e885d534c75cca401cca1e4558
|
|
| BLAKE2b-256 |
66dd68045155ff871c7d4be2ba5ef8f910882d61359441c7e59e0daf13c0efd4
|