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.Identify scope
- 2.Inspect evidence
- 3.Apply host control
- 4.Run negative cases
- 5.Compare benign behavior
- 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
// 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.