Judges : Évaluation Automatique par LLM
Automatiser l’évaluation de la qualité
Relire manuellement des milliers de conversations pour évaluer la qualité de votre LLM est impossible à l’échelle de la production. Les Judges résolvent ce problème : ce sont des évaluateurs basés sur LLM que vous configurez une fois, puis que vous appliquez à grande échelle via des Campaigns.
Un Judge prend en entrée un événement de chat completion (la conversation, la réponse, le contexte) et produit en sortie un label de classification ou un score numérique.
Deux types de Judges
Classification
Un Judge de classification attribue des labels discrets à chaque réponse. Exemples :
- Binaire :
helpful/not_helpful - Multi-classes :
excellent/acceptable/poor - Catégorisation :
code_question/general_knowledge/troubleshooting - Sécurité :
safe/needs_review/unsafe
Régression
Un Judge de régression attribue un score numérique dans un intervalle défini :
- Note d’utilité de 1 à 5
- Score de pertinence de 0 à 100
- Niveau de confiance de 0.0 à 1.0
Écrire de bonnes instructions
Les instructions du Judge déterminent la qualité de l’évaluation. Voici les règles :
- Soyez spécifique — Ne dites pas “Évaluez la qualité”. Dites “Évaluez si la réponse répond directement à la question posée, avec des informations factuellement correctes.”
- Ne présumez pas le contexte — Explicitement ce que “bon” signifie dans votre cas.
- Incluez des exemples limites — “Un score de 3 signifie que la réponse est partiellement correcte mais manque d’un élément clé.”
- Rendez-le testable — Si deux évaluateurs humains ne seraient pas d’accord, votre critère est trop vague.
Variables Jinja2
Dans vos instructions, vous pouvez référencer le contenu de l’événement avec des variables Jinja2 :
| Variable | Contenu |
|---|---|
{{ conversation_history }} | Historique complet de la conversation |
{{ user_message }} | Dernier message de l’utilisateur |
{{ assistant_message }} | Dernière réponse de l’assistant |
{{ system_prompt }} | System prompt utilisé |
{{ available_tools }} | Outils disponibles pour le modèle |
{{ properties.* }} | Propriétés custom du dataset |
Créer un Judge de Classification via le SDK
from mistralai import Mistral
client = Mistral(api_key="votre-clé-api")
# Judge de classification à 3 niveaux
classifier = client.beta.observability.judges.create(
name="Qualité des réponses support",
model_name="mistral-medium-latest",
instructions="""
Évaluez la qualité de la réponse de l'assistant au message
de l'utilisateur.
Contexte : il s'agit d'un chatbot de support technique.
Critères :
- La réponse est-elle factuelle et correcte ?
- Répond-elle directement à la question posée ?
- Le ton est-il professionnel et empathique ?
Message utilisateur : {{ user_message }}
Réponse assistant : {{ assistant_message }}
Classifiez la réponse selon les catégories suivantes.
""",
output={
"type": "CLASSIFICATION",
"options": [
{
"value": "excellent",
"description": "Réponse correcte, complète et professionnelle"
},
{
"value": "acceptable",
"description": "Réponse correcte mais incomplète ou ton perfectible"
},
{
"value": "poor",
"description": "Réponse incorrecte, hors-sujet ou non professionnelle"
}
]
}
)
print(f"Judge créé : {classifier.id}")
Créer un Judge de Régression via le SDK
# Judge de régression : score d'utilité 1-5
scorer = client.beta.observability.judges.create(
name="Score d'utilité",
model_name="mistral-small-latest",
instructions="""
Évaluez l'utilité de la réponse de l'assistant sur une échelle de 1 à 5.
1 = Inutile (hors-sujet, incorrect, ou ne répond pas à la question)
2 = Peu utile (partiellement correct mais manque l'essentiel)
3 = Moyennement utile (correct mais incomplet ou trop vague)
4 = Utile (correct et suffisamment détaillé)
5 = Très utile (correct, détaillé, avec des exemples ou étapes claires)
Message utilisateur : {{ user_message }}
Réponse assistant : {{ assistant_message }}
Historique : {{ conversation_history }}
Attribuez votre score.
""",
output={
"type": "REGRESSION",
"min": 1,
"max": 5
}
)
print(f"Judge scorer créé : {scorer.id}")
Valider avant de scaler
Un Judge non validé peut produire des annotations incorrectes à grande échelle. Avant de lancer une Campaign :
- Testez sur 10-20 enregistrements manuellement
- Vérifiez l’accord — Le Judge donne-t-il les mêmes résultats que vous ?
- Testez la stabilité — En relançant sur les mêmes données, les résultats sont-ils identiques ?
- Identifiez les patterns d’échec — Sur quels types de conversations le Judge se trompe-t-il ?
Si le taux d’accord est inférieur à 80 %, retravaillez vos instructions.
Points clés à retenir
- Les Judges automatisent l’évaluation de qualité : classification (labels) ou régression (scores)
- Les instructions doivent être spécifiques, contextualisées et testables
- Les variables Jinja2 donnent accès au contenu de l’événement dans les instructions
- Validez toujours un Judge sur 10-20 exemples avant de le déployer en Campaign
- Les Judges ne s’exécutent pas seuls : il faut les attacher à une Campaign