Skip to content
bits
Evals that matter · Lesson 5 of 8 · 7 min

Check your judge against a person

Tutor:

Your judge failed the bad reply. Good. Would it also pass a good one? Or does it fail everything, which would look identical on that single test?

An LLM judge is a prompt, so it has the same problems as the prompt it's grading. Shankar and colleagues put it bluntly: model graders inherit the flaws of the models they grade, so a person has to check them. You check a judge the way you check anything else: against answers you already know.

Tutor:

The answers you already know come from a person who knows what good looks like: the shop owner, a support lead, you. They label real replies pass or fail, each with a reason. Then you run your judge on the same replies and count how often it agrees.

There's a surprise waiting. Shankar's research found that people change their minds about the rules while labelling. You don't fully know what "good" means until you've looked at real replies. So label first, then write the judge's rules from what you learned.

Tutor:

Watch out for one trap. Say a person labelled 20 replies: 18 good, 2 bad. Your judge says "pass" to all 20. That's 18 out of 20, 90% agreement, and the judge is useless: it missed both failures.

So count two things separately:

  • Failures caught. Of the replies the person failed, how many did the judge fail?

  • Good replies passed. Of the replies the person passed, how many did the judge pass?

A judge that never says "fail" scores perfectly on the second and zero on the first. Husain calls these the true positive and true negative rates, and reports them separately because overall agreement hides this.

Tutor:

Your turn: a tiny calibration run. The shop owner labelled two bot replies: A passes, B fails. Write a judge prompt that grades both, and see if it agrees with the owner on both.

There's no AI coach here, on purpose. Agreement with a person's labels is arithmetic, so code checks it: your judge must say pass for A and fail for B.

Your turn

Goal Get JSON with A as pass and B as fail, matching the owner's labels, with a note on why

What good looks like8 to meet
  • Includes the shop's factsnot checked yet
  • Includes both repliesnot checked yet
  • Asks for pass or failnot checked yet
  • Asks for JSONnot checked yet
  • Ran at 1.0not checked yet
  • Parses as JSON with A, B and notesnot checked yet
  • Agrees with the owner on A: passnot checked yet
  • Agrees with the owner on B: failnot checked yet

Run your prompt and the replies land here.

    ~0 tokens

    Turn on JavaScript to run prompts.