Experiment Workflow
Run a full evaluation from the terminal — discover providers, build a dataset and evaluators, create a prompt and experiment, then read the scores.
Experiment Workflow
Provider discovery
Always run provider discovery before creating prompts or LLM evaluators:
aievals provider list --format jsonUse the exact name field (case-sensitive) for --model-params-provider. The
name and adapter fields can differ (e.g., name="OpenAI" vs.
adapter="openai").
Using the wrong provider value causes silent 0 scores on LLM evaluators.
Always copy values from provider list — never guess, hardcode, or lowercase
them.
The workflow
Discover providers
aievals provider list --format jsonDiscover available providers and models, and the exact values to use below.
Create a dataset
aievals dataset create
# then add items with:
aievals dataset-item createCreate evaluator(s)
aievals evaluator createCode evaluators must use function main(...), not function evaluate(...).
All params (input, output, expected) are strings — use JSON.parse() to
access fields.
Create a metric
aievals metrics createGroups evaluators (called "Metrics" in the UI, evaluator-list in the API).
Create a prompt
aievals prompt create \
--model-params '{"provider":"OpenAI","adapter":"openai","model":"gpt-4o-mini"}'Use exact values from Step 1.
Read the scores
aievals experiment-run compare <run-id> --format jsonReturns aggregate scores per evaluator. For individual scores:
# get score IDs from each trace's `scores` array
aievals trace list --format json
# then fetch a single score
aievals score get <score-id> --format jsonLLM evaluator tips
--score-range-promptmust be exactly:Provide a score ranging from 0 to 1orProvide a discrete score of 0 or 1.- Do not use
score listfor experiment scores — it returns empty. Use the trace-based flow in the final step. - Do not use
eval executeto debug experiment scores — useexperiment-run compareinstead.
Code evaluator tips
- Shell safety: avoid
!==(use!=), avoid!in strings (use== false). For complex code, write it to a file and pass it via--code "$(cat file.js)".
Long-running operations
Commands like experiment-run create --wait poll until completion (default
timeout: 10 minutes). Use --wait-timeout 300 to adjust.