LLM-as-a-judge avec Claude : construire, calibrer et fiabiliser un évaluateur automatique

Troisième article de la série « Production Engineering, Evals & Security avec Claude ».

Lorsqu’une sortie peut être vérifiée par une règle simple, il faut utiliser cette règle.

Si Claude doit renvoyer un label unique, un exact match suffit. Si la réponse doit être un JSON valide avec des champs obligatoires, un code grader est préférable.

Mais certaines qualités ne peuvent pas être réduites à une simple condition logique :

  • la fidélité d’un résumé ;
  • la complétude d’une réponse ;
  • le respect d’instructions complexes ;
  • la pertinence d’une justification ;
  • le ton attendu ;
  • la qualité globale d’une réponse ouverte.

Dans ces situations, le module Production Engineering, Evals & Security introduit le pattern LLM-as-a-judge : utiliser un second modèle pour évaluer la sortie du premier à partir d’une rubric explicite.


Le principe du LLM-as-a-judge

L’architecture générale est simple :

Input
  ↓
Feature under test
  ↓
Output
  ↓
Judge model
  +
Evaluation rubric
  ↓
Score + reasoning

Le premier modèle réalise la tâche.

Le second agit comme évaluateur.

Par exemple :

Task:
Résumer cette conversation client.

Output:
"Le client attend toujours son remboursement..."

Judge:
La réponse est-elle fidèle ?
Complète ?
Conforme aux instructions ?

Le judge retourne ensuite un score.


Pourquoi ne pas utiliser un judge pour tout ?

Parce que c’est :

  • plus coûteux ;
  • plus lent ;
  • plus variable ;
  • plus difficile à interpréter ;
  • inutile lorsqu’une règle déterministe suffit.

Le document insiste sur ce point : le choix du grader doit suivre la structure de l’output.

Le raccourci est :

une seule forme correcte
→ exact match

règle structurelle
→ code grader

qualité ouverte
→ LLM-as-judge

Utiliser un judge pour savoir si un JSON est valide serait donc une mauvaise architecture.

Un simple :

json.loads(output)

répond déjà à la question de manière déterministe.


Un judge doit recevoir une rubric claire

Le judge ne doit pas être appelé avec une instruction vague comme :

"Note cette réponse de 1 à 10."

Ce score serait difficile à défendre.

Le module recommande de lui fournir une vraie grille d’évaluation.

Par exemple :

def grade_by_model(task, solution):
    eval_prompt = f"""
    You are an expert reviewer.

    Evaluate the solution for the task.

    Task:
    {task}

    Solution:
    {solution}

    Return JSON with:
    "strengths": array of 1-3 points
    "weaknesses": array of 1-3 points
    "reasoning": a one to two sentence explanation
    "score": a number from 1 to 10
    """

    result = chat([
        {
            "role": "user",
            "content": eval_prompt
        }
    ])

    return json.loads(result)

Le point important n’est pas seulement le champ :

"score": 8

mais aussi :

"strengths": [],
"weaknesses": [],
"reasoning": "..."

Le document explique que demander au judge de produire ses forces, faiblesses et son raisonnement aide à rattacher le score à des critères concrets plutôt qu’à produire systématiquement une note moyenne confortable.


Définir les score bands

Une échelle :

1 à 10

est insuffisante si personne ne sait ce que signifie :

3
6
9

Il faut donc définir des plages.

Par exemple :

1–3
→ échec important

4–7
→ partiellement correct

8–10
→ satisfait largement les critères

Puis il faut adapter ces définitions à la tâche réelle.

Pour un résumé :

1–3
→ informations essentielles absentes ou incorrectes

4–7
→ idée générale correcte mais omissions ou imprécisions

8–10
→ fidèle, complet et conforme aux contraintes demandées

La rubric doit faire en sorte que deux évaluateurs raisonnables comprennent les scores de manière comparable.


Le piège : confondre précision numérique et fiabilité

Un judge peut retourner :

8.7 / 10

Cela semble très précis.

Mais la précision du nombre ne garantit absolument pas la qualité de la métrique.

C’est une illusion fréquente.

Un judge reste lui-même un modèle génératif.

Il peut :

  • interpréter différemment la rubric ;
  • varier entre deux exécutions ;
  • privilégier certains critères ;
  • mal distinguer deux niveaux proches.

Le document insiste donc sur une étape essentielle :

Un LLM-as-a-judge doit être calibré sur des cas évalués par des humains avant que ses scores soient considérés comme fiables.


La calibration : comparer le judge à des labels humains

La méthode commence avec un ensemble de cas déjà notés par des humains.

Par exemple :

Case A → humain = 9
Case B → humain = 2
Case C → humain = 7
Case D → humain = 5
Case E → humain = 3

On passe ensuite exactement les mêmes cas au judge :

             Humans
                │
                ↓
          reference labels

Cases ──────────────────┐
                       │
                       ↓
                  LLM judge
                       │
                       ↓
                 judge scores
                       │
                       ↓
               compare agreement

On mesure ensuite si le judge reproduit suffisamment bien le jugement humain.


Pourquoi mesurer l’accord ?

Supposons :

CasHumainJudge
A98
B23
C88
D56

Le judge semble raisonnablement aligné.

Mais imaginons :

CasHumainJudge
A95
B27
C84
D38

Le judge retourne toujours des nombres propres et structurés.

Pourtant sa métrique n’a presque aucune valeur.

Le module résume le problème ainsi : si un judge est en désaccord avec les labels humains environ la moitié du temps, son score peut sembler rigoureux mais ne constitue pas une preuve défendable.


Que faire lorsque la calibration est mauvaise ?

Il ne faut pas immédiatement changer de modèle.

Le premier levier est souvent la rubric.

Le document recommande notamment de :

  1. préciser la signification de chaque score ;
  2. clarifier les critères ;
  3. ajouter un exemple de bonne réponse ;
  4. ajouter un exemple de mauvaise réponse ;
  5. relancer la calibration ;
  6. mesurer à nouveau l’accord.

La boucle devient :

Human-labeled cases
        ↓
      Judge
        ↓
Agreement faible
        ↓
Améliorer rubric
        ↓
Ajouter exemples
        ↓
      Judge
        ↓
Re-measure agreement

Le judge doit donc lui-même être considéré comme un composant à évaluer.


Exemple de rubric améliorée

Au lieu de :

Note cette réponse de 1 à 10.

on peut fournir :

Evaluate the summary according to:

1. Faithfulness
   - It must not introduce facts absent from the source.

2. Completeness
   - It must include all important action items.

3. Instruction following
   - It must contain exactly two sentences.

Score:
1–3: major failure on one or more criteria.
4–7: broadly correct but with meaningful omissions or deviations.
8–10: faithful, complete, and compliant with the requested format.

Le score devient alors beaucoup plus interprétable.


Le reasoning du judge sert aussi au diagnostic

Supposons que deux prompts aient exactement le même score moyen :

Prompt A → 7.9
Prompt B → 7.9

Sans explication, difficile de comprendre la différence.

Mais le judge peut fournir :

{
  "strengths": [
    "Correctly identifies the refund delay"
  ],
  "weaknesses": [
    "Does not mention that the case was escalated"
  ],
  "reasoning": "The summary is faithful but incomplete.",
  "score": 7
}

Le score répond à :

Quelle est la qualité ?

Le reasoning aide à répondre à :

Pourquoi ce cas a-t-il échoué ?

Cette information peut orienter une modification du prompt.


Mais le reasoning n’est pas une vérité absolue

Le raisonnement du judge améliore la lisibilité de la décision.

Il ne transforme pas pour autant le judge en oracle.

Pour cette raison, la calibration humaine reste nécessaire.

Il faut conserver cette hiérarchie :

human-labeled cases
→ référence de calibration

judge reasoning
→ explication utile

judge score
→ métrique automatisée après calibration

LLM-as-a-judge et coût

Le judge ajoute un appel modèle.

Si une eval contient :

100 cas

le workflow peut nécessiter :

100 appels pour produire les réponses
+
100 appels pour les juger

Avec :

1000 cas

cela devient :

1000 + 1000 appels

Le document souligne donc que le judge est particulièrement coûteux par rapport à un exact match ou un code grader, qui peuvent s’exécuter localement.


Une architecture hybride est souvent préférable

Un système réel peut combiner plusieurs graders.

Exemple :

                 Claude output
                       │
          ┌────────────┼─────────────┐
          ↓            ↓             ↓
       JSON valid    fields       quality
          │          present         │
          ↓            ↓             ↓
      code grader   code grader   LLM judge

Le judge n’évalue alors que ce qu’un programme classique ne sait pas vérifier.

C’est une bonne application du principe :

Utiliser le mécanisme le plus simple capable de produire le signal nécessaire.


Exemple : évaluer un résumé

Supposons que la tâche soit :

Produire un résumé en deux phrases incluant le problème et le statut actuel.

On peut répartir l’évaluation.

Code grader

Vérifier approximativement que la sortie contient deux phrases.

LLM-as-judge

Évaluer :

  • si le problème est correctement identifié ;
  • si le statut est fidèle ;
  • si aucune information importante n’est inventée.

On obtient donc :

Format
→ code

Meaning
→ judge

Cette séparation réduit le coût et simplifie la rubric du judge.


Un judge est particulièrement utile pour la faithfulness

La faithfulness pose un problème difficile à coder.

Supposons le document source :

Le remboursement est retardé.
Le dossier a été escaladé au service financier.

Claude répond :

Le remboursement sera effectué demain.
Le service financier a confirmé le paiement.

La réponse peut être :

  • fluide ;
  • grammaticalement parfaite ;
  • structurée correctement.

Mais elle invente des faits.

Un parser ne peut pas détecter facilement cela.

Un judge peut recevoir :

source
+
expected behavior
+
generated output

et évaluer la fidélité.


Éviter une rubric trop générale

Une erreur fréquente consiste à demander au judge d’évaluer trop de choses en même temps.

Par exemple :

Evaluate accuracy, style, tone, safety, completeness,
creativity, usefulness, clarity, conciseness...

Le score final devient difficile à interpréter.

Un résultat de :

7

ne permet plus de savoir quelle dimension a posé problème.

Une bonne eval cherche une métrique directement liée au comportement attendu.

Par exemple :

faithfulness
completeness
instruction following

sont probablement suffisants pour un résumé.


Calibration et edge cases

La calibration ne doit pas contenir uniquement de bonnes et de mauvaises réponses évidentes.

Il faut aussi inclure des situations difficiles.

Par exemple :

excellent wording + factual omission

complete answer + one hallucinated detail

correct content + wrong required format

technically correct + ignores one instruction

mostly correct + subtle contradiction

Ce sont précisément ces cas qui révèlent si la rubric permet réellement au judge de distinguer les niveaux de qualité.


Ne pas confondre dataset d’eval et dataset de calibration

Il est utile de distinguer :

Calibration set
→ vérifier que le judge se comporte comme les humains

Eval set
→ mesurer la feature

Le premier valide l’instrument.

Le second utilise cet instrument pour mesurer le système.

Conceptuellement :

Human labels
     ↓
CALIBRATE JUDGE
     ↓
Validated judge
     ↓
RUN FEATURE EVAL
     ↓
Production score

C’est exactement la logique du thermomètre :

avant de prendre une mesure importante, il faut pouvoir faire confiance à l’instrument.


Coverage ou perfection ?

Le module indique qu’un dataset plus large avec une évaluation automatisée légèrement imparfaite peut être plus utile qu’un minuscule dataset parfaitement évalué.

Pourquoi ?

Parce que l’un des rôles principaux d’une eval est de détecter les régressions et les edge cases.

Trois cas extrêmement raffinés n’exercent que trois situations.

Vingt, cinquante ou cent cas représentatifs couvrent davantage la diversité réelle.

Cela ne signifie pas :

« La qualité du grader n’a aucune importance. »

Cela signifie :

Il faut arbitrer entre qualité du grading et couverture réelle des comportements.


Faire générer des cas par Claude

Le document suggère également de partir d’un petit ensemble humainement validé puis d’utiliser Claude pour générer des variantes et des edge cases supplémentaires.

Par exemple :

Voici cinq exemples de demandes client.

Génère des cas plus difficiles :
- informations contradictoires ;
- plusieurs dates ;
- absence d'information ;
- formulations ambiguës ;
- texte très long.

Ensuite :

generated cases
      ↓
human spot-check
      ↓
eval dataset

Le contrôle humain reste important pour éviter de polluer le dataset avec de mauvais cas ou des attentes incorrectes.


Le judge dans une pipeline CI/CD

Une architecture pratique pourrait distinguer deux niveaux.

Sur chaque modification

Exécuter :

unit tests
+
exact match evals
+
code graders

Ils sont :

  • rapides ;
  • peu coûteux ;
  • déterministes.

Sur une cadence plus lente

Exécuter :

full quality eval
+
LLM-as-judge

Par exemple avant :

  • une release ;
  • un changement de modèle ;
  • une modification importante du system prompt ;
  • une nouvelle version du retrieval ;
  • une nouvelle architecture agentique.

Le document source évoque précisément cette logique : les checks locaux peuvent tourner fréquemment, tandis que le judge est mieux adapté à une évaluation qualité périodique plus coûteuse.


Exemple de pipeline

Developer change
      │
      ↓
Unit tests
      │
      ↓
Code graders
      │
      ↓
Quick eval
      │
      ↓
Pass ?
 ┌────┴────┐
 │         │
No        Yes
 │         │
stop      ↓
       Full eval
          +
      LLM judge
          │
          ↓
     Quality gate
          │
          ↓
       Release

On crée ainsi une véritable quality gate.


Les métriques doivent servir une décision

Un score ne sert à rien s’il n’est associé à aucune règle de décision.

Par exemple :

baseline = 8.3

Nouvelle version :

8.5

Cela peut autoriser la promotion.

Mais si :

average = 8.5

et que trois cas critiques passent de :

10 → 2

le système ne devrait peut-être pas être déployé.

Il faut donc regarder :

aggregate score
+
critical cases
+
per-case breakdown

et pas seulement une moyenne globale.


Exemple de règle de promotion

On pourrait définir :

Global score >= 8.5

AND

No critical case < 8

AND

Faithfulness >= baseline

AND

No regression > defined threshold

C’est seulement un exemple d’architecture ; le document source ne prescrit pas ces seuils numériques.

L’idée importante, elle, est bien présente dans le module : utiliser les evals comme signal mesurable pour décider si une modification améliore réellement le système.


Quand ne pas utiliser LLM-as-a-judge

Le document est très clair sur ce point.

Si l’output est :

"billing"

et que la bonne réponse est :

"billing"

utilisez :

exact match

Si la sortie doit simplement être du JSON valide :

code grader

Un judge n’ajouterait que :

cost
+
latency
+
variance

sans fournir un meilleur signal.


Tableau de décision rapide

SituationSolution
Une seule réponse correcteExact match
JSON valideCode grader
Champs obligatoiresCode grader
Code parseableCode grader
Valeur numérique dans une plageCode grader
Résumé fidèleLLM-as-judge
Qualité d’une justificationLLM-as-judge
Respect complexe des instructionsLLM-as-judge
Judge non comparé à des humainsNe pas encore lui faire confiance

Ce qu’il faut retenir pour la certification

Le pattern essentiel est :

Open-ended output
      ↓
LLM-as-judge
      ↓
Rubric
      ↓
Human-labeled calibration set
      ↓
Measure agreement
      ↓
Use judge at scale

1. Le judge est un second appel modèle

Il est utilisé lorsqu’une règle de code ne peut pas mesurer correctement la qualité.

2. Une rubric explicite est indispensable

Le score doit correspondre à des critères observables.

3. Demander reasoning + strengths + weaknesses

Cela rend le score plus explicable et facilite le diagnostic.

4. Un judge doit être calibré

Comparer ses résultats à des human-labeled cases.

5. Mesurer l’accord

Une apparence de précision numérique ne signifie rien si le judge ne correspond pas suffisamment au jugement humain.

6. Le judge coûte plus cher

Chaque cas peut nécessiter un appel modèle supplémentaire.

7. Préférer les graders déterministes lorsqu’ils suffisent

exact/code
>
judge

lorsqu’ils peuvent mesurer le comportement attendu.


Pièges d’examen

Scénario : vous voulez vérifier qu’un output contient quatre propriétés JSON obligatoires.

Réponse appropriée :

Code grader, pas LLM-as-judge.


Scénario : vous souhaitez évaluer si un résumé reste fidèle à un document tout en couvrant les informations importantes.

Réponse appropriée :

LLM-as-judge avec rubric.


Scénario : votre judge retourne systématiquement des scores très détaillés, mais vous ne l’avez jamais comparé à des évaluateurs humains.

Conclusion :

Le judge n’est pas encore calibré et ses scores ne sont pas suffisamment défendables.


Scénario : votre judge disagree fortement avec les humains.

Première action :

Améliorer la rubric, préciser les scores, ajouter des exemples, puis mesurer à nouveau l’accord.


Scénario : vous avez 2 000 cas de validation JSON à lancer à chaque commit.

Solution :

Code grader, parce qu’un judge ajouterait inutilement des milliers d’appels API.


À retenir en une phrase

Un LLM-as-a-judge est utile lorsque la qualité est ouverte et difficile à coder, mais son score n’est crédible qu’après avoir défini une rubric claire et calibré le judge sur des cas évalués humainement.

Le phare info – Média indépendant & critique
Sélectionne, organise, contextualise et partage des contenus pertinents autour d’un thème ou d’une problématique, dans une logique de veille, de transmission et de mise en sens.
Pour cet article, l’intelligence artificielle a été utilisée comme un outil d’aide à l’exploration, à la structuration et à la rédaction. Elle permet de confronter plusieurs angles, de repérer certains biais humains possibles et de faire émerger des points de vigilance. Le curateur humain observe aussi les biais possibles de l’IA, vérifie les éléments essentiels, nuance l’analyse, corrige les formulations fragiles et assume la publication.

Articles liés

Fiche de révision certification — Accelerators & IP Contribution

Cette fiche résume les notions essentielles du module Accelerators & IP Contribution. Le fil conducteur est simple : Un build Claude n’est pas terminé lorsqu’il fonctionne....

Étude de cas : corriger un accelerator Claude mal packagé, mal versionné et mal sécurisé

Un système Claude peut fonctionner parfaitement en démonstration et pourtant être impropre à la production. Le cas cumulatif du module illustre précisément cette situation. L’application : s’exécute...

Applications Claude multi-composants : trust boundaries, least privilege et sécurité

Une application Claude moderne n’est souvent pas constituée d’un seul appel API. Elle peut combiner : une API applicative ; Claude ; un agent ; Claude Code ; un MCP...

Comparer les plateformes Claude : latency, compliance, data residency et total cost

Lorsque plusieurs plateformes permettent d’exécuter Claude, comment choisir ? Une comparaison superficielle pourrait se limiter à : la plateforme la moins chère ; celle que l’équipe connaît...

Model versioning avec Claude : pin what ships, eval gates et rollback

Changer de modèle dans une application Claude peut sembler être une modification minime : model = "new-model" Pourtant, en production, ce changement peut modifier : la qualité...

Le sentier du savoir

De la curiosité à la transmission, explorez les étapes qui permettent de transformer l’information en compréhension durable.

Étape 1 — Construire une culture générale solide

Construire une base solide de connaissances pour comprendre le monde. Relier les faits, les disciplines et les repères essentiels.

Étape 2 — Maîtriser la pensée critique et l’analyse : apprendre à penser contre ses propres certitudes

Apprendre à analyser l’information, repérer les biais et questionner les évidences. Penser par soi-même dans un monde saturé de récits.

Étape 3 – Apprendre à argumenter et à convaincre

Structurer sa pensée pour convaincre sans manipuler. Savoir débattre, nuancer et formuler des idées claires.

Étape 4 – Approfondir un ou plusieurs domaines d’expertise

Explorer un ou plusieurs domaines en profondeur. Passer de la curiosité à la compréhension experte.

Etapes 5 : Devenir polyglotte : élargir sa pensée par les langues

Élargir ses horizons par le langage et les cultures. Penser autrement en changeant de langue.

Étape 6 — Comprendre la méthode scientifique et expérimenter

Comprendre la méthode scientifique et l’expérimentation. Distinguer savoirs établis, hypothèses et croyances.

Étape 7 – Écrire, transTransmission : écrire, transmettre, enseigner

Écrire, expliquer, partager ce que l’on a compris. Transformer le savoir en outil collectif.

Étape 8 — Cultiver l’équilibre corps-esprit pour soutenir l’érudition

Cultiver le corps et l’esprit pour soutenir l’érudition dans le temps. Le savoir durable repose aussi sur l’attention et l’équilibre personnel.