← Fig. 1 — one request, end to end
Evals and Observability
How to know it is working, and how to know when it stops.
Fig. 2 — Measurement, detail at larger scale
Whether the output was any good, and whether retrieval found the right thing. A trace is one run, recorded.
Key plan — part 5 on Fig. 1Figure 2 — the parts of this course, as links to their lessons
What the detail shows
- Live requests run across the top of the sheet. Three dotted taps hang off it — one at retrieval, one at the model, one at the output. A dotted line watches and carries nothing.
- The three taps run into one dotted line that feeds everything below.
- At the left it turns down into a hopper. The wide mouth is all your traffic; what drops out of the spout is the handful of cases you keep, ruled up as an eval set.
- The set is replayed offline, and splits to two instruments. The exact check has two stops and a needle against one of them: it passed or it did not. The judge is a model, drawn as one, and gives a reading on a scale.
- Both readings converge on one dial, the score.
- A dotted tap takes the judge off to a second, smaller dial, where its answers on A-or-B pairs are checked against a human’s.
- Along the bottom the same set is run before a change and after it. Two scales, a marker on each, meeting at a comparator.
- The difference has to pass a gate before anything ships. Past the gate the line is solid again.
- After it ships a dotted line keeps reading, onto a strip chart where the score drifts down across its own threshold on its own.
- At the right the output tap lands on a trace: one run end to end, its steps drawn as bars, with the field that is never logged struck out.
- The same tap carries on down a rail, and three gauges hang off it: quality, latency and cost.
Schedule of lessons
12 lessons
- Why "looks good" is not a metric
3 lessons · 21 min
- Why "looks good to me" fails
A demo of five examples tells you almost nothing about the other five thousand.
- Building an eval set from your own traffic
Your users already wrote your test cases; you just haven't collected them.
- Offline evals and online evals
One runs before a stranger sees the output, one runs after.
- Why "looks good to me" fails
- Judging the output
3 lessons · 21 min
- Deterministic checks and LLM-as-judge
Reach for the cheap exact check first; save the model call for what actually needs one.
- How to trust a judge
A judge is a model too, and it needs its own report card before you trust its scores.
- Pairwise comparison and human review that scales
"Which is better, A or B" gets a cleaner answer than "rate this 1 to 5."
- Deterministic checks and LLM-as-judge
- Shipping a change
3 lessons · 21 min
- Regression testing a prompt or model change
Treat a one-line prompt edit like the code change it actually is.
- A/B testing and shipping a change safely
An eval score is a hypothesis. A rollout is the experiment that checks it.
- Drift: when the model changes under you
Your prompt didn't change, but the model behind the API did.
- Regression testing a prompt or model change
- Watching it run
3 lessons · 19 min
- Tracing a multi-step run
Build the record now, so the question you have not thought of yet is still answerable later.
- What to log, and what never to
See what happened without collecting what you shouldn't have kept.
- Latency and cost as first-class metrics
A correct answer that takes nine seconds and burns a fortune in tokens is still a problem.
- Tracing a multi-step run
Notes
It worked on the five cases you tried. Building a test set from real traffic, judging output at scale, catching a regression before a user does, and watching a live system without drowning in dashboards.
Every figure on this sheet is counted from the lessons themselves. Your progress is kept in this browser only — no account, nothing sent anywhere.