An agent eval framework is a tool that scores how an AI agent behaves across a full task, not just whether one reply reads well. It tracks the plan the agent forms, the tools it calls, and whether the task actually finishes, then turns that into a repeatable pass or fail signal.
Most teams start by eyeballing transcripts. That works for the first ten agent runs and breaks down by the hundredth, once tool arguments start drifting and nobody notices until a customer does.
What Does an Agent Eval Framework Actually Test?
An agent eval framework tests three layers that a plain LLM eval never touches: the plan, the actions, and the outcome. The plan layer checks whether the agent's reasoning steps make sense given the task. The action layer checks whether it called the right tools with the right arguments. The outcome layer checks whether the task got done.
A single-turn LLM eval stops at "was this response good." If you are still settling the basic definition of an eval and its four components, start there; an agent can produce a fluent, well-reasoned response and still fail the task, because it called the wrong tool, passed a malformed argument, or stopped two steps short of completion. None of that shows up if you only grade the final message.
This is why agent eval frameworks default to scoring a trajectory, the full ordered sequence of messages, tool calls, and tool results, rather than a single output. Get the trajectory model wrong and every metric built on top of it inherits the error.
How Is Agent Evaluation Different From Grading One LLM Call?
Grading one LLM call is a closed problem: one input, one output, one rubric. Grading an agent means grading a process with branches, retries, and state that changes as the run progresses.
Three properties make agent runs harder to score than single calls:
-
Multiple valid paths. Two agents can reach the same correct outcome through different tool sequences. A rigid step-by-step match penalizes the agent that took a legitimate shortcut.
-
Compounding errors. A wrong tool argument at step 2 can still produce a plausible-looking final answer at step 8, so grading only the last message misses the actual defect.
-
Non-determinism across attempts. The same agent, same input, same model version can pass on one run and fail on the next. A single pass or fail from one trial tells you less than it looks like it does.
That last point is why agent eval frameworks increasingly score cases across repeated attempts instead of one run. The direction of the metric matters: pass@k, as defined in the Codex evaluation work, counts a case as solved if any of k attempts passes, which measures best-case capability. Reliability testing wants the inverse, written pass^k: a case counts as passing only when the agent succeeds on all k independent attempts. A framework that reports a single pass rate per case is measuring something closer to luck than reliability.
A 2025 survey of LLM agent evaluation work organizes this fragmented landscape along two axes: what to evaluate (behavior, capability, reliability, safety) and how to evaluate it (interaction mode, datasets, metrics, tooling). Read as a whole, the survey makes the same point this section does from a different direction: an agent eval framework has to grade a process, not a single graded artifact.
What Should an Agent Eval Framework Measure?
A working agent eval framework scores at least four things, and most of the frameworks below expose each as a separate metric rather than folding them into one score.
| Layer | What it checks | Example evaluator |
|---|---|---|
| Trajectory | Did the agent's step sequence match an expected or acceptable path? | Exact, in-order, or any-order trajectory matching |
| Tool-call correctness | Did it call the right tool with the right arguments? | Tool selection accuracy, argument accuracy |
| Task completion | Did the underlying goal actually get satisfied? | Task adherence, task completion, goal success rate |
| Quality and safety | Was the response coherent, grounded, and free of harmful content? | Coherence, groundedness, harmfulness checks |
These layers get scored at three scopes. End-to-end scoring grades only the final outcome. Trajectory scoring grades the whole ordered run. Component-level scoring grades one decision in isolation, such as a single tool selection. Most teams need all three: component-level to localize a defect, trajectory to catch compounding errors, end-to-end to confirm the user actually got what they asked for.
Microsoft's Agent Framework evaluation documentation names this same split explicitly: its built-in evaluators cover agent behavior (intent resolution, task adherence, task completion, task navigation efficiency), tool usage (tool call accuracy, tool selection, tool input accuracy, tool call success), and quality (coherence, fluency, relevance, groundedness), and its hosted Foundry evaluator defaults to relevance, coherence, and task adherence, adding tool call accuracy automatically whenever the items being scored carry tool definitions.
AWS's Strands Evals takes a similar layered approach but scores tool-call sequences against three matching strategies: exact match, in-order match, and any-order match, alongside a seven-point helpfulness scale and a five-point faithfulness scale for the response layer. That distinction between rigid and flexible trajectory matching matters in practice: exact match is right for a compliance script, any-order match is right for an agent with real latitude in how it solves a task.
LLM-as-Judge or Rule-Based Scoring: Which Do You Need?
Both, in different places. Rule-based checks are deterministic: did the agent call get_weather, does the output contain a required disclosure, did the tool arguments match a schema. They cost nothing per run and never disagree with themselves on a re-run.
Rubric scoring with an LLM-as-judge earns its cost where a rule cannot express the target: was the agent's explanation actually helpful, did it stay in character, did it handle an ambiguous request sensibly. A closer look at LLM-as-judge evaluation covers the calibration step this depends on: label a sample by hand first, then check the judge's scores against that sample before trusting it in a CI gate.
Judge-based scoring carries known failure modes worth planning around. Position bias favors whichever answer a judge sees first. Verbosity bias rewards longer answers regardless of whether they are more correct. Neither disappears by switching models; both shrink with a calibrated rubric and a fixed answer order.
A working setup usually looks like this: rule-based checks for anything expressible as a schema or exact match, LLM-as-judge for everything else, and human review reserved for building and periodically re-checking the calibration set the judge is graded against.
Open-Source Agent Eval Frameworks, Compared
Open-source AI agent frameworks such as LangGraph don't usually ship trajectory-level eval tooling in the same package. CrewAI is a partial exception, with a crewai test command that reruns a crew and scores each task on a 1-to-10 scale, though it does not do trajectory or tool-argument matching. Even where an agentic framework does publish a full evaluation library, as the Strands Agents project does, it ships separately and plugs into the same traces or tool-call logs your agent already produces.
| Framework | Maintainer | License | Cost | Built for | Trajectory match | Multi-turn / simulated user | Tool-call scoring | LLM-as-judge | Runs in CI |
|---|---|---|---|---|---|---|---|---|---|
| DeepEval | Confident AI | Apache 2.0 | Free (paid Confident AI hosting tier available) | Pytest-native agent, RAG, and chatbot evals | Yes, via task completion and step efficiency metrics | Yes, conversation simulation | Yes, tool correctness and argument correctness | Yes, G-Eval and 50-plus metrics | Yes |
| Strands Evals | AWS (Strands Agents) | Apache 2.0 | Free | Agents built on the Strands SDK | Yes, exact, in-order, any-order matching | Yes, ActorSimulator | Yes, tool selection and parameter accuracy | Yes, customizable rubrics | Yes |
| agentevals | LangChain | MIT | Free | Lightweight scoring functions for LangGraph-style agents | Yes, strict, unordered, subset, and superset matching | No simulated user; multi-turn via graph trajectory evaluators | Via trajectory matching | Yes, trajectory LLM-as-judge | Yes, as a library |
| Ragas | Vibrant Labs / OSS community | Apache 2.0 | Free | RAG evaluation extended to agent and tool-use metrics | Partial | Yes, native multi-turn message sequences | Yes, tool call accuracy and tool call F1 | Yes | Yes |
| MLflow evaluate | MLflow (Databricks-backed OSS) | Apache 2.0 | Free (paid Databricks hosting tier available) | Agent evaluation on top of MLflow's tracing and experiment tracking | Via logged traces | Via traces | Yes, custom scorers | Yes, built-in judges | Yes |
All five install as a library rather than requiring a platform. DeepEval and MLflow both have commercial hosted tiers you can graduate onto if you want the dashboard without building it.
Where Does lmms-eval Fit In?
It doesn't replace an agent eval framework, and treating it as one is a mismatch worth avoiding. lmms-eval is a multimodal model evaluation toolkit built by EvolvingLMMs-Lab, covering more than 100 benchmark tasks across image, video, and audio understanding for large multimodal models.
That still makes it the wrong tool for scoring your own agent's production behavior. Version 0.7, released in February 2026, added an agentic output type that runs iterative tool-call loops against deterministic simulators and reports trace-level metrics, but it does so on fixed benchmark tasks such as a telecom-support scenario with four tools and eight steps. It measures how a multimodal model performs on someone else's agentic benchmark, not whether your agent called your tools correctly on your task. It is the right tool if your agent's failure mode traces back to the underlying multimodal model itself, for example an agent that misreads a screenshot before deciding which tool to call. In that case, benchmark the model with lmms-eval and evaluate the agent's decisions with a trajectory-aware framework separately. Treating the two as interchangeable is how teams end up with a strong vision benchmark score and an agent that still fails its actual task.
How Do You Wire Agent Evals Into CI/CD?
Running evals by hand catches regressions the week you remember to run them. Wiring them into CI catches regressions on every change.
-
Build a fixed test set first. Pull real failure cases from production logs and support tickets before writing synthetic ones; synthetic-only sets miss the failure modes that actually happen.
-
Separate smoke checks from full runs. Run cheap rule-based checks (schema validation, required tool calls) on every commit, and reserve the slower LLM-as-judge pass for pull requests or a nightly run.
-
Set a pass threshold before you need one. Decide what score counts as a regression in advance, not after a bad release ships and everyone argues about whether it counted.
-
Repeat flaky cases before trusting them. Run non-deterministic tasks multiple times and require a minimum pass rate across attempts, not a single pass, before treating the case as reliable.
-
Gate merges on the smoke tier, alert on the full tier. A CI gate that blocks every merge on a slow LLM-as-judge run gets disabled within a month; a fast gate plus an alerting full run tends to survive.
# .github/workflows/agent-evals.yml
- name: Smoke tier (every commit)
run: pytest tests/evals -m "rule_based" --maxfail=1
- name: Full tier (pull requests only)
if: github.event_name == 'pull_request'
run: deepeval test run tests/evals -m "judge" -r 3
No CLI flag sets the minimum pass rate; assert it inside the test from the repeated results, since -r repeats each case but leaves the threshold to your metric definition.
For a step-by-step walkthrough of building an eval suite from the first failure case through production monitoring, see building AI agent evals in eight steps.
How Do You Evaluate a Multi-Turn Agent?
A fixed single-turn test fixture only checks whether the agent handles one message correctly in isolation. It misses the failures that only show up across a conversation: an agent that loses context after a handoff, repeats a question the user already answered, or fails to recover after a user changes their mind mid-task.
Simulated-user testing addresses this by running a second model as the "user," scripted to pursue a goal with some latitude in how it phrases and pivots, rather than replaying a fixed transcript. Strands Evals runs this as its ActorSimulator; DeepEval runs it as conversation simulation. Both let you generate many conversation variants from one scenario definition instead of hand-writing every turn. Cekura runs simulated-user testing the same way on voice and chat agents, generating conversation variants from a scenario definition and scoring each run against the goal rather than the final message.
This is also where the online-versus-offline split matters. Offline evaluation runs a fixed or simulated test set before you ship, the same way the CI gate above does. Online evaluation scores live production traffic after release, catching drift that no pre-release test set anticipated because the failure only appears with real users asking things your test set never covered. A CI-only suite answers "did this change break something we already know to check." Production monitoring answers "is something breaking that we didn't know to check for."
Open-Source Frameworks or a Hosted Eval Platform: What's the Real Tradeoff?
An open-source library gives you full control over metrics and no subscription cost, but you build and maintain the trajectory matchers, the trace parsing, the dashboards, and the alerting yourself. That is a real engineering budget, not a footnote.
A hosted platform trades that setup time for a recurring cost and less control over exactly how a metric is computed. Cekura tests, monitors, and self-improves voice and chat agents against this same trajectory-and-outcome model, running repeated trials per scenario rather than a single pass, because a case that passes once and fails on the next identical attempt is not actually reliable.
Per Cekura's benchmarks, which ran seven production voice-agent configurations through 82 scenarios with three retained repeats each, repeatable reliability (the share of scenarios where all three attempts passed) ranged from 30.5% to 75.6% depending on the stack. Failed and non-connecting calls stay in that denominator. A framework that scores one attempt per case cannot produce that number at all, which is the point: the spread only becomes visible once you repeat.
Neither approach is strictly better. A small team validating one internal agent can build what it needs on DeepEval or agentevals in an afternoon. A team shipping a customer-facing agent across many scenarios, where a silent regression costs a support ticket or a lost customer, usually finds the engineering cost of maintaining that tooling in-house outweighs a subscription.
How Do You Choose the Right Framework for Your Team?
Match the framework to your stack and your failure budget, not to whichever tool has the most GitHub stars. Four questions settle it faster than a feature matrix, and they are worth answering before a single test case gets written.
-
Check what you're already logging. If your agent already emits OpenTelemetry traces, a framework that reads traces directly (MLflow, Strands Evals) saves you an integration step.
-
Decide how rigid your correct path is. A compliance workflow with one correct tool sequence needs exact trajectory matching. An open-ended research agent needs any-order or LLM-as-judge scoring instead.
-
Estimate your judge budget. LLM-as-judge calls cost money and add latency to your CI run. Push as much scoring as possible to rule-based checks first, and reserve judge calls for what a rule genuinely cannot express.
-
Decide who owns production monitoring. A CI-only eval suite catches regressions before deploy but says nothing about drift after release. Cekura's own voice AI evaluation metrics research covers this specific gap, tracking production metrics like pacing, interruption handling, and workflow adherence after an agent ships, not just before.
Frequently Asked Questions
What is an agent eval framework?
An agent eval framework is a tool or library that scores an AI agent's full task run, not just one response. It typically checks the agent's plan, its tool calls, and whether the task completed, and reports the result as a repeatable pass or fail rather than a subjective read of a transcript.
What's the difference between agent evaluation and LLM evaluation?
LLM evaluation grades one input-output pair against a rubric. Agent evaluation grades a multi-step trajectory: the plan, every tool call and its arguments, and whether the end goal was actually achieved. An agent can pass an LLM-style quality check on its final message and still fail the underlying task.
Should I use LLM-as-judge or rule-based checks for agent evals?
Use rule-based checks for anything expressible as an exact match, schema, or required tool call, since they are free and deterministic. Reserve LLM-as-judge scoring for qualities a rule cannot express, like whether an explanation was actually helpful, and calibrate the judge against a hand-labeled sample before trusting it.
Is lmms-eval an agent evaluation framework?
No. lmms-eval is a multimodal model benchmarking toolkit from EvolvingLMMs-Lab that scores large multimodal models across text, image, video, and audio tasks. Version 0.7 added an agentic output type that runs tool-call loops on fixed benchmark scenarios, but it benchmarks a model against those scenarios rather than evaluating your own agent's trajectories in your own stack, so it complements an agent eval framework rather than replacing one.
How many test cases does an agent eval suite need?
Enough to cover your real failure modes, not an arbitrary round number. Start from actual production failures and support tickets rather than synthetic cases alone, and prioritize a set small enough to run on every pull request over a larger set that only runs occasionally, since an eval suite nobody runs catches nothing.
How do I evaluate multi-step task completion instead of just the final answer?
Score the full trajectory against the goal, not the last message. Frameworks like Strands Evals and Microsoft's Agent Framework expose dedicated task-completion and task-adherence evaluators for this, and running the same case multiple times before counting it as passing catches the cases that succeed by luck on a single attempt. Cekura's benchmarks make the gap concrete: across seven production voice-agent configurations and 82 scenarios, the share of scenarios passing all three retained attempts ranged from 30.5% to 75.6%, with failed and non-connecting calls left in the denominator.
Cekura runs this same trajectory-and-outcome evaluation model on voice and chat agents in production. Cekura then feeds every failure back into the agent's own improvement loop instead of stopping at a report. Book a demo to see it score a real agent.






