Sections in this lesson

LLM Judge Calibration & Bias

An automated judge can be sensitive to answer order, verbosity, style and injected evaluator instructions.

Reviewed: · Content owner: Interview Preparator

What you will learn

  • A judge is another fallible model
  • Inspect agreement by slice
  • Keep evaluation separate from optimization

Before you start

The flow

  1. 1.Identify scope
  2. 2.Inspect evidence
  3. 3.Apply host control
  4. 4.Run negative cases
  5. 5.Compare benign behavior
  6. 6.Review remaining risks

A judge is another fallible model

An automated judge can be sensitive to answer order, verbosity, style and injected evaluator instructions. It can also share blind spots with the generator. A high judge score is not independent ground truth.

Create adjudicated human labels and a held-out calibration set. Keep prompt, rubric, judge version and disagreement examples alongside the results.

Inspect agreement by slice

judgeAgreement demonstrates paired-label agreement and null for an empty sample. Agreement alone can hide class imbalance, so inspect confusion counts and disagreements by task, language and failure type.

Do not estimate multilingual quality from translated prompts passed through the same deterministic operation. Live language understanding requires actual model outputs in both languages.

Keep evaluation separate from optimization

Do not repeatedly tune the generator on the same judge holdout and then call it independent. Refresh challenge cases, preserve development boundaries and review any change to the annotation rubric.

No live judge is integrated in this lab. The function illustrates metric mechanics; a production evaluator needs calibrated semantic inputs and an explicit policy for unresolved cases.

Try it

reliability.mjs
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Closed-world fact fixtures only. Equality of structured facts is NOT an NLI judge.
const object = value => value !== null && typeof value === 'object' && !Array.isArray(value);
export function authorizedSources(sources, scope, now) {
if (!object(scope) || typeof scope.tenant !== 'string' || typeof scope.user !== 'string' || !Number.isFinite(now)) throw new Error('Invalid trusted scope/time');
return sources.filter(source => source.tenant === scope.tenant && source.approved === true && !source.deleted
&& source.expiresAt > now && source.readers.includes(scope.user));
}
export function verifyClaims(claims, sources, scope, now) {
if (!Array.isArray(claims) || claims.length > 20) throw new Error('Invalid claims');
const evidence = authorizedSources(sources, scope, now);
return claims.map(claim => {
if (!object(claim) || Object.keys(claim).sort().join(',') !== 'key,sourceId,value'
|| ![claim.key,claim.sourceId,claim.value].every(value => typeof value === 'string' && value.length > 0 && value.length <= 200)) throw new Error('Invalid structured claim');
const source = evidence.find(item => item.id === claim.sourceId);
const value = source?.facts[claim.key];
return { ...claim, label: value === undefined ? 'INSUFFICIENT_EVIDENCE' : value === claim.value ? 'SUPPORTED' : 'CONTRADICTED' };
});
}
export function answerPolicy(claims, sources, scope, now) {
const labels = verifyClaims(claims,sources,scope,now);
return { status:labels.length > 0 && labels.every(item => item.label === 'SUPPORTED') ? 'ANSWER' : 'ABSTAIN', claims:labels };
}
export function retrievalRecall(relevantIds, retrievedIds) {
if (!relevantIds.length) return null;
return [...new Set(relevantIds)].filter(id => retrievedIds.includes(id)).length / new Set(relevantIds).size;
}
export function judgeAgreement(human, judge) {
if (human.length !== judge.length) throw new Error('Unpaired annotations');
return human.length ? human.filter((label,index) => label === judge[index]).length / human.length : null;
}

Run npm run examples:security and npm run eval:security. This source is a deterministic teaching fixture; it does not prove live model safety, NLI, production auth or OS/network isolation.

Interview questions

What boundary matters in LLM Judge Calibration & Bias?

Create adjudicated human labels and a held-out calibration set. Keep prompt, rubric, judge version and disagreement examples alongside the results.

What does the executable fixture demonstrate?

Do not estimate multilingual quality from translated prompts passed through the same deterministic operation. Live language understanding requires actual model outputs in both languages.

What remains a production integration responsibility?

No live judge is integrated in this lab. The function illustrates metric mechanics; a production evaluator needs calibrated semantic inputs and an explicit policy for unresolved cases.

Practice

Extend one negative scenario and its authorized positive counterexample for LLM Judge Calibration & Bias.

Check your solution

  • State the trusted input and effect boundary.
  • Assert the expected status and observed effect.
  • Report coverage and limitations without claiming production readiness.

Official references

Continue learning

Category sequence

AI Reliability & Hallucinations

Lesson 8 / 10

Was this lesson useful?

Change notes: 2026-10-31: security/reliability curriculum and source-bound fixture.