Regression Evals for Small LLM Workflows - Test the Change, Not the Demo
A prompt is revised, a newer model is selected, or a retrieval setting is adjusted. The first few outputs look cleaner than before. Is the workflow actually better, or did the demonstration simply avoid the cases that became worse?
This is the practical role of a regression eval: run a candidate change and the current baseline against the same stated requirements, then inspect where behavior improved, stayed acceptable, or regressed. It is closer to a repeatable release check than to a public model leaderboard. It also makes a deliberately limited promise. An eval can reveal failures represented by its cases and graders; it cannot prove that an LLM application is correct or safe in every situation.
Evaluate the workflow, not the model's reputation
A model benchmark asks how systems perform on a standardized collection of tasks. An application eval asks whether one particular workflow does its job under conditions that matter to its users. Those questions overlap, but they are not interchangeable.
A publishing assistant, for example, may need to preserve source URLs, abstain when evidence is missing, retain caveats during translation, and avoid proposing publication when a required file is absent. A general model score does not directly test those boundaries. The unit under test includes the developer instructions, model and parameters, retrieved context, tools, application code, and output checks that together produce the visible result.
The OpenAI evaluation guidance recommends task-specific evaluation and identifies separate points of uncertainty in single model calls, workflows, and agents. That separation is useful even without using OpenAI's tooling. If a workflow extracts an article ID, retrieves a record, and drafts a response, test extraction, retrieval, and the final answer separately where possible. An end-to-end failure then becomes easier to locate than a single verdict that “the AI failed.”
Turn expectations into observable criteria
“The answer should be good” is not yet a test. Before collecting cases, write down what success and unacceptable failure mean for this application. Anthropic's evaluation documentation describes useful criteria as specific, measurable, achievable, and relevant, while also noting that most applications need several dimensions.
For a small research-and-writing workflow, the scorecard might ask:
- Are factual claims supported by the supplied sources?
- Does the output say that evidence is insufficient when the corpus contains no answer?
- Are quotations, URLs, dates, and code preserved exactly where required?
- Does a translation preserve every paragraph and caveat without adding a new claim?
- Does the router choose only an allowed tool and pass the correct stable identifier?
- Does the workflow stay within its latency and cost budget?
These criteria should not be collapsed too quickly into one average. The HELM research project argues for evaluation across scenarios and multiple metrics rather than allowing accuracy to hide robustness, fairness, toxicity, efficiency, or other tradeoffs. A small application does not need to reproduce HELM's scale, but it benefits from the same question: which important dimension could improve while another quietly deteriorates?
Build a small dataset that can become more honest
The first dataset does not have to be enormous. It has to be legible, versioned, and connected to the job. Each case can record an input, relevant context, expected behavior, grading rules, and a short reason the case exists.
A balanced initial set should include more than successful examples:
- Ordinary cases: representative requests the workflow is expected to handle.
- Boundary cases: long input, missing fields, ambiguous requests, unusual formatting, and supported languages.
- Negative cases: requests the system should refuse, defer, or answer with “insufficient evidence.”
- Known failures: reviewed incidents that previously produced a wrong route, unsupported claim, lost caveat, or malformed output.
- Control cases: simple examples that should remain stable and expose a broken harness quickly.
A dataset made only from imagined examples can miss the shapes that real use produces. Logs and user feedback can supply better cases, but they may contain personal data, secrets, copyrighted material, or hostile input. Minimize and redact records, control access, document why each case is retained, and obtain any consent the context requires. “Log everything” is not permission to create an unrestricted archive of prompts.
Keep some reviewed cases held out from routine prompt tuning. If every failure is repeatedly visible while the prompt is edited, the workflow may learn the test's wording without becoming more dependable on nearby inputs. A held-out set does not eliminate contamination, but it creates a more meaningful final comparison.
Match the grader to the claim
Not every output needs another model to judge it. Use the least ambiguous grader that can test the requirement.
Deterministic checks
Ordinary code is well suited to exact properties: valid JSON, required keys, allowed enum values, URL preservation, paragraph counts, forbidden tool names, or equality between an expected and actual record ID. These checks are fast to rerun and easy to explain. They can still encode the wrong requirement, but they do not introduce a second model's interpretation.
Human rubrics
People are needed when relevance, clarity, translation quality, evidential support, or severity cannot be reduced honestly to a string comparison. A rubric should define each criterion and show examples near the decision boundary. Reviewers can disagree, so disagreement is information: it may reveal an unclear rubric, an ambiguous case, or a requirement the team has not actually settled.
Model graders
A model grader can make repeated review of open-ended output more affordable, especially for pairwise comparison or a narrow pass/fail rubric. It is still a measurement instrument, not ground truth. The MT-Bench and Chatbot Arena paper studies LLM judges and identifies position, verbosity, self-enhancement, and reasoning biases. Its reported agreement results belong to the models, prompts, and data in that study; they are not a guarantee for another judge, language, or domain.
Before a model grader becomes a release gate, compare its decisions with a set labeled by the people responsible for the application. Investigate disagreements, tighten the rubric, test swapped answer order for pairwise judgments, and recheck calibration when the judge model or prompt changes. If the grader and candidate share the same blind spots, a precise-looking score can amplify rather than expose them.
Compare the candidate with a fixed baseline
A regression run should preserve enough configuration to explain the comparison: dataset version, prompt version, model identifier, retrieval settings, tool definitions, grader versions, and relevant application revision. Run the baseline and candidate on the same cases with the same graders. Otherwise a changed score may describe a changed test rather than a changed workflow. This reflects the task, test-input, criteria, and result-analysis cycle described in OpenAI's working-with-evals documentation, without depending on its current product interface.
Record case-level outcomes, not only totals. A candidate that passes one additional style case but begins inventing a source in a negative case should not hide behind a slightly higher average. Useful review views include:
- cases that changed from pass to fail;
- cases that changed from fail to pass;
- high-severity failures regardless of the aggregate score;
- grader disagreements and uncertain human labels;
- changes in cost, latency, refusal, and tool-use behavior.
Generated outputs can vary even when the visible input is unchanged. Repeated runs may therefore be appropriate for unstable or consequential cases, but there is no universal repetition count or pass threshold. The choice depends on the consequence of failure, expected variability, budget, and how the workflow is configured. State that policy instead of borrowing a number from an unrelated benchmark.
Make the release gate narrow and explicit
A release policy can combine several rules: no regression on critical deterministic checks, no new high-severity human-reviewed failure, acceptable performance on ordinary cases, and bounded operational cost. A failed gate should stop the rollout or require a documented decision, not trigger automatic editing until the score happens to rise.
This gate complements other controls. Schema validation still checks shape. Authorization still limits who may act. Human approval may still be required before a consequential side effect. Monitoring is still necessary after release. The NIST Generative AI Profile places evaluation within broader lifecycle risk management; it does not present one pre-release score as a substitute for design, oversight, incident response, or ongoing measurement.
When a reviewed production failure appears, add a minimized version to the regression set, explain the expected behavior, and preserve it after the immediate fix. The suite then becomes a record of requirements and discovered failure modes rather than a showcase assembled once before launch.
What a passing eval does not prove
A passing suite means the tested configuration met the encoded criteria on the tested cases according to the selected graders. It does not show that the cases represent every future user, that the references are complete, that a model judge is unbiased, or that an unseen tool sequence is safe. It may also miss a failure because the rubric never asked the relevant question.
This limitation is not a reason to return to intuition. It is a reason to keep the claim proportional to the evidence. A regression eval replaces “this demo looked better” with a traceable comparison. It can tell a small team which known behaviors survived a change, where tradeoffs appeared, and what still required human judgment.
Conclusion
The useful eval is not the largest benchmark or the most elaborate dashboard. It is the smallest repeatable test that reflects the workflow's real obligations and makes important failure visible before release. Define those obligations, collect representative and difficult cases, use deterministic checks wherever possible, calibrate judgment-based graders, and compare every candidate with the same baseline.
The result is not certainty. It is a better question at the moment of change: not “Can the new version produce an impressive answer?” but “Which required behaviors did it preserve, which did it improve, and which evidence says it is ready to replace what already works?”
References
- OpenAI. Evaluation best practices. Live documentation, accessed November 1, 2026.
- OpenAI. Working with evals. Live documentation, accessed November 1, 2026.
- Anthropic. Define success criteria and build evaluations. Live documentation, accessed November 1, 2026.
- Chloe Autio et al. Artificial Intelligence Risk Management Framework: Generative Artificial Intelligence Profile. NIST AI 600-1, July 26, 2024; page updated April 8, 2026.
- Percy Liang et al. “Holistic Evaluation of Language Models.” Transactions on Machine Learning Research, 2023.
- Lianmin Zheng et al. “Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena.” NeurIPS 2023 Datasets and Benchmarks Track, revised December 24, 2023.
