Open source agent evaluation framework β score any AI agent across providers with standardized, reproducible benchmarks.
Every team building AI agents needs to answer one question:
How good is my agent, actually?
There are frameworks for orchestration (LangChain), observability (Langfuse), and tracking (MLflow) β but no standardized, provider-agnostic way to score an agent's performance. AgentEval fills that gap:
- One command β comparable scores across OpenAI, Anthropic, Ollama, and local models
- Standardized task suites for the capabilities that matter: codegen, QA, reasoning, summarization, tool-use
- Real metrics: accuracy, pass@k, latency, cost per run
- CI-ready: fail builds when agent quality drops below a threshold
pip install agenteval
agenteval run --provider openai --model gpt-4o-mini --suite all# AgentEval Report
- Provider: openai (gpt-4o-mini)
- Suite: all
- Tasks: 8/10 passed
- Accuracy: 80.0%
- Avg latency: 420.3 ms
- Total cost: $0.000412
| Feature | Description |
|---|---|
| Multi-provider | OpenAI-compatible APIs, Anthropic, Gemini, Groq, Ollama, local models, mock |
| Task suites | codegen, qa, reasoning, summarization, tool-use (+ custom) |
| pass@k | Run a task N times, pass if any sample succeeds |
| Cost tracking | Per-run USD cost for every provider |
| CLI + SDK | Python CLI and TypeScript SDK (typed, tested) |
| CI integration | Non-zero exit below threshold; JSON output |
| Reusable workflow | uses: rexblade58/agenteval/.github/workflows/eval.yml@main |
| Docker image | Multi-arch GHCR image for CLI + dashboard β see docs |
| Zero heavy deps | httpx + rich only β no framework lock-in |
Actively developed. Current state of the repo:
| Area | Status |
|---|---|
| Python core (CLI, providers, evaluator, reports) | β Done β 9 unit tests |
| TypeScript SDK (types + mock runner + CLI wrapper) | β Done β 4 unit tests, strict TS |
| CI pipeline | β Python 3.10/3.11/3.12 + TS typecheck/test |
| Mock provider (keyless testing) | β Done |
| Providers: OpenAI, Anthropic, Ollama, mock | β Done |
| Gemini provider | β
Done β --provider gemini |
| Groq provider (free tier) | β
Done β --provider groq |
Semantic scoring (--scoring semantic) |
β Done |
| pass@k + cost + latency metrics | β Done |
Web dashboard (agenteval serve) |
β Done β local, zero-dep |
| GitHub Actions reusable workflow | β Done β see docs |
| Docker image (multi-arch GHCR) | β Done β see docs |
See the issues for what's next, GitHub Actions integration for CI setup, and the commit history for recent progress.
git clone https://github.com/rexblade58/agenteval.git
cd agenteval
pip install -e packages/core
agenteval run --provider mock --suite allexport OPENAI_API_KEY=sk-...
agenteval run --provider openai --model gpt-4o-mini --suite codegen \
--format json --output reports/openai-codegen.jsonReports are written in a stable JSON schema (schema_version, generated_at,
metrics, per-task results) β see examples/reports/ for samples.
export ANTHROPIC_API_KEY=sk-ant-...
agenteval run --provider anthropic --model claude-3-5-sonnet-latest --suite qaexport GEMINI_API_KEY=AIza...
agenteval run --provider gemini --model gemini-2.0-flash --suite reasoningexport GROQ_API_KEY=gsk_...
agenteval run --provider groq --model llama-3.3-70b-versatile --suite codegenagenteval run --provider mock --suite qa --scoring semanticagenteval run --provider ollama --model llama3.2 --suite reasoningagenteval run --provider mock --suite all --output reports/mock.json
agenteval serve --dir reports
# β http://127.0.0.1:8000 (accuracy/cost/latency trends, provider comparison)import { evaluateMock, runCli } from '@agenteval/sdk';
const report = runCli({
provider: 'openai',
model: 'gpt-4o-mini',
suite: 'codegen',
});
console.log(`Accuracy: ${(report.accuracy * 100).toFixed(1)}%`);agenteval/
βββ packages/
β βββ core/ Python evaluation engine
β β βββ agenteval/
β β βββ cli.py argparse CLI
β β βββ providers.py OpenAI / Anthropic / Ollama / mock
β β βββ evaluator.py pass@k engine + scoring
β β βββ tasks.py built-in task suites
β β βββ report.py JSON + Markdown reports
β βββ sdk-ts/ TypeScript SDK
βββ examples/ Runnable examples + sample reports
βββ docs/ Guides
βββ .github/workflows/ CI (tests, lint, publish)
Providers implement a single method:
class MyProvider(BaseProvider):
name = "my-provider"
def complete(self, messages, temperature=0.7) -> ProviderResult:
# call your API, return ProviderResult(text=..., latency_ms=..., ...)
...Register it in PROVIDER_REGISTRY and it works with the CLI, SDK, and reporting β no other changes needed.
Planned work is tracked as GitHub issues β community PRs are very welcome.
- Web dashboard with historical comparisons β
agenteval serve - Semantic similarity scoring for QA tasks β
--scoring semantic - Google Gemini provider β
--provider gemini - Groq provider with free-tier models β
--provider groq - GitHub Actions reusable workflow β
uses: .../eval.yml@main - Docker image for self-hosting β
ghcr.io/rexblade58/agenteval - Human-in-the-loop task review
- Adversarial / robustness evaluation
- Agent trace evaluation (multi-step tool calls)
See CONTRIBUTING.md. Bug reports, provider PRs, and new task suites are all welcome.
MIT Β© Menard Rosal