Réponse courte
Vous donnez à un second modèle, le juge, la question, la réponse à vérifier et une courte grille d’évaluation écrite, et vous lui demandez de raisonner critère par critère avant de donner une note dans un format fixe. Cela fonctionne assez bien pour tester rapidement des centaines de réponses, à condition qu’une personne vérifie un échantillon de ses notes et que vous vous protégiez contre ses biais connus.
Question de suivi Comment garder le juge honnête?
Quand vous construisez quelque chose avec un modèle de langage, comme un assistant de soutien à la clientèle ou un outil de résumé, vous avez vite besoin de savoir si une modification de votre prompt a rendu les réponses meilleures ou pires. Relire 200 réponses à la main après chaque modification, c’est long. Pour les questions qui ont une seule bonne réponse, un simple programme peut comparer la sortie au texte attendu. Pour les réponses ouvertes, comme une réponse à un courriel ou une explication, il n’y a pas de chaîne de caractères exacte à comparer.
C’est là qu’intervient le « modèle juge ». Un second modèle lit chaque réponse et la note selon des critères que vous mettez par écrit. Des chercheurs de l’Université de Californie à Berkeley et leurs collègues ont testé cette idée en 2023 dans un article intitulé Judging LLM-as-a-Judge. Ils ont constaté que GPT-4, dans le rôle de juge, s’accordait avec les préférences humaines plus de 80 % du temps, à peu près aussi souvent que deux humains s’accordent entre eux. Un juge est donc un premier filtre utile, pas le dernier mot.
Trois façons de mettre en place un juge
Le même article décrit trois montages, chacun adapté à un usage différent.
| Montage | Ce que voit le juge | Utile pour |
|---|---|---|
| Notation d’une seule réponse | Une question et une réponse; renvoie une note | Suivre la qualité dans le temps sur un jeu de tests fixe |
| Comparaison par paires | Une question et deux réponses; choisit la meilleure ou déclare l’égalité | Choisir entre deux prompts ou deux modèles |
| Notation guidée par une référence | La réponse plus une solution de référence correcte | Les mathématiques, les faits, tout ce dont le résultat se vérifie |
Les notes uniques sont faciles à produire à grande échelle, mais peuvent rater de petites différences. La comparaison par paires détecte ces différences, mais le nombre de paires augmente vite quand vous comparez de nombreuses versions.
Écrire la grille d’abord
Une grille d’évaluation est une courte liste de critères, avec un sens clair pour chaque note. Une consigne vague comme « note cette réponse de 1 à 10 » appelle des notes vagues. Une grille de trois ou quatre critères et une petite échelle (de 1 à 3, ou réussi et échoué) donnent des résultats plus constants, parce que le juge a moins de place pour deviner ce que vous vouliez dire.
Voici un exemple de grille pour l’assistant de service à la clientèle d’une boulangerie :
| Critère | 1 | 2 | 3 |
|---|---|---|---|
| Exact | Affirme quelque chose de faux sur les heures, les prix ou la politique | En partie juste, ou vague | Correspond entièrement aux faits fournis |
| Utile | Ne répond pas à la question | Y répond, mais oublie l’étape suivante | Répond et dit au client quoi faire ensuite |
| Ton | Froid ou trop familier | Poli, mais raide | Chaleureux et professionnel |
Un exemple de prompt de juge
Le prompt du juge réunit les faits, la grille, la question et la réponse. Il demande au juge d’expliquer son raisonnement pour chaque critère avant de noter, ce qui tend à rendre la notation plus soignée, et il demande le résultat en JSON, un format de données simple que votre code peut lire.
Tu notes des réponses rédigées par un assistant de service à la clientèle pour une boulangerie.
Faits que la réponse doit respecter :
- Ouvert du mardi au dimanche, de 7 h à 17 h. Fermé le lundi.
- Les gâteaux sur mesure exigent un préavis de 72 heures et un dépôt de 20 %.
Grille (note chaque critère 1, 2 ou 3) :
- correct : 1 = faux sur les heures, les prix ou la politique; 2 = en partie juste ou vague; 3 = correspond entièrement aux faits.
- helpful : 1 = ne répond pas; 2 = répond, mais oublie l’étape suivante; 3 = répond et donne l’étape suivante.
- tone : 1 = froid ou trop familier; 2 = poli, mais raide; 3 = chaleureux et professionnel.
Question du client :
<question>
Est-ce que je peux commander un gâteau d’anniversaire pour samedi? On est jeudi.
</question>
Réponse à noter :
<reply>
Bien sûr! Passez vendredi et il sera prêt pour samedi.
</reply>
D’abord, écris une phrase de raisonnement pour chaque critère. Ensuite, donne seulement ce JSON sur la dernière ligne :
{"correct": n, "helpful": n, "tone": n}Un exemple de résultat : le juge note qu’entre jeudi et samedi, il y a moins de 72 heures et que la réponse ne mentionne jamais le dépôt; il attribue donc 1 pour l’exactitude, 1 pour l’utilité et 3 pour le ton. Un ton amical avait caché une promesse fausse.
Dans le code, vous parcourez vos questions de test, faites passer chaque réponse par ce prompt, lisez le JSON et faites la moyenne des notes par critère. Réglez la température (le paramètre qui contrôle le hasard) à 0 pour qu’une même réponse obtienne une note plus constante d’une exécution à l’autre.
À essayer : écrivez cinq questions de clients et deux versions du prompt de votre assistant. Notez les deux séries de réponses avec le prompt de juge ci-dessus, puis lisez vous-même les trois réponses qui ont la plus basse note d’exactitude et décidez si le juge avait raison.
Comment garder le juge honnête?
Commencez par connaître ses biais. L’étude de Berkeley en nomme trois. Le biais de position : quand ils comparent deux réponses, les juges ont tendance à favoriser une position, souvent la première. Le biais de verbosité : les juges peuvent préférer une réponse plus longue même quand elle n’apporte rien de plus. Le biais d’autopromotion : un juge peut favoriser les réponses écrites par son propre modèle, même si l’étude n’a pas pu le prouver. Les juges trébuchent aussi quand ils notent des mathématiques, parfois induits en erreur par une réponse fausse alors qu’ils auraient pu résoudre le problème correctement par eux-mêmes.
Chaque biais a sa parade pratique. Pour la notation par paires, faites chaque comparaison deux fois en inversant les réponses, et ne comptez une victoire que si les deux ordres concordent; sinon, déclarez l’égalité. Pour contrer la verbosité, ajoutez à la grille une ligne comme « La longueur n’est pas un critère; ne récompense pas la répétition. » Si possible, utilisez un juge d’une autre famille de modèles que celui qui est noté. Pour les mathématiques ou les faits, donnez au juge une réponse de référence. Dans l’étude, faire d’abord résoudre le problème par le juge, puis lui faire utiliser cette solution comme référence, a fait passer ses échecs de notation en mathématiques de 70 % à 15 %.
Vérifiez ensuite le juge par rapport à des personnes. Le cadre Evals d’OpenAI, à code source ouvert, recommande exactement cela pour les tests notés par un modèle : recueillir des étiquettes humaines pour un ensemble d’exemples et mesurer à quelle fréquence le choix du juge y correspond. Vous pouvez faire la même chose dans un tableur. Choisissez de 20 à 30 réponses au hasard, notez-les vous-même sans regarder les notes du juge, puis comparez. Si vous êtes d’accord sur la plupart, gardez le juge et refaites ce contrôle ponctuel chaque fois que vous changez la grille ou le modèle juge. Si vous êtes souvent en désaccord, lisez les désaccords : ils pointent habituellement vers un critère qui a besoin d’une définition plus claire.
Sources
- Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena — arXiv (Zheng et al., UC Berkeley, LMSYS), 9 juin 2023
- Building an eval (openai/evals docs) — OpenAI (GitHub), 29 août 2023