Best Practices for Building Agents Recap
Arthur

Can You Trust LLM-as-Judge? Calibrating Automated Evals

August 4, 20265 min read

An LLM scoring another LLM's output is now the default way teams evaluate agents at scale. It's fast, it's cheap relative to human review, and it can assess things a regex never could. The question that rarely gets a straight answer is whether you can trust the judge. A score is only useful if it means something, and a judge that disagrees with your own reviewers half the time is worse than no judge at all, because it looks like signal.

The honest answer is that an LLM judge is trustworthy once you've measured it against human judgment and controlled for the ways it goes wrong. Here's what that takes.

Why LLM-as-judge became the default

Human labeling doesn't scale to production traffic. A team shipping thousands of agent interactions a day can't put eyes on every one, and by the time a sample gets reviewed the regression has already reached users. Deterministic checks scale fine, but they can't assess tone, completeness, or whether a response is grounded in the context the agent retrieved.

LLM judges fill that gap because they generalize over content. They can read a response, compare it against source material, and make a judgment about groundedness or completeness the same way a human reviewer would, across every interaction rather than a sample. That's the capability that makes them the default. It's also the capability that makes them hard to trust, because the same flexibility that lets a judge reason about content lets it reason inconsistently.

Where LLM judges go wrong

The failure modes are specific and worth naming, because each one has a different fix.

Inconsistency. The same input can produce different scores across runs. An LLM asked to rate a response might return one verdict now and another verdict a minute later on identical input. Non-determinism is the baseline problem every other issue sits on top of.

Position and verbosity bias. When a judge compares two responses, it tends to favor whichever came first, regardless of quality. It also tends to reward longer answers, reading length as thoroughness even when the extra text adds nothing.

Self-preference. A judge tends to rate outputs from its own model family higher than outputs from others. If you evaluate a GPT-based agent with a GPT-based judge, the judge is grading work that looks like its own.

Miscalibration. The judge's scores don't track human judgment. It might pass responses your reviewers would fail, or fail responses they'd pass. Without measuring agreement, you have no way to know.

Judge drift. The judge's behavior shifts when the underlying model version changes. A provider updates the model behind your judge, and evals that passed yesterday fail today, not because your agent changed but because the grader did.

Binary beats scored ranges

The single most effective way to make a judge more reliable is to stop asking it for a number on a range. Scoring a response 1 to 10, or low/medium/high, does two bad things. It makes the judge inconsistent, since the same interaction might return a 4 on one run and a 6 on the next, and it pushes the real decision onto a human who has to decide what threshold requires attention.

Binary pass/fail evaluations remove both problems. A judge deciding "did this response contain a claim not supported by the retrieved documents, yes or no" is making a far more constrained decision than one placing the same response on a ten-point scale. When the eval fires, it means something specific requires attention, rather than a soft signal someone still has to interpret. Require the judge to return a short explanation alongside the verdict, so you can spot patterns across failures instead of re-reading every interaction from scratch.

Specificity and examples are calibration

A judge is only as good as its rubric, and rubric quality is the cheapest calibration lever you have before touching models. A generic prompt like "rate the quality of this response" produces noisy, inconsistent results because it leaves the judge to decide what quality means. A specific prompt targeting one concrete failure mode, "did the agent reference information not present in the retrieved documents," is constrained enough for the judge to apply consistently.

Specificity also means giving the judge the right context. A judge checking for hallucination needs the retrieved documents, not just the final response. A judge checking topic adherence needs the agent's system prompt so it knows what's in scope. Then anchor the judgment with examples: include a passing case and a failing case in the prompt, focused on the boundary decisions where the judge is likely to waver rather than the obvious cases it will already get right. A written definition of hallucination leaves room for interpretation; a grounded response sitting next to a hallucinated one makes the standard concrete.

Calibrating against human labels

This is the core of the trust question. You establish whether a judge is trustworthy by measuring how often it agrees with human reviewers on a set where you already know the right answer.

The mechanism is a supervised eval, which compares the judge's verdict against an expected answer in a labeled dataset. Assemble a set of interactions your team has reviewed and labeled pass or fail. Run the judge across the same set. Measure agreement. If the judge agrees with your reviewers most of the time, you can trust it to run unattended. If it doesn't, the gap tells you the rubric needs work, and you iterate on the prompt, its specificity, and its examples until agreement reaches a level you're comfortable acting on.

Calibration isn't a one-time gate. The labeled set becomes an asset you re-run whenever you change the judge, so agreement is something you measure rather than assume.

Choosing the judge model

Judges run on every production interaction, so cost and latency compound fast. A judge that adds a dollar and two seconds per call is affordable in testing and ruinous at a million calls a day.

The move is to start with a capable model to establish a quality baseline, confirm its agreement with human labels, then test whether a smaller, cheaper model produces comparable verdicts on the same set. If accuracy holds, you ship the cheaper judge and cut eval costs significantly without losing signal. If the smaller model struggles, that usually points to a rubric that needs more specificity or better examples rather than a hard requirement for the larger model. Cost optimization and calibration are the same exercise run twice.

Deterministic checks where judgment isn't needed

Not everything needs a judge, and forcing one where a function would do makes evals slower, more expensive, and less reliable. LLM judges are strong at generalizing over content: tone, completeness, adherence to instructions, groundedness. They're weak at precise quantitative work.

If you need to confirm a number falls in a range, validate a response against a schema, check that generated SQL returns the same rows as the expected query, or verify an agent called tools in the right order, a deterministic check is more reliable and cheaper than any judge. Reserve the LLM judge for the content judgments only it can make, and let functions handle the things functions do better.

Keeping judges trustworthy over time

A judge that was calibrated six months ago is not necessarily calibrated today. Judge drift means the model behind your evaluator can change under you, so treat the judge like any other component under version control. When you swap judge models, or a provider updates the one you're using, re-run it against your human-labeled set before trusting the new verdicts.

Monitoring the judge requires the same visibility you'd want for the agent itself. Capturing every judge run as a trace, with the input, the verdict, and the explanation, lets you inspect why a judge scored something the way it did and watch its behavior for shifts. When pass rates move, you can tell whether the agent changed or the grader did, which is the difference between chasing a real regression and chasing a phantom one.

Trustworthy judges as a governance signal

A calibrated, monitored judge is more than an internal tool. When an agent goes through a governance review before enterprise deployment, reviewers ask what safeguards are in place and expect to see them demonstrated. Being able to show that your evals are validated against human judgment, not asserted on vibes, is concrete evidence of production readiness. A judge you can prove agrees with your reviewers is a control you can put in front of a compliance team, which shortens review cycles and answers the harder questions before they're asked.

TLDR

  • LLM judges are the only evaluation method that scales to production traffic while assessing content, which is why they're the default.
  • They fail in specific ways: inconsistency, position and verbosity bias, self-preference, miscalibration, and drift when the judge model changes.
  • Use binary pass/fail with an explanation, not scored ranges, which are inconsistent and push the decision onto a human.
  • Make each judge specific to one failure mode and anchor it with pass/fail examples on boundary cases.
  • Establish trust by measuring judge-human agreement on a labeled set before running the judge unattended.
  • Start with a capable judge model, then test whether a cheaper one holds the same accuracy.
  • Use deterministic checks for anything quantitative or structural; reserve the judge for content judgment.
  • Re-validate the judge when the model changes, and trace its runs so you can catch drift.
  • A judge you can prove is calibrated is a governance asset, not just an internal metric.

Interested in building production-ready agents? If you'd like to learn more about calibrating evaluations and shipping reliable agents, book a demo with an AI expert.

SHARE