Skip to main content
You have 64 rows. Some are good and some are not, and the model will learn from whichever you keep. So every row needs a score. Usually it is 0 or 1: did the agent do the job. The score has to be one you can defend, because the model will learn exactly what the score rewards, including the parts you did not mean.

The mechanism

The score is called the reward. There are two ways to get one.
  • A program. The answer matches the reference, the tests pass, the tool was called before the reply. When a program can check the job, use the program. It is cheap, repeatable, and cannot be flattered. The field calls this a verifiable reward, and the program a verifier.
  • A model. When no program can check the job (was the tone right, did it explain the policy), a model reads the reply against a written rubric and answers 0 or 1. That is an LLM judge.
A judge is a measurement instrument, so you check it before you use it. Label 50 rows by hand, run the judge on the same rows, and measure how often they agree. The library reports plain agreement and kappa, which is agreement after subtracting what two coin flips would agree on.

Run it

The setup is lesson 2’s run. The judge below is the one this course uses from here to lesson 7. It is a program over the row’s messages, so it scores the stand-in and, in lesson 7, a trained model, with the same three rules: look the order up with the id the customer gave (and ask when there is none, rather than guess), lead the reply with that order, and claim nothing the tool did not return.
Two different rewards, two different numbers, same rows. That is not a bug. A reward is a definition of the job, and the first line of any result is which definition it used. The third block is the check. The judge agrees with the labels 82% of the time, kappa 0.61, and the library still says trusted: False: with only 40 labels the lower bound on that agreement is 68%, under its 80% floor, and it flags that the judge passes long replies more often than short ones with the same label. Read trust["disagreements"] before you argue with it. Five are asks that name no order, where the stand-in guessed an id and its answer key does not count that as a mistake; two are replies that quote the hidden answer key, which this judge does not read (lesson 6 drops those rows before training). The number told you where to look, and you looked. That is what checking the checker means.
The numbers after each pass rate are the interval. Lesson 4 is about them. For now: 0.58 [0.38..0.77] means the true rate very likely sits between 38% and 77%.

Where it comes from

  1. Lambert, N. et al. Tülu 3: Pushing Frontiers in Open Language Model Post-Training. arXiv:2411.15124, 2024. Reinforcement learning with verifiable rewards: the reward is a program.
  2. Zheng, L. et al. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. NeurIPS, 2023. arXiv:2306.05685. How well a model judge agrees with people, and where it is biased.
  3. Cohen, J. A Coefficient of Agreement for Nominal Scales. Educational and Psychological Measurement 20(1), 1960. Kappa.
  4. Lambert, N. Reinforcement Learning from Human Feedback. arXiv:2504.12501, 2025. Chapter Reward Modeling.

Next

A pass rate without an interval is a guess: what 0.58 [0.38..0.77] means and why the brackets matter more than the number.
Last modified on September 20, 2026