Exgentic - General agent evaluation
Project description
Evaluate any agent on any benchmark in the simplest way possible
What is Exgentic?
Exgentic is a universal evaluation framework that enables standardized testing of AI agents across diverse benchmarks and domains. It provides a consistent interface for evaluating any agent on any benchmark, making it easy to compare performance, reproduce results, and ensure your agent works reliably across different tasks and environments.
Who is it for?
- General Audience - Visit www.exgentic.ai to explore the first general agent leaderboard comparing leading agents and frontier models across varied tasks.
- Agent Builders - Evaluate your agents comprehensively across multiple domains and benchmarks.
- Researchers & Component Developers - Test agentic components (memory, context compression, planning) across different agents and domains.
- Benchmark Builders - Evaluate your benchmark across multiple agents to ensure meaningful differentiation.
Quick Start
Installation
uv tool install exgentic
API Credentials
export OPENAI_API_KEY=...
# or
export ANTHROPIC_API_KEY=...
Run an Evaluation
# List available benchmarks and agents
exgentic list benchmarks
exgentic list agents
# Evaluate an agent on a benchmark
exgentic evaluate --benchmark tau2 --agent tool_calling --subset retail --num-tasks 2 \
--model gpt-4o \
--set benchmark.user_simulator_model="gpt-4o"
Benchmarks are automatically set up in an isolated virtual environment on first run — no manual installation needed. You can also set them up explicitly:
exgentic setup --benchmark tau2
exgentic setup --agent litellm_tool_calling
For full container isolation, use the Docker runner (--set benchmark.runner=docker). You only need Docker installed and running:
exgentic evaluate --benchmark tau2 --agent tool_calling --subset retail --num-tasks 2 \
--model gpt-4o \
--set benchmark.runner=docker \
--set benchmark.user_simulator_model="gpt-4o"
Python API
To use exgentic as a library, install it first:
uv add exgentic # or: pip install exgentic
from exgentic import evaluate
results = evaluate(
benchmark="tau2",
agent="tool_calling",
subset="retail",
num_tasks=2,
model="gpt-4o",
benchmark_kwargs={"user_simulator_model": "gpt-4o"},
)
For more examples, see the examples/ directory.
Available Benchmarks
exgentic list benchmarks
| Benchmark | Description |
|---|---|
| tau2 | Simulated customer support tasks across multiple domains (retail, airline, banking) |
| appworld | Multi-app API environment testing agents' ability to interact with application interfaces |
| browsecompplus | Web search and browsing benchmark for information retrieval and navigation |
| swebench | Software engineering benchmark for resolving real-world GitHub issues |
| hotpotqa | Multi-hop question answering over Wikipedia |
| gsm8k | Grade school math word problems with optional calculator tool |
Available Agents
| Agent | Description |
|---|---|
| LiteLLM Tool Calling | Generic tool-calling agent via LiteLLM |
| SmolAgents | HuggingFace SmolAgents framework |
| OpenAI MCP | OpenAI Responses API with MCP tools |
| Claude Code | Anthropic Claude Code agent |
| Codex CLI | OpenAI Codex CLI agent |
| Gemini CLI | Google Gemini CLI agent |
Dashboard
exgentic dashboard
Output Structure
Each run creates its own directory under outputs/<run_id>/:
outputs/<run_id>/
├── results.json # Overall scores, costs, per-session statistics
├── benchmark_results.json # Benchmark-specific aggregated results
├── run/
│ ├── config.json # Snapshot of benchmark and agent configuration
│ ├── run.log # Main execution log
│ └── warnings.log # Warnings during execution
└── sessions/<session_id>/
├── config.json # Session configuration
├── results.json # Session results
├── trajectory.jsonl # One JSON line per step (action + observation)
├── agent/
│ └── agent.log # Agent execution log
└── benchmark/
├── results.json # Benchmark-specific results
└── session.log # Benchmark session log
CLI Reference
# Discover
exgentic list benchmarks
exgentic list subsets --benchmark tau2
exgentic list tasks --benchmark tau2 --subset retail --limit 5
exgentic list agents
exgentic setup --benchmark tau2
# Run
exgentic evaluate --benchmark tau2 --agent tool_calling --subset airline --num-tasks 10
exgentic batch run --benchmark tau2 --agent tool_calling --subset airline --num-tasks 10
# Inspect
exgentic status --benchmark tau2 --agent tool_calling --subset airline --num-tasks 10
exgentic preview --benchmark tau2 --agent tool_calling --subset airline --num-tasks 10
exgentic results --benchmark tau2 --agent tool_calling --subset airline --num-tasks 10
# Analyze
exgentic compare --agents tool_calling openai --benchmark tau2
# Explore
exgentic dashboard
Advanced
Model Configuration
exgentic evaluate --benchmark tau2 --agent tool_calling --subset retail --num-tasks 2 \
--set agent.model.temperature=0.2
Supported fields: temperature, top_p, max_tokens, reasoning_effort, num_retries, retry_after, retry_strategy
Run Limits
exgentic evaluate --benchmark tau2 --agent tool_calling --subset retail --num-tasks 2 \
--max-steps 100 --max-actions 100
Sessions stop at either limit and record limit_reached status. Default: 100 for both.
HuggingFace
Use HuggingFace models or run evaluations on HuggingFace Jobs. See docs/huggingface.md.
How It Works
To learn more about Exgentic's architecture and design, see our arXiv paper.
Development
For local development, editing, and contributing, see DEVELOPMENT.md.
Contributing
We welcome issues and pull requests! See CONTRIBUTING.md for guidelines.
Citing Exgentic
@misc{bandel2026generalagentevaluation,
title={General Agent Evaluation},
author={Elron Bandel and Asaf Yehudai and Lilach Eden and Yehoshua Sagron and Yotam Perlitz and Elad Venezian and Natalia Razinkov and Natan Ergas and Shlomit Shachor Ifergan and Segev Shlomov and Michal Jacovi and Leshem Choshen and Liat Ein-Dor and Yoav Katz and Michal Shmueli-Scheuer},
year={2026},
url={https://arxiv.org/abs/2602.22953},
}
License
Apache License 2.0 — see LICENSE.
Support
For questions and support, open an issue on GitHub.
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 exgentic-0.3.0.tar.gz.
File metadata
- Download URL: exgentic-0.3.0.tar.gz
- Upload date:
- Size: 463.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
baeafe31963a885ac2fd411f9d387a07faa2373bb2e95bf70a1a601ca66ca8ef
|
|
| MD5 |
620b4b4d498bd326c4790d1ad0835844
|
|
| BLAKE2b-256 |
12dfac0cd4416ce95dc7f48a93961015d3edbbd8183502e99ebb0738ae4d547c
|
Provenance
The following attestation bundles were made for exgentic-0.3.0.tar.gz:
Publisher:
publish-pypi.yml on Exgentic/exgentic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
exgentic-0.3.0.tar.gz -
Subject digest:
baeafe31963a885ac2fd411f9d387a07faa2373bb2e95bf70a1a601ca66ca8ef - Sigstore transparency entry: 1193365398
- Sigstore integration time:
-
Permalink:
Exgentic/exgentic@5c110a390e69987f13f512f6f97874dc6346665f -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/Exgentic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@5c110a390e69987f13f512f6f97874dc6346665f -
Trigger Event:
push
-
Statement type:
File details
Details for the file exgentic-0.3.0-py3-none-any.whl.
File metadata
- Download URL: exgentic-0.3.0-py3-none-any.whl
- Upload date:
- Size: 352.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99c1186823351cfff92a91044b36493d35ce34a9ecf95a10ecfb95bf62816efa
|
|
| MD5 |
57543e7e03a40202fab22524c9198bab
|
|
| BLAKE2b-256 |
fb876adde810aea520c84bb1d187ae9c4af6b3902fe457329246d5514e9778ad
|
Provenance
The following attestation bundles were made for exgentic-0.3.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on Exgentic/exgentic
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
exgentic-0.3.0-py3-none-any.whl -
Subject digest:
99c1186823351cfff92a91044b36493d35ce34a9ecf95a10ecfb95bf62816efa - Sigstore transparency entry: 1193365408
- Sigstore integration time:
-
Permalink:
Exgentic/exgentic@5c110a390e69987f13f512f6f97874dc6346665f -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/Exgentic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@5c110a390e69987f13f512f6f97874dc6346665f -
Trigger Event:
push
-
Statement type: