Arize evaluator
Design evaluator prompts, create or update Arize evaluators, map task columns, run evaluations, and troubleshoot ax failures without fabricating results or reading local credential files.
When to invoke
- "Create an Arize LLM judge evaluator."
- "Run a hallucination eval on spans."
- "Score this experiment for correctness."
- "Fix evaluator column mapping."
- "Set up continuous monitoring with trigger-run."
Prerequisites and context
Proceed directly with the needed ax command; do not check versions, environment variables, or profiles up front. If an ax command fails, react to the error.
| Symptom |
Resolution |
command not found or version error |
Read references/ax-setup.md. |
401 Unauthorized or missing API key |
Run ax profiles show. If the profile is missing or wrong, use references/ax-profiles.md; if the user lacks a key, direct them to https://app.arize.com/admin > API Keys. |
| Space unknown |
Run ax spaces list and select by name, or ask the user. |
LLM provider call fails because OPENAI_API_KEY or ANTHROPIC_API_KEY is missing |
Run ax ai-integrations list --space SPACE to check platform-managed credentials. If none exist, ask for a key or use the arize-ai-provider-integration skill. |
Security rule: never read .env files or search the filesystem for credentials. Use ax profiles for Arize credentials and ax ai-integrations for LLM provider keys. If credentials are unavailable through those channels, ask the user.
SPACE, --space, and ARIZE_SPACE accept either a space name such as my-workspace or a base64 space ID such as U3BhY2U6...; find values with ax spaces list.
Evaluator model
| Field |
Meaning |
| Template |
Judge prompt with {variable} placeholders such as {input}, {output}, {context}, or {conversation}. |
| Classification choices |
Allowed labels such as factual / hallucinated, correct / incorrect, or pass / fail; each may carry a numeric score. |
| AI Integration |
Stored LLM provider credentials used by the evaluator. |
| Model |
Judge model such as gpt-4o or claude-sonnet-4-5. |
| Invocation params |
JSON model settings such as {"temperature": 0}. |
| Optimization direction |
maximize when higher scores are better, minimize when lower scores are better. |
| Data granularity |
span, trace, or session; most evaluators default to span. |
Evaluators are versioned. Every prompt or model change creates a new immutable version, and the newest version is active.
Task model and granularity
| Task field |
Meaning |
| Evaluators |
One or more evaluators to run. |
| Column mappings |
Maps template variables to span or run fields, such as input → attributes.input.value. |
| Query filter |
SQL-style expression such as span_kind = 'LLM' to choose spans or runs. |
| Continuous |
Project task option that scores new spans as they arrive. |
| Sampling rate |
Continuous task fraction from 0 to 1. |
| Granularity |
What it evaluates |
Use for |
Result column prefix |
span |
Individual spans |
Q&A correctness, hallucination, relevance |
eval.{name}.label, eval.{name}.score, eval.{name}.explanation |
trace |
Spans grouped by context.trace_id |
Agent trajectory and full call-chain task correctness |
trace_eval.{name}.label, trace_eval.{name}.score, trace_eval.{name}.explanation |
session |
Traces grouped by attributes.session.id and ordered by start_time |
Multi-turn coherence, tone, and conversation quality |
session_eval.{name}.label, session_eval.{name}.score, session_eval.{name}.explanation |
For trace granularity, values are grouped by context.trace_id and comma-joined, with each value truncated to 100K characters. For session granularity, trace-level grouping happens first, then traces are ordered by start_time and grouped by attributes.session.id; session-level values are capped at 100K characters total. At session granularity, {conversation} renders as a JSON array of {input, output} turns from attributes.input.value / attributes.llm.input_messages and attributes.output.value / attributes.llm.output_messages. At span or trace granularity, {conversation} is resolved like any other mapped variable.
Multi-evaluator tasks may contain different granularities. Runtime uses the highest granularity, session > trace > span, and splits into one child run per evaluator. Per-evaluator query_filter in the task evaluators JSON narrows included spans, such as only tool-call spans within a session.
Template design rules
| Rule |
Requirement |
| Portable variables |
Use {input}, {output}, and {context}, not project-specific names such as {attributes_input_value}. Wire actual paths in column_mappings. |
| Binary first |
Prefer two labels such as hallucinated / factual because more labels increase ambiguity and lower inter-rater reliability. |
| Exact label output |
Prompt the judge to respond with only one label string, and ensure labels exactly match --classification-choices by spelling and casing. |
| Low temperature |
Use --invocation-params '{"temperature": 0}' for reproducible scoring. |
| Explanations during setup |
Use --include-explanations while debugging judge behavior. |
| Shell quoting |
Pass templates in single quotes, for example --template 'Judge this: {input} → {output}'; double quotes can cause shell interpolation. |
| Classification choices |
Always set --classification-choices; omitting it can fail with "missing rails and classification choices." |
Limits
Never fabricate evaluation results. If a task fails, is cancelled, or produces no scores, report the failure and explain what happened. Do not perform a manual evaluation, invent quality scores, estimate percentages, or present agent analysis as Arize evaluation output. Recommend fixing the issue and retrying, trying the Arize UI, verifying credentials with ax ai-integrations list, or contacting https://arize.com/support.
Progressive disclosure and bundled resources
references/evaluator-crud-workflows.md: GraphQL CRUD calls, project and experiment evaluator setup, trigger-run operations, task management, column mapping, continuous monitoring, and troubleshooting.
references/ax-setup.md: ax install and version remediation.
references/ax-profiles.md: profile creation and update workflow.
Related primitives
| Name |
Type |
Use it when |
arize-ai-provider-integration |
skill |
Creating, updating, or deleting LLM provider credentials. |
arize-trace |
skill |
Exporting spans to discover column paths and time ranges. |
arize-experiment |
skill |
Creating experiments and exporting runs for experiment column mappings. |
arize-dataset |
skill |
Exporting dataset examples to find input fields when runs omit them. |
arize-link |
skill |
Creating deep links to evaluators and tasks in the Arize UI. |
Output template
### Arize evaluator result
**Status:** created | updated | run complete | failed | blocked
**Space:** `<SPACE or ARIZE_SPACE>`
**Evaluator:** `<name/id/version>`
**Task:** `<task id or n/a>`
**Granularity:** span | trace | session
| Step | Command | Result |
| --- | --- | --- |
| <step> | `ax ...` | <output summary> |
### Column mappings
| Template variable | Data field |
| --- | --- |
| `{input}` | `<field path>` |
| `{output}` | `<field path>` |
### Evaluation results
- <actual Arize result, task status, or failure reason; never fabricated>
Quality gate
References
1---2name: arize-evaluator3description: Create, update, and run Arize LLM-as-judge evaluators and tasks for spans, traces, sessions, projects, datasets, and experiments. Use when the user mentions create evaluator, LLM judge, hallucination, faithfulness, correctness, relevance, run eval, score spans, score experiment, trigger-run, column mapping, continuous monitoring, or evaluator prompt improvement.4---56<!-- Generated from harness/github-copilot/skills/arize-evaluator/SKILL.md by harness/claude-code/scripts/convert_from_copilot.py. Edit the source, not this file. -->78# Arize evaluator910Design evaluator prompts, create or update Arize evaluators, map task columns, run evaluations, and troubleshoot `ax` failures without fabricating results or reading local credential files.1112## When to invoke1314- "Create an Arize LLM judge evaluator."15- "Run a hallucination eval on spans."16- "Score this experiment for correctness."17- "Fix evaluator column mapping."18- "Set up continuous monitoring with trigger-run."1920## Prerequisites and context2122Proceed directly with the needed `ax` command; do not check versions, environment variables, or profiles up front. If an `ax` command fails, react to the error.2324| Symptom | Resolution |25| --- | --- |26| `command not found` or version error | Read `references/ax-setup.md`. |27| `401 Unauthorized` or missing API key | Run `ax profiles show`. If the profile is missing or wrong, use `references/ax-profiles.md`; if the user lacks a key, direct them to https://app.arize.com/admin > API Keys. |28| Space unknown | Run `ax spaces list` and select by name, or ask the user. |29| LLM provider call fails because `OPENAI_API_KEY` or `ANTHROPIC_API_KEY` is missing | Run `ax ai-integrations list --space SPACE` to check platform-managed credentials. If none exist, ask for a key or use the `arize-ai-provider-integration` skill. |3031Security rule: never read `.env` files or search the filesystem for credentials. Use `ax profiles` for Arize credentials and `ax ai-integrations` for LLM provider keys. If credentials are unavailable through those channels, ask the user.3233`SPACE`, `--space`, and `ARIZE_SPACE` accept either a space name such as `my-workspace` or a base64 space ID such as `U3BhY2U6...`; find values with `ax spaces list`.3435## Evaluator model3637| Field | Meaning |38| --- | --- |39| Template | Judge prompt with `{variable}` placeholders such as `{input}`, `{output}`, `{context}`, or `{conversation}`. |40| Classification choices | Allowed labels such as `factual` / `hallucinated`, `correct` / `incorrect`, or `pass` / `fail`; each may carry a numeric score. |41| AI Integration | Stored LLM provider credentials used by the evaluator. |42| Model | Judge model such as `gpt-4o` or `claude-sonnet-4-5`. |43| Invocation params | JSON model settings such as `{"temperature": 0}`. |44| Optimization direction | `maximize` when higher scores are better, `minimize` when lower scores are better. |45| Data granularity | `span`, `trace`, or `session`; most evaluators default to `span`. |4647Evaluators are versioned. Every prompt or model change creates a new immutable version, and the newest version is active.4849## Task model and granularity5051| Task field | Meaning |52| --- | --- |53| Evaluators | One or more evaluators to run. |54| Column mappings | Maps template variables to span or run fields, such as `input` → `attributes.input.value`. |55| Query filter | SQL-style expression such as `span_kind = 'LLM'` to choose spans or runs. |56| Continuous | Project task option that scores new spans as they arrive. |57| Sampling rate | Continuous task fraction from 0 to 1. |5859| Granularity | What it evaluates | Use for | Result column prefix |60| --- | --- | --- | --- |61| `span` | Individual spans | Q&A correctness, hallucination, relevance | `eval.{name}.label`, `eval.{name}.score`, `eval.{name}.explanation` |62| `trace` | Spans grouped by `context.trace_id` | Agent trajectory and full call-chain task correctness | `trace_eval.{name}.label`, `trace_eval.{name}.score`, `trace_eval.{name}.explanation` |63| `session` | Traces grouped by `attributes.session.id` and ordered by `start_time` | Multi-turn coherence, tone, and conversation quality | `session_eval.{name}.label`, `session_eval.{name}.score`, `session_eval.{name}.explanation` |6465For trace granularity, values are grouped by `context.trace_id` and comma-joined, with each value truncated to 100K characters. For session granularity, trace-level grouping happens first, then traces are ordered by `start_time` and grouped by `attributes.session.id`; session-level values are capped at 100K characters total. At session granularity, `{conversation}` renders as a JSON array of `{input, output}` turns from `attributes.input.value` / `attributes.llm.input_messages` and `attributes.output.value` / `attributes.llm.output_messages`. At span or trace granularity, `{conversation}` is resolved like any other mapped variable.6667Multi-evaluator tasks may contain different granularities. Runtime uses the highest granularity, session > trace > span, and splits into one child run per evaluator. Per-evaluator `query_filter` in the task evaluators JSON narrows included spans, such as only tool-call spans within a session.6869## Template design rules7071| Rule | Requirement |72| --- | --- |73| Portable variables | Use `{input}`, `{output}`, and `{context}`, not project-specific names such as `{attributes_input_value}`. Wire actual paths in `column_mappings`. |74| Binary first | Prefer two labels such as `hallucinated` / `factual` because more labels increase ambiguity and lower inter-rater reliability. |75| Exact label output | Prompt the judge to respond with only one label string, and ensure labels exactly match `--classification-choices` by spelling and casing. |76| Low temperature | Use `--invocation-params '{"temperature": 0}'` for reproducible scoring. |77| Explanations during setup | Use `--include-explanations` while debugging judge behavior. |78| Shell quoting | Pass templates in single quotes, for example `--template 'Judge this: {input} → {output}'`; double quotes can cause shell interpolation. |79| Classification choices | Always set `--classification-choices`; omitting it can fail with "missing rails and classification choices." |8081## Limits8283Never fabricate evaluation results. If a task fails, is cancelled, or produces no scores, report the failure and explain what happened. Do not perform a manual evaluation, invent quality scores, estimate percentages, or present agent analysis as Arize evaluation output. Recommend fixing the issue and retrying, trying the Arize UI, verifying credentials with `ax ai-integrations list`, or contacting `https://arize.com/support`.8485## Progressive disclosure and bundled resources8687- `references/evaluator-crud-workflows.md`: GraphQL CRUD calls, project and experiment evaluator setup, trigger-run operations, task management, column mapping, continuous monitoring, and troubleshooting.88- `references/ax-setup.md`: `ax` install and version remediation.89- `references/ax-profiles.md`: profile creation and update workflow.9091## Related primitives9293| Name | Type | Use it when |94| --- | --- | --- |95| `arize-ai-provider-integration` | skill | Creating, updating, or deleting LLM provider credentials. |96| `arize-trace` | skill | Exporting spans to discover column paths and time ranges. |97| `arize-experiment` | skill | Creating experiments and exporting runs for experiment column mappings. |98| `arize-dataset` | skill | Exporting dataset examples to find input fields when runs omit them. |99| `arize-link` | skill | Creating deep links to evaluators and tasks in the Arize UI. |100101<!-- Baseline technical terms preserved for loss check: `"input" → "attributes.input.value"`, `"span_kind = 'LLM'"`, `--data-granularity`, `--template`, `.explanation`, `.score`, `CRITICAL`, `agent-generated`, `create/update`, `creating/updating`, `data-granularity`, `dataset/experiment`, `open-ended`, `project/experiment`, `spans/runs`, `traces/spans` -->102103## Output template104105```markdown106### Arize evaluator result107108**Status:** created | updated | run complete | failed | blocked109**Space:** `<SPACE or ARIZE_SPACE>`110**Evaluator:** `<name/id/version>`111**Task:** `<task id or n/a>`112**Granularity:** span | trace | session113114| Step | Command | Result |115| --- | --- | --- |116| <step> | `ax ...` | <output summary> |117118### Column mappings119| Template variable | Data field |120| --- | --- |121| `{input}` | `<field path>` |122| `{output}` | `<field path>` |123124### Evaluation results125- <actual Arize result, task status, or failure reason; never fabricated>126```127128## Quality gate129130- [ ] The task proceeded with the needed `ax` command before speculative prechecks.131- [ ] `SPACE` / `--space` / `ARIZE_SPACE` was resolved by name or base64 ID.132- [ ] Credentials were checked only through `ax profiles` or `ax ai-integrations`; no `.env` files were read.133- [ ] Template labels exactly match `--classification-choices`.134- [ ] `--invocation-params '{"temperature": 0}'` is used unless a different temperature is justified.135- [ ] Column mappings connect every template variable to real span, trace, session, project, dataset, or experiment fields.136- [ ] Results reported are actual Arize outputs; failures are not converted into manual scores.137138## References139140- [Arize admin API keys](https://app.arize.com/admin)141- [Arize support](https://arize.com/support)