Skip to main content

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_matches for 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evalpilot-0.1.1.tar.gz (31.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

evalpilot-0.1.1-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

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

Hashes for evalpilot-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f043bd422bc48917e61172179f81142a2b1d00e317241beee5bf3a56a9f8cdec
MD5 5a656616f8c2ba2d6bd1d75f3ec72baf
BLAKE2b-256 f541386218f668e5f569915ea78c1be4c417751bf442c1e35400415e8a6536e4

See more details on using hashes here.

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

Hashes for evalpilot-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 eaa53d9a3df5309bfa711a2e382a671e5475158a90cb6c8e6636adcb0669b90a
MD5 c58641e885d534c75cca401cca1e4558
BLAKE2b-256 66dd68045155ff871c7d4be2ba5ef8f910882d61359441c7e59e0daf13c0efd4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page