Skip to content

Eval Set Builder

Turn a text box of cases into an eval file, a grader and a runner script you fill your own endpoint into, with the cost of one full run worked out first.

Cost of one full eval run
$0.02

4 case(s) × 3 run(s) = 12 model calls. At your rates, with input tokens estimated at 4 characters each and output tokens taken from the field above.

Cases
4
Model calls per run
12
Grader
Output contains the expected text
Estimated input tokens per pass
≈ 121
Estimated output tokens per pass
≈ 320
Input cost per run
$0.0011
Output cost per run
$0.01
Cost per case
$0.0039
Cost of running it daily for a month
$0.46
Cases tagged #refund
2 (50.0%)
Cases tagged #delivery
1 (25.0%)
Cases tagged #edge
1 (25.0%)
Cases tagged #unknown
1 (25.0%)
Untagged cases
0
What this assumes: the cost figures use YOUR rates and an estimated token count of characters ÷ 4 for the inputs plus the output length you typed — no price list is shipped with this page, and none of these numbers came from a model. The system message is counted once per case, because it is sent on every call. The judge grader is the one grader this page cannot run for you: it needs a second model call, so the script raises rather than pretending. Everything on this page runs in your browser. Nothing you paste or open is uploaded, logged or sent anywhere.

An eval set is worth having the moment you change anything — a model, a prompt, a retrieval step — because without one the only test is whether the three examples you happen to remember still look right. What stops most teams is not the concept but the hour of formatting, which is what this page removes: cases in a text box come out as a file with a grader attached and a script that runs it.

Run each case more than once

A single run of a set at any temperature above zero measures the model and the die roll together. Three runs per case is a floor, not a target, and the cost table above exists so you can see what the floor costs before deciding it is too expensive — usually it is a few cents, which is a poor reason to ship a regression.

Choose the grader that can actually fail

Exact match on a sentence of prose fails on punctuation and tells you nothing. Contains passes a refusal that happens to quote your expected phrase. An unanchored regex passes on any output long enough to contain the pattern by accident. Each of those is flagged above where this page can see it happening. The tags are the other half: a score of 84% means nothing until you can see that it is 100% on the easy cases and 20% on the ones tagged #edge, which is the number that actually predicts the support tickets.

Eval Set Builder · Multigrid