Calibration du LLM juge
Étiquetez automatiquement vos données avec un ou plusieurs juges LLM, puis effectuez une passe de calibration humaine en aveugle pour mesurer l'exactitude, l'accord et l'erreur de calibration. Répond à la question « dois-je faire confiance à ce juge LLM ? » par un flux de travail défendable et reproductible.
La calibration des juges étiquette automatiquement vos données avec un ou plusieurs juges LLM, puis les calibre face à des étiquettes humaines en aveugle, afin que vous puissiez quantifier jusqu'où faire confiance à un LLM juge. Vous écrivez un prompt de juge, vous choisissez les modèles, et Potato échantillonne chacun k fois sur vos données. Vous étiquetez ensuite un échantillon en aveugle sans voir les réponses des modèles, et Potato rapporte l'exactitude par modèle, l'accord humain↔modèle et modèle↔modèle, l'erreur de calibration et les matrices de confusion.
Utiliser un LLM pour noter les sorties des modèles est désormais courant dans l'évaluation des agents et des modèles, mais un juge n'est utile que si vous savez à quel point il suit le jugement humain. La calibration est l'étape de mesure qui rend cette confiance défendable.
Fonctionnement
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED
- Génération — chaque modèle est interrogé k fois par élément. L'étiquette modale est la prédiction ; la fraction des k échantillons qui concordent avec elle est la confiance du modèle. Les résultats sont écrits dans un magasin dédié, jamais mélangés aux données d'annotation, si bien que les humains ne peuvent pas les voir.
- Calibration humaine — Potato tire un échantillon aléatoire ou stratifié des éléments étiquetés, et un ou plusieurs humains les étiquettent en aveugle via l'interface d'annotation habituelle.
- Rapport — les métriques sont calculées sur le recouvrement humain∩modèle et écrites dans le répertoire de sortie.
Comme les étiquettes des modèles vivent dans un magasin séparé et ne sont jamais injectées dans l'interface, l'aveuglement est structurel plutôt qu'une affaire de discipline de l'annotateur.
Démarrage rapide
Lancez l'exemple fourni depuis la racine du dépôt :
python potato/flask_server.py start examples/ai-assisted/judge-calibration/config.yaml -p 8000 --debug- Ouvrez
http://localhost:8000/judge_calibration/adminpour configurer et exécuter. - Une fois la génération terminée, étiquetez l'échantillon en aveugle sur
http://localhost:8000/annotate. - Cliquez sur Build report, puis ouvrez
http://localhost:8000/judge_calibration/report.
L'exemple utilise un modèle Ollama local, donc aucune clé d'API n'est requise. Démarrez Ollama et lancez d'abord ollama pull llama3.2:3b.
Configuration
judge_calibration:
enabled: true
prompt: | # supports {text}, {labels}, {description}
You are an impartial expert annotator. Classify the sentiment as exactly
one of: positive, negative, neutral.
models:
- endpoint_type: openai # openai | anthropic | ollama | vllm | gemini | openrouter | huggingface
model: gpt-4o-mini
api_key: ${OPENAI_API_KEY} # env-var expansion supported
temperature: 0.7 # must be > 0 so the k samples vary
- endpoint_type: ollama
model: llama3.1:8b
base_url: http://localhost:11434
temperature: 0.7
k_samples: 5 # samples per model per item
max_items: 1000 # cap on items the LLMs label (null = all)
sampling:
strategy: stratified # random | stratified | all
sample_size: 200 # how many items humans blind-label
seed: 42
human:
num_raters: 1 # 1 = solo researcher; N adds human-human IAA
gold: single # single | majority
schemas: [sentiment] # annotation_scheme names to evaluate ([] = all)
output:
dir: judge_calibration_outputVous pouvez remplacer la plupart de ces valeurs dans l'assistant d'administration et relancer.
Définissez temperature > 0. Avec k_samples > 1 et une température de 0, les échantillons sont identiques, la confiance vaut toujours 1.0 et le rapport de calibration n'a aucun sens ; dans ce cas, Potato émet un avertissement au démarrage.
Types d'annotation pris en charge
| Type | Statut | Métriques |
|---|---|---|
radio / select | Pris en charge | exactitude, P/R/F1, Cohen/Fleiss κ, Krippendorff α, ECE, confusion |
likert | Pris en charge | ce qui précède plus MAE et Krippendorff α ordinal |
multiselect | Pris en charge | P/R/F1 par étiquette, Jaccard moyen, exactitude en correspondance exacte, calibration |
span | Expérimental | P/R/F1 appariés par IoU, IoU moyen, accord span-F1, calibration au niveau du span |
La prise en charge des spans regroupe les spans à décalage de caractères du juge sur les k échantillons et les apparie à la référence via l'intersection sur union ; ses heuristiques sont directionnelles, et non exactes.
Ce que contient le rapport
- Exactitude, précision, rappel et F1 de chaque modèle face à l'étiquette de référence humaine.
- κ de Cohen réparti en paires humain↔modèle, modèle↔modèle et humain↔humain.
- κ de Fleiss et α de Krippendorff sur l'ensemble des évaluateurs.
- Erreur de calibration attendue (ECE), bins de fiabilité et score de Brier, montrant à quel point la confiance issue de la fraction des votes suit la justesse.
- Une matrice de confusion par modèle face à la référence humaine.
Les métriques sont calculées sur le recouvrement : les éléments étiquetés à la fois par les modèles et les humains, restreints à l'échantillon de calibration lorsqu'un échantillon a été tiré.
La sortie est écrite sous output.dir : llm_labels.jsonl (une ligne par modèle, élément et schéma), report.json et un report.html lisible par un humain.
Calibration des juges vs. alignement des juges
La calibration des juges utilise plusieurs juges, une confiance empirique (la fraction des votes sur les k échantillons) et garde l'humain strictement en aveugle. L'alignement des juges calibre un seul juge face à des étiquettes de référence humaines existantes, montre son verdict en ligne pendant l'annotation et s'articule autour de l'itération sur une grille d'évaluation. Optez pour la calibration lorsque vous évaluez des juges candidats ; optez pour l'alignement lorsque vous ajustez un seul juge face à un jeu de référence fixe.
Voir aussi
- Alignement juge ↔ humain — calibration en ligne d'un seul juge
- Mode solo — étiquetage collaboratif complet humain-LLM
- Guide de l'accord inter-annotateurs — les métriques kappa et alpha en détail
Pour les détails d'implémentation, consultez la documentation source.