Open-source CLI framework for evaluating RAG systems and AI Agents
Project description
OpenAgent Eval
Open-source CLI framework for evaluating RAG systems and AI Agents.
Overview
OpenAgent Eval is a local-first, developer-friendly evaluation framework that runs entirely from the command line. It helps developers measure quality, compare experiments, detect hallucinations, and identify retrieval failures in their RAG systems.
Goal: Become the pytest of AI evaluation.
Features
- Local-First - No cloud services, dashboards, or authentication required
- CLI + SDK - Use via command line or import as a Python library
- Framework Agnostic - Works with any RAG implementation (LangChain, LlamaIndex, custom)
- Plugin-Based - Extend with custom metrics, providers, and report generators
- Comprehensive Metrics - Retrieval, generation, performance, and cost evaluation
- Beautiful Reports - Terminal, Markdown, HTML, and JSON output formats
- Failure Analysis - Identify why evaluations fail, not just that they failed
Installation
pip install openagent-eval
For development:
git clone https://github.com/openagenthq/openagent-eval.git
cd openagent-eval
uv sync
Quick Start
1. Initialize Configuration
oaeval init
This creates a config.yaml file with default settings.
2. Configure Your Setup
Edit config.yaml:
dataset: data/questions.json
retriever:
provider: chroma
settings:
collection_name: my_docs
llm:
provider: openai
model: gpt-4o
metrics:
- faithfulness
- answer_relevancy
- hallucination
- latency
output: terminal
output_dir: ./reports
3. Run Evaluation
oaeval run config.yaml
4. View Results
oaeval report latest
CLI Commands
| Command | Description |
|---|---|
oaeval init |
Create configuration file |
oaeval run <config> |
Run evaluation pipeline |
oaeval report <id> |
View evaluation reports |
oaeval compare <a> <b> |
Compare two experiments |
oaeval list |
List previous evaluations |
oaeval doctor |
Check environment and dependencies |
SDK Usage
Use OpenAgent Eval as a Python library:
from openagent_eval import Evaluator
evaluator = Evaluator(config_path="config.yaml")
result = evaluator.evaluate(dataset)
print(result.summary)
Evaluation Categories
Retrieval Metrics
- Context Precision
- Context Recall
- Recall@K / Precision@K
- Hit Rate
- Mean Reciprocal Rank (MRR)
- NDCG
Generation Metrics
- Faithfulness (via Ragas)
- Answer Relevancy (via Ragas)
- Hallucination Detection (via DeepEval)
- Semantic Similarity
- Exact Match / F1 Score
- BLEU / ROUGE
- BERTScore
Performance Metrics
- Embedding latency
- Retrieval latency
- LLM latency
- Total latency
Cost Metrics
- Token counting (prompt, completion, total)
- Cost estimation per provider
- Total experiment cost
Supported Providers
LLM Providers
- OpenAI
- Google Gemini
- Anthropic
- Groq
- OpenRouter
- Ollama (local)
Retriever Providers
- Chroma
- (More coming soon)
Project Structure
openagent-eval/
├── openagent_eval/ # Main package
│ ├── cli/ # CLI commands (Typer)
│ ├── config/ # Configuration system (Pydantic)
│ ├── core/ # Core orchestration
│ ├── datasets/ # Dataset loaders
│ ├── metrics/ # Evaluation metrics
│ ├── providers/ # LLM/Retriever adapters
│ ├── reports/ # Report generators
│ ├── plugins/ # Plugin system
│ └── exceptions/ # Custom exceptions
├── tests/ # Test suite
├── pyproject.toml # Project configuration
└── README.md
Development
Setup
# Clone repository
git clone https://github.com/openagenthq/openagent-eval.git
cd openagent-eval
# Install dependencies
uv sync
# Run tests
uv run pytest
# Run linter
uv run ruff check .
# Format code
uv run ruff format .
Running Tests
# Run all tests
uv run pytest
# Run with coverage
uv run pytest --cov=openagent_eval
# Run specific test file
uv run pytest tests/unit/test_exceptions.py
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Roadmap
v1.0 (Current)
- RAG evaluation
- CLI + SDK interfaces
- Plugin architecture
- Multiple report formats
v2.0 (Planned)
- AI Agent evaluation
- Tool-call evaluation
- Planning evaluation
- Memory evaluation
- Multi-agent evaluation
v3.0 (Future)
- CI/CD integration
- GitHub Action
- Cloud synchronization
- Hosted evaluation platform
License
Licensed under the Apache License, Version 2.0 - see LICENSE for details.
Support
- Documentation: docs.openagenthq.com
- Issues: GitHub Issues
- Discussions: GitHub Discussions
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
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 openagent_eval-0.1.0.tar.gz.
File metadata
- Download URL: openagent_eval-0.1.0.tar.gz
- Upload date:
- Size: 87.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e83a56b17a2769ec5fcef51f51355ea5371c3ed4dad6820fd26aa4aed263b893
|
|
| MD5 |
0465976b31de537a30080e625de077e7
|
|
| BLAKE2b-256 |
6abc3e51931089b317a9d72a9f78dea63056a7ad84a649e14de1b9e4f8ab562d
|
Provenance
The following attestation bundles were made for openagent_eval-0.1.0.tar.gz:
Publisher:
release.yml on OpenAgentHQ/openagent-eval
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openagent_eval-0.1.0.tar.gz -
Subject digest:
e83a56b17a2769ec5fcef51f51355ea5371c3ed4dad6820fd26aa4aed263b893 - Sigstore transparency entry: 2136580171
- Sigstore integration time:
-
Permalink:
OpenAgentHQ/openagent-eval@7654c79656a057c55c10081fc52f5c31c4296dbe -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/OpenAgentHQ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7654c79656a057c55c10081fc52f5c31c4296dbe -
Trigger Event:
push
-
Statement type:
File details
Details for the file openagent_eval-0.1.0-py3-none-any.whl.
File metadata
- Download URL: openagent_eval-0.1.0-py3-none-any.whl
- Upload date:
- Size: 151.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a47f133bc9f3000998b9fc1aaeb06d8dd6af54c7dc5892579616d68a7657f77b
|
|
| MD5 |
eb26a166e894f37725677d97c37db7c8
|
|
| BLAKE2b-256 |
7a88915039a6ed102c45fe637bd4c9f52fbd596a7cac1d207af75c4e12ae69e9
|
Provenance
The following attestation bundles were made for openagent_eval-0.1.0-py3-none-any.whl:
Publisher:
release.yml on OpenAgentHQ/openagent-eval
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
openagent_eval-0.1.0-py3-none-any.whl -
Subject digest:
a47f133bc9f3000998b9fc1aaeb06d8dd6af54c7dc5892579616d68a7657f77b - Sigstore transparency entry: 2136580644
- Sigstore integration time:
-
Permalink:
OpenAgentHQ/openagent-eval@7654c79656a057c55c10081fc52f5c31c4296dbe -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/OpenAgentHQ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7654c79656a057c55c10081fc52f5c31c4296dbe -
Trigger Event:
push
-
Statement type: