Skip to main content

Step 3: Baseline in development

Before you gate anything, learn what "normal" looks like. Thresholds set from intuition are usually wrong; set them from a baseline run over real examples.

Assemble a representative sample​

Take a set of real (or realistic) requests and their outputs from your stored data — include the easy cases, the hard cases, and the ones that have burned you before.

Run the suite once, manually​

Upload the sample as a dataset and start a dataset run (Create run from dataset, POST /api/v1/runs/dataset), or fire a custom run (Create custom run, POST /api/v1/runs/custom) with the rows inline. For a baseline you want the full picture, so run it blocking (is_blocking true) so the response comes back with scores already computed, or poll the run until it finishes (see Step 5).

Read the explanations, not just the scores​

Every evaluation carries a written justification. Read the low scorers to confirm the metric is penalizing what you actually care about, and the high scorers to confirm it is not rewarding the wrong thing. This is where you catch a mis-mapped field or a metric that does not mean what its name suggests.

Calibrate thresholds to observed reality​

Look at the distribution of scores for each metric on outputs you consider acceptable versus unacceptable, and set the threshold between them — with a margin, because LLM-judge scores vary run to run. Deterministic (structural) metrics do not have this variance; lean on them where you need a crisp line.

Freeze a golden dataset​

Once the suite is calibrated, save the curated examples as a persistent dataset with its metrics and thresholds attached. This becomes the regression suite you re-run in automation — the fixed yardstick that a new model, prompt, or code change is measured against.

Spot-check with single evaluate while iterating​

When you are tweaking one prompt or one metric, single evaluation (POST /api/v1/evaluate) for a single output gives you an immediate score and explanation without spinning up a whole run.