Eval options, return values, statuses, and limits, see Eval options and errors.
Every object also has a name, an optional display_name and description, and the workspace_id it belongs to.
Object summary
Dataset
Dataset record
Experiment
Experiment result
Scorer
Each score records the scorer version that produced it, so a score stays traceable after the scorer changes.
Score span
A span namedscore.<name> on the case’s trace. It carries the score value and the ID and version of the scorer that produced it. Scores your application attaches to production traces use the same span; see Add scores from your application.
Session insight
One hosted judge’s answer about one production session or trace, linked to the session and the scorer version. Scoring the same session again with the same scorer adds a new answer. Earlier answers stay, and the app shows the most recent.Issue
One recurring problem across an agent’s scored runs. Eval finds issues from the agent’s scorers’ answers —POST /eval/v1/issues/find queues a scan that reads the agent’s failing verdicts and files or updates its issues — or you can file one with POST /eval/v1/issues; either way, issues are filed on the agent: a problem in one of its skills is the agent’s issue, and the fix may be an improvement to that skill.
The
name is the dedupe key, derived from the agent and a slug of the problem, and is unique within the workspace, so a rerun cannot file the same problem twice: filing the same slug on the same agent again is refused as taken, and the issue that holds it is the one to link evidence to. A wrong display_name, description, reasoning, or severity is edited with PATCH /eval/v1/issues/{id}; the name, the subject, the status, and the counts are Eval’s, and a patch that names one is refused. Eval can also raise a severity on its own: when an issue scan links at least three traces to an existing issue that it had not linked before and proposes a higher severity, Eval applies the raise and records it in severity_changes, with the reason. Eval never lowers a severity on its own, and an archived issue’s severity does not change.
A fix is an improvement row that carries the issue’s issue_id. An issue holds one open fix per subject: while one is running or awaiting a decision, proposing another on that subject is refused with 409, and once it is decided or has failed, another can be proposed. Fixes for other issues, or for the issue on a skill linked to the agent, are not blocked. The status follows the agent version its newest accepted fix runs from and what scored traces show on fixed versions: with no running fix, or with nothing scored on a fixed version yet, the issue stays to_do; an occurrence on a fixed version makes it regression; and it is resolved once the issue’s own scorers have judged traces on fixed versions and none failed. An agent fix runs from the agent version accepting it minted, and a skill fix once the agent pins that skill version or later; evidence that records no agent version is left out.
Issue trace
One write-once link between an issue and the trace that shows it: theissue_id, the trace_id, the answer_id of the scorer answer that first showed it (a trace-level answer; the sessions that show the issue as a whole are read separately, with GET /eval/v1/issues/{id}/sessions), and observed_at, when the traced run started. Issues and traces are many-to-many. One trace per issue is recorded once even if several answers and scorers describe it, and a trace may still show several issues. The issue’s traces read (GET /eval/v1/issues/{id}/traces) also names the session and question of the answer each row cites: its session_id and question_id, either null when the answer records none.
See also
- Eval options and errors:
Evaloptions, environment variables, statuses, limits, and error codes. - How evals work: How these objects fit together in an offline or online eval.