Characteristics
- An eval has a stable ID.
- An eval targets an agent or a tool.
- An eval loads examples from inline data, JSON, or JSONL.
- An eval records
input, optionalreference, and optionalmetadatafor each example. - An eval uses metrics such as exact match, contains, JSON match, required tool calls, forbidden tool calls, no failed tools, retrieval recall, citation precision and recall, latency, tokens, cost, and rubric judges.
- An eval produces
summary.jsonandresults.jsonlartifacts, with optional raw JSON and JUnit XML output.
Boundary
An eval is the definition. An eval run is one execution of that definition. A report is the result of the run. Durable eval runs use run kindeval and target
IDs such as eval:deep-research.
Keep evals separate from tests. Tests check code behavior against explicit
assertions. Evals measure agent behavior, retrieval behavior, tool behavior, and
operational budgets across datasets.
Source files
Eval files live inevals/ and export an eval definition:
eval:deep-research. You can set id explicitly when a
stable ID must differ from the file path.
Dataset fields
Agent behavior
Agent evals run against the same target adapter as the real runtime. Use tool metrics andcheck assertions when the pass condition depends on behavior, not
only final text:
record.trace.toolCalls. Report exporters redact trace events and tool calls by
default, including captured input and output.
Local agent evals can use mockTools to replace the agent’s tool set for one
run while keeping the real agent answer and trace. Static mock tools are reused;
resolver mock tools are created once per example repetition. This is strict and
local-only: hosted AG-UI evals reject mockTools before calling the endpoint,
and skills agents retain only the read-only load_skill and
load_skill_reference tools unless the eval explicitly supplies more tools.
Mocked evals use agent.generate({ tools }); there is no streaming equivalent.
Loaded-skill allowed-tool policies and delegation overrides are disabled while
mock tools are active; the mock tool map is the complete tool allowlist for that
generate() request.
Tool behavior
UseevalTool when the eval should measure one tool directly instead of an
agent deciding whether to call that tool. Tool evals write the dataset example to
record.input and the actual mapped tool input to record.executionInput.
Direct tool calls are normalized into record.trace.toolCalls, so the same tool
metrics and checks can assert input, output, status, and call count.
Studio integration
Studio should discover evals through the project discovery API, not by parsing files directly. The eval source metadata includesfilePath and exportName so
Studio can show a form editor for structured fields and fall back to source
editing when a definition is too dynamic. createEvalSourceDocument normalizes a
discovered eval into the form-editable source document used by Studio panels.
For implementation steps, see Evals. For exact APIs, see
veryfront/eval.