Catalog PyPI
PACKAGE EXPLORERView in registry

agent-eval-forge

PyPI

A framework-agnostic evaluation harness for tool-using AI agents. Define scenario packs, run agents consistently, score outcomes and trajectories, and gate releases with evidence.

agentaibenchmarkcievaluationframework-agnosticharnessllmpytestquality-assurancescenariosscoringtesting
Versions collected1
Direct dependencies25From release 0.2.0
Last observed20 Oct, 21:52 UTC

README

Version 0.2.0 documentation

Agent Eval Forge

CI License: MIT Python 3.11+ PyPI Ruff Type checked Contributor Covenant OpenSSF Baseline

Stop unsafe agent changes from shipping.

pytest for agents — a framework-agnostic evaluation harness that catches regressions before you ship: correctness, tool discipline, safety boundaries, cost, and latency.


Why

You change a prompt, swap a model, or add a new tool. The demo looks great. Three days later, a customer hits a regression the demo never covered.

Agent teams change prompts, models, tools, and orchestration logic constantly — but most still judge progress by eyeballing a handful of examples. That works for demos. It fails for production. The final answer isn't the only thing that matters: the path taken, the tools selected, the arguments passed, the cost incurred, and the safety boundaries respected all matter.

EvalForge turns release decisions from anecdotes into evidence.

"Did the agent actually get better, or did it just change?"


What It Is

A release-discipline product for tool-using AI agents. Local-first, CI-second. Strong default rubrics out of the box, all overridable. Built for one job: deciding whether an agent change is safe to ship.

CapabilityDescription
Scenario packsYAML-defined evaluation scenarios with inputs, tools, expected behaviors, and scoring rules
Trajectory scoringScore the agent's path — not just the final answer. Tool selection, argument quality, step efficiency
Safety gatingCatch disallowed tool use, policy violations, and data boundary breaches before they ship
Regression detectionCompare candidate versions against explicit golden baselines at scenario, family, and pack level
Framework-agnosticAdapters for subprocess, Python import, and HTTP. Proven targets: LangGraph, PydanticAI, CrewAI, OpenAI Agents SDK, smolagents, AutoGen, LlamaIndex, Claude Agent SDK, Google ADK
CI-nativeRuns locally for developer decisions, in CI for enforcement. Structured exit codes for safety violations
Deterministic + LLM judgeCheap deterministic checks first, semantic LLM-as-judge only when needed
Security modelSandbox mode, trust policies, audit trail, API key sanitization
Two-layer defenseEvalForge (Layer 2) catches integration failures that a judgment evaluator (Layer 1) cannot see — read the architecture
20 launch scenariosProduction-grade scenarios across 10 families, plus 8 security scenarios
External benchmarksSWE-bench and WebArena connectors

Product philosophy

  • Safety > Correctness > Efficiency — safety regressions fail by default
  • Explicit golden baselines — compare against what you accepted, not what happened to run last
  • Local-first, CI-second — catch issues before merge, enforce in CI
  • Strong default rubrics — credible pass/fail behavior out of the box
  • Framework-agnostic by adapter — not claimed, proven with tested integrations

What It Is Not

Not thisWhy
A generic LLM eval frameworkEvalForge goes deeper on scenario packs + trajectory/regression for agents
A hosted observability platformEvalForge is for evaluation and regression discipline, not production tracing ownership
An auto-prompt optimizerEvalForge diagnoses and measures — it does not mutate systems automatically in v0.1
A benchmark leaderboardThe focus is practical agent evaluation, not infinite leaderboard collection

Quickstart

# Install
pip install agent-eval-forge

# With framework adapters and judge backends
pip install agent-eval-forge[langgraph,pydanticai,judge]

# Or install all adapter families
pip install agent-eval-forge[all]

# Run a scenario pack against your agent
evalforge run \
  --pack scenarios/core-launch.yaml \
  --agent python:my_package.my_module:run \
  --baseline v1.0.0 \
  --judge openai:gpt-4o-mini

# Override the default function name (default: "run")
evalforge run \
  --pack scenarios/core-launch.yaml \
  --agent python:my_package.my_module \
  --agent-function handle_request \
  --baseline v1.0.0 \
  --judge openai:gpt-4o-mini

# Save a baseline once you're happy
evalforge baseline save --name v1.0.0 --run run-20260728-001

# Gate in CI
evalforge run --pack scenarios/core-launch.yaml --agent python:my_agent.py --ci

See the User Guide for a complete walkthrough — first eval in 5 minutes, all commands, and 12 real-world gotchas.


Launch Pack (v0.1)

20 scenarios across 10 families, plus 8 security scenarios:

#FamilyWhat it tests
1Single-Tool Factual RetrievalBounded lookup with the right tool
2Multi-Tool Retrieval SynthesisCombining evidence from multiple sources
3Structured JSON ExtractionTransforming messy input into valid JSON
4Tool Argument PrecisionRight tool, wrong arguments
5Tool AvoidanceNot using tools when none are needed
6Disallowed Tool RefusalRespecting tool policy boundaries
7Ambiguous Request ClarificationAsking before acting under ambiguity
8Budget-Constrained CompletionTrading off completeness and efficiency
9Graceful Timeout / Failure RecoveryRecovering cleanly from failing dependencies
10Coding-Agent RegressionDiff review, test failure classification
+Security ScenariosPrompt injection, exfiltration, SSRF, sandbox escape

All scenarios ship in scenarios/core-launch.yaml and scenarios/security-launch.yaml.


Framework Adapters

AdapterStatusAgent spec
Subprocessv0.1subprocess:./agent.py
Python Importv0.1python:my_pkg.agent:run
HTTPv0.1http:http://localhost:8000/run
LangGraphv0.1langgraph:my_pkg.graph:build_agent
PydanticAIv0.1pydanticai:my_pkg.agent:build_agent
CrewAIv0.2crewai:module:crew
OpenAI Agents SDKv0.2openai-agents:module:agent
smolagentsv0.2smolagents:module:build_agent
AutoGenv0.2autogen:module:build_agent
LlamaIndexv0.2llamaindex:module:build_agent
Claude Agent SDKv0.2claude:module:build_agent
Google ADKv0.2adk:module:build_agent

Install extras: pip install evalforge[<family>] or pip install evalforge[all] for all adapter families.


Scoring

Two layers, cheapest first:

  1. Deterministic scorers (always run, free, reproducible) — tool correctness, argument precision, schema validity, budget adherence, safety gates, grounding checks. 17 scorers built-in.

  2. LLM-as-Judge scorers (run only when configured) — output correctness, task completion, synthesis quality, hallucination detection, refusal quality. 11 judge metrics built-in. Backends: OpenAI, Anthropic, Ollama, MLX (Apple Silicon).

Evaluation hierarchy: Safety failures trump everything. Correctness regressions warn by default. Efficiency regressions are informational.

See the Scoring Guide for the full metric catalog, custom scorers, and failure taxonomy.


Security

⚠️ Running without --sandbox exposes your API keys and environment variables to the agent process. Always use --sandbox in CI. For untrusted scenario packs, also use --trust external which restricts adapters to sandboxed subprocess only.

The security model includes:

  • Sandbox mode — env stripping, filesystem isolation, optional Docker network isolation
  • Trust policies — trust field on packs, adapter/tool matrix enforced at validate/run
  • Audit trail — per-run append-only log of policy decisions
  • API key sanitization — deep-redaction in artifacts and logs

See Security Review (v0.2) for the current model.


Field Testing

EvalForge was validated against 19 real-world open-source agents (11 LangGraph + 8 PydanticAI) in v0.1.0. v0.2.0 adds 7 new adapter families (CrewAI, OpenAI Agents SDK, smolagents, AutoGen, LlamaIndex, Claude Agent SDK, Google ADK) for a total of 12 supported frameworks.

ReportScope
Field Test Reports — 08.01Roster scaled from 8 to 20 agents
Field Test Report — 08.02.202619-agent compatibility sweep, cloud tier comparison
Field Test PlanAgent selection, sourcing, config schema, acceptance criteria
Hard-Won LessonsReal-world integration and design lessons from 20+ agents

Project Status

MilestoneStatus
M0 — Scaffold✅
M1 — Core Runner✅
M2 — Scoring Engine✅
M3 — Comparison & Baselines✅
M4 — Launch Scenarios 1–5✅
M5 — Launch Scenarios 6–10✅
M6 — Framework Adapters✅
M7 — CLI & pytest✅
M8 — CI & Polish✅
M9 — Hardening & Security✅
M9.5 — Integration & Field Tests✅
M10 — Example Agents & DX✅
M11 — Scale-Up, Docker & CI✅
M12 — Ship v0.1.0 & Launch✅
M0.2.0 — Bug fixes & small features✅

See the WBS (v0.2) for the full milestone plan with GitHub issue tracking.


Documentation

DocumentDescription
User GuideStart here — installation, first eval, all commands, gotchas
PRDProduct requirements — the what and why, 20 canonical user journeys
SpecTechnical specification — architecture, data model, scoring, all scenarios
WBS (v0.2)Work breakdown — 36 issues across 3 phases
WBS (v0.1)Work breakdown — 13 milestones, GitHub issues linked
ArchitectureTwo-layer defense model — why EvalForge catches what judges miss
Scoring ComparisonModel-vs-deterministic scoring findings from JPS study
ScenariosScenario authoring — pack anatomy, metric reference, adversarial scenarios
ScoringScoring — phantom_step, scoring breakdown, custom scorers
CI IntegrationGitHub Actions, GitLab CI, Docker sandbox, three-gate scoring
Security Review (v0.2)Security model and hardening for v0.2.0
Adapters — LangGraphLangGraph adapter usage
Adapters — PydanticAIPydanticAI adapter usage
Adapters — CustomHow to write a custom adapter
External BenchmarksSWE-bench, WebArena connectors
Security Review (v0.1)Security model and hardening
Hard-Won LessonsReal-world lessons from 20+ agents
Field Test ReportsCompatibility sweep across tiers
CHANGELOGRelease history
CONTRIBUTINGHow to contribute
CODE OF CONDUCTCommunity standards
GOVERNANCEProject governance
SECURITYSecurity policy and reporting

Community


License

MIT

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.2.011 Aug 202625

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
deghosal-2026/agent-eval-forge

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 21:52 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:9192a746836463f4aea248fcd32ac9fb6c9d6a1962204cfe239a5ef29fcb6e97