annotations
Annotations are named labels/scores attached to spans, traces, or experiment runs by humans, code, or LLM judges.
An experiment is one run of a prompt or pipeline over every example in a dataset.
> /plugin marketplace add arize-ai/phoenix > /plugin install arize-phoenix@arize-phoenix
How it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
An experiment is one run of a prompt or pipeline over every example in a dataset.
An experiment is one run of a prompt or pipeline over every example in a dataset.
There is **no `getExperimentById`** — reach an `Experiment` via `node(id:)`, `Dataset.experiments`, or `compareExperiments`.
run executed. There is **no** `datasetExample` field, and `input`/`output`/ `metadata` live on `example.revision`, not on `example` itself.
For candidate comparison prefer `compareExperiments(baseExperimentId: GlobalID!, compareExperimentIds: [GlobalID!]!, first, after, filterCondition)` over fetching each experiment's runs separately. Related: `experimentRunMetricComparisons(baseExperimentId, compareExperimentIds)` and `validateExperimentRunFilterCondition(condition, experimentIds)`.
Note: if the experiment came from a playground run driven through `execute_browser_action`, prefer the `playground.experiment.readResults` UI operation over hand-writing this query — it returns the same scores-plus-failures shape in one call.
Metrics only:
query ExperimentMetrics($id: ID!) {
node(id: $id) {
... on Experiment {
name
sequenceNumber
runCount
errorRate
averageRunLatencyMs
annotationSummaries { annotationName meanScore count errorCount }
}
}
}Scored results with per-run inputs/outputs — the shape for "which examples failed and why" (filter on `annotations`/`error` client-side with jq):
query ExperimentResults($id: ID!) {
node(id: $id) {
... on Experiment {
id name runCount expectedRunCount errorRate averageRunLatencyMs
job { status }
costSummary { total { cost tokens } }
annotationSummaries { annotationName meanScore count errorCount }
runs(first: 50) {
edges { node {
id output latencyMs error
annotations { edges { node { name label score explanation } } }
example { id revision { input output metadata } }
} }
}
}
}
}Repo: arize-ai/phoenix
Annotations are named labels/scores attached to spans, traces, or experiment runs by humans, code, or LLM judges.
There is **no `getDatasetByName`** — fetch via `node(id:) { ... on Dataset { ... } }` or the `datasets(filter: DatasetFilter, sort)` connection.
- `Project.spans(timeRange, first, after, sort: SpanSort, rootSpansOnly: Boolean, filterCondition: String)` → connection of `Span`. There is **no `traces`…
There is **no `getPromptByName`** — fetch via `node(id:)` or the `prompts(filter: PromptFilter, labelIds)` connection.
A session groups the traces of one multi-turn conversation.