docs/build/evals.md

Evals

An eval dataset is a list of cases for one agent: a message to send, and what a good turn looks like.

# evals/lead-basics.yaml
slug: lead-basics
name: Lead basics
agentSlug: northwind-lead
passThreshold: 0.8               # default 0.8
items:
  - input: What's at risk at Acme this week?
    expectedOutput: Names the open Acme deals and the risk on each, with sources.
    checks:
      - toolCalled: search_knowledge
      - outputNotContains: I don't have access
      - latencyUnderMs: 60000
  - input: Draft a follow-up to Contoso.
    checks:
      - toolCalled: propose_action
      - toolNotCalled: run_code

Checks

Deterministic: toolCalled, toolNotCalled, toolCalledWith, toolReturned, toolCallCount, outputMatches, outputContains, outputNotContains, latencyUnderMs, turnsUnder. A case can also carry expectedOutput and rubric for the judge, plus expectedTrajectory, assertions and tags.

provider: vocion (default) grades in Vocion; provider: agentcore uses Amazon Bedrock AgentCore evaluations, with evaluators naming which.

Run

npm run eval:run --workspace @vocion/core -- --dataset lead-basics

Or from /dashboard/evals, or POST /api/v1/evals/{slug}/runs. Each run records the workspace version it ran on. npm run eval:upgrade and POST /api/v1/evals/{slug}/model-upgrade-test compare a candidate model against the current one on the same dataset.

Handoff-gate judges calibrate on an eval dataset named in judge.cases.