How to evaluate LLM outputs systematically
Build a repeatable LLM evaluation suite: define quality criteria, assemble a dataset, combine deterministic checks with model-graded scoring, and run it in CI to catch regressions.
Why systematic evaluation matters
LLM behavior shifts when you change prompts, models, or retrieval. Without evaluation you ship regressions silently. A good eval suite turns vague impressions into numbers you can compare across versions, the same way unit tests protect ordinary code.
Prerequisites
- An LLM feature you want to measure
- A collection of realistic inputs, including edge cases
- A runtime to automate scoring
Steps
1. Define what good looks like
Write down the criteria: correctness, format, tone, safety, and absence of hallucination. Vague goals produce useless scores.
2. Build an evaluation dataset
Gather 50-200 representative inputs. Include happy paths, edge cases, and known failure modes. Where possible attach a reference answer or expected properties.
3. Pick metrics for your task
For classification or extraction, use accuracy and F1. For free-form text, use rubric scores. Avoid relying on a single number.
4. Add deterministic checks
Many failures are mechanical: wrong JSON, missing fields, banned phrases. Catch these with simple assertions before any model-based scoring.
assert is_valid_json(output)
assert "sorry, I cannot" not in output.lower()
5. Use an LLM as a judge for open-ended cases
When correctness is subjective, prompt a separate model with a rubric and ask it to score and justify. Keep the rubric explicit and calibrate against human labels.
Score the answer 1-5 for factual accuracy and helpfulness. Explain briefly.
6. Run evals in CI and track scores
Wire the suite into continuous integration. Fail the build if scores drop below a threshold, and store results so you can chart trends.
Verification
Intentionally degrade your prompt and rerun the suite. Confirm the scores drop and the failing cases are flagged. Restore the prompt and confirm scores recover. This proves the suite actually detects regressions.
Next Steps
Expand the dataset as new failure modes appear, sample production traffic into your evals, and audit the LLM judge periodically against human reviewers.
Prerequisites
- A working LLM feature
- A set of representative inputs
- Python or a test runner
Steps
- 1Define what good looks like
- 2Build an evaluation dataset
- 3Pick metrics for your task
- 4Add deterministic checks
- 5Use an LLM as a judge for open-ended cases
- 6Run evals in CI and track scores