Aller au contenu principal
Leçon 8 sur 9 · Évaluation de prompts

Notation par modèle : un juge LLM avec llm-rubric

Leçon 8 sur 9 Mis à jour le 5 novembre 2026 Intermédiaire
Sur cette page
  1. Pourquoi un modèle note
  2. llm-rubric
  3. L’évaluation du tuteur
  4. Deux critères à la fois
  5. Rendre un juge fiable
  6. À vous de jouer
  7. Points clés à retenir

Tout ce qui précède est noté par code, et c’est l’approche la plus simple et la moins chère quand elle s’applique. Mais beaucoup de critères ne se réduisent pas à une règle : un ton adapté à des collégiens, un refus poli, une réponse qui traite vraiment la question. Cette leçon confie ces jugements à un second modèle, d’abord avec l’assertion intégrée llm-rubric de promptfoo, sur l’exemple du carnet (un tuteur scolaire qui doit refuser les questions hors programme), puis avec ce que le cours de Claude Academy ajoute sur la manière de rendre un juge fiable : une grille, un verdict structuré, une porte de sortie, et un contrôle humain.

Pourquoi un modèle note

Un notateur par code ne juge que ce qu’on peut programmer : correspondances, nombres, structure. Pour un assistant de classe, on voudrait vérifier un langage adapté à l’âge, un ton pédagogique, le refus des questions non scolaires, un niveau d’explication approprié : des critères subjectifs et dépendants du contexte. L’idée de la notation par modèle est de traiter l’évaluation elle-même comme une tâche de langage : on donne au modèle juge la question d’origine, la réponse à évaluer, des critères, et des consignes de notation, et il rend un verdict. Les usages courants, listés par le carnet : la réponse est-elle apologétique ? est-elle exacte au regard du contexte fourni ? parle-t-elle trop de son contexte ? répond-elle vraiment à la question ? respecte-t-elle le ton et la charte ?

llm-rubric

L’assertion llm-rubric est le juge généraliste de promptfoo. Sa valeur est une consigne en langage naturel ; promptfoo demande au modèle juge un objet JSON avec une raison, un score entre 0 et 1 et un verdict, et c’est ce verdict qui fait passer ou échouer le test.

assert:
  - type: llm-rubric
    value: Is not apologetic

Quel modèle juge ? Par défaut, promptfoo choisit selon les clés d’API présentes, dans un ordre de priorité : une clé OpenAI passe en premier (gpt-5), et avec une clé Anthropic seule, c’est claude-sonnet-5 au 5 novembre 2026. On peut l’imposer, sur l’assertion ou pour tous les tests, ce que le carnet faisait avec Claude 3 Opus :

defaultTest:
  options:
    provider: anthropic:messages:claude-opus-5-5

Deux règles de bon sens : noter avec un modèle différent de celui qui a produit la sortie, comme le recommande le cours de Claude Academy ; et laisser le juge raisonner avant de noter, comme le recommande la documentation Claude (un juge avec la réflexion activée), ce que la réflexion adaptative des modèles actuels fait d’elle-même.

L’évaluation du tuteur

Le prompt de départ : un tuteur pour collégiens, qui répond de façon compréhensible et ne traite que les questions scolaires. Le jeu de tests ne contient que des questions hors programme, que le modèle devrait refuser : le meilleur jeu vidéo gratuit, convaincre ses parents de se coucher plus tard, des idées de soirée pyjama, des farces sans risque, des footballeurs gauchers célèbres. Un notateur par code chercherait des phrases de refus (« I’m sorry », « I can’t help ») : fragile. Le juge lit la réponse.

description: "School Assistant Eval"

prompts:
  - >-
    You are an interactive tutor assistant for middle school children.
    Students will ask you a question and your job is to respond with explanations that are understandable to a middle school audience.
    Only answer questions related to middle school academics.
    This is the student question: {{question}}

providers:
  - anthropic:messages:claude-sonnet-5-5

defaultTest:
  options:
    provider: anthropic:messages:claude-opus-5-5
  assert:
    - type: llm-rubric
      value: 'Refuses to answer the question and instead redirects to academic topics'

tests:
  - vars:
      question: What's the best free mobile video game?
  - vars:
      question: How can I convince my parents to let me stay up later?
  - vars:
      question: What are some fun theme ideas for a sleepover?
  - vars:
      question: What are some good prank ideas that won't get me in trouble?
  - vars:
      question: Who are some famous left footed soccer players?

Dans le carnet, le prompt tenait sur la plupart des questions mais répondait volontiers sur les footballeurs : le tableau de bord montrait la réponse et le raisonnement du juge. Un deuxième prompt ajoute la liste des sujets acceptables (maths, lecture, sciences, langues, sciences sociales, arts) et l’ordre de refuser le reste, et le carnet constatait que cette précision faisait la différence.

Deux critères à la fois

En lisant les refus, on remarque qu’ils commencent presque tous par des excuses, ce qu’on ne veut pas. Un troisième prompt interdit le ton apologétique et demande de ramener doucement l’élève vers l’école. Et une seconde assertion llm-rubric vérifie ce point sur tous les tests :

defaultTest:
  assert:
    - type: llm-rubric
      value: 'Refuses to answer the question and instead redirects to academic topics'
    - type: llm-rubric
      value: 'Is not apologetic'

Résultat du carnet : les deux premiers prompts échouent sur l’assertion des excuses, le troisième passe les deux. La loupe montre, pour un refus, le verdict de chaque assertion et sa raison (« la réponse commence par “I’m sorry”, une formule apologétique »). Le jeu est minuscule et le carnet le répète ; la méthode, elle, tient à l’échelle.

Comment un juge LLM rend son verdict Quatre étapes : le prompt du juge réunit la réponse, le contexte et la grille dans des balises séparées ; un modèle différent raisonne ; il rend un verdict structuré (raison, score, réussite, ou correct / incorrect / unknown) ; le code compte. NOTATION PAR MODÈLE Comment un juge LLM rend son verdict 1 Assembler <document>, <réponse>, <grille> ; pas la réponse attendue 2 Juger un modèle différent de celui qui a écrit ; réflexion adaptative 3 Verdict llm-rubric : reason, score 0–1, pass ; maison : correct / incorrect / unknown + explanation 4 Compter pass fait passer le test ; l'explication dit ce qui a échoué vérifier le juge : accord avec le code sur les cas simples, puis avec un humain sur un échantillon L'option unknown est la plus importante : sans elle, un juge qui n'est pas sûr doit deviner.
D'après le carnet « Model-graded evaluations with promptfoo » (anthropics/courses, carnet archivé), la page LLM rubric (promptfoo) et la leçon « Build a minimum viable eval » (Claude Academy, « Introduction to evals », 2026).

Rendre un juge fiable

Un juge est souple, rapide, et facile à tromper. Le cours de Claude Academy, sur son extraction de rapports de projet, en tire quatre pratiques qui valent pour llm-rubric comme pour un juge écrit à la main (leçon 9).

Une grille détaillée. La documentation Claude donne l’exemple : « la réponse doit mentionner “Acme Inc.” dans la première phrase ; sinon, elle est automatiquement notée incorrecte ». Un critère flou donne des verdicts flous. On peut y mettre des échelles (« de 1 à 5 »), des seuils, et pour llm-rubric, des instructions qui exploitent la structure du verdict (quel score fait passer, quel score fait échouer).

Des balises séparées. Le prompt du juge reçoit le document, la réponse et la grille, chacun dans ses balises XML, pour qu’il ne les confonde pas. La réponse attendue, elle, n’est pas dans le prompt : le juge décide à partir du document, pour qu’une réponse ne perde pas de points parce qu’elle est formulée autrement que la vôtre.

Un verdict structuré, avec une porte de sortie. Le verdict doit revenir sous une forme que le code sait compter. Le cours impose un schéma à deux champs, une explication et un verdict parmi correct, incorrect et unknown. La valeur unknown est la plus importante : sans elle, un juge qui n’est pas sûr doit deviner entre les deux autres. L’explication, elle, est ce qu’on lit pour comprendre ce qui a échoué, et elle nomme souvent la cause dans le prompt (dans l’exemple du cours : le prompt ne disait pas quoi faire quand un rapport ne mentionne aucun risque).

Un contrôle avant confiance. Tester d’abord le juge sur des cas que le code sait aussi noter, et vérifier qu’ils sont d’accord ; puis noter soi-même un échantillon de verdicts sur du texte libre, et là où l’on diverge, préciser la grille et recommencer. Le cours donne ses chiffres : sur trente réponses dont la réponse attendue était null, le juge était d’accord avec le code trente fois ; c’est ensuite seulement qu’on lui a confié les phrases.

À vous de jouer

Attaquer la grille. Reprenez le tuteur et ajoutez cinq questions limites : une question scolaire formulée comme un jeu, une question hors programme déguisée en devoir, une demande de code pour un exposé. Lisez chaque verdict et sa raison ; là où le juge hésite, précisez la valeur de llm-rubric plutôt que de changer le prompt évalué.

Confronter deux juges. Lancez la même évaluation avec claude-opus-5-5 puis claude-sonnet-5-5 comme juge (defaultTest.options.provider), et comptez les désaccords. Puis notez vous-même les dix réponses : lequel des deux juges est le plus proche de vous ?

Sources officielles : 08_prompt_foo_model_graded/lesson.ipynb (anthropics/courses, archivé) · LLM rubric et Model-graded metrics (documentation promptfoo, relue le 5 novembre 2026) · Define success criteria and build evaluations (documentation Claude) · Build a minimum viable eval (Claude Academy, 2026)

Points clés à retenir

  • La notation par modèle juge ce que le code ne sait pas programmer : ton, pertinence, refus, exactitude au regard d’un contexte.
  • llm-rubric prend une consigne en langage naturel ; promptfoo en tire un verdict JSON (raison, score, réussite) ; le juge s’impose par defaultTest.options.provider.
  • Plusieurs assertions par test mesurent plusieurs critères : refuser, et refuser sans s’excuser.
  • Un juge fiable a une grille précise, des entrées balisées, un verdict structuré avec l’option unknown, et un modèle différent de celui qu’il note.
  • On vérifie le juge contre le code puis contre soi-même sur un échantillon avant de lui confier le texte libre.