Skip to content

Alignement juge ↔ humain

Mesurez à quel point un juge LLM s'accorde avec vos étiquettes de référence humaines. Potato exécute le juge sur les instances annotées, calcule le kappa de Cohen, une matrice de confusion et une liste de désaccords, et suit l'accord à mesure que vous affinez la grille.

L'alignement du juge mesure et ajuste à quel point un juge LLM s'accorde avec vos étiquettes de référence humaines. Potato exécute un LLM-as-a-judge configurable sur les instances que vos annotateurs ont déjà étiquetées, calcule le κ de Cohen, une matrice de confusion et une liste de désaccords, et suit κ à mesure que vous modifiez la grille du juge. Avec le mode en ligne activé, le verdict du juge apparaît à côté de l'étiquette humaine pendant l'annotation, accompagné d'un κ en temps réel.

C'est la boucle standard « alignez votre juge sur environ 100 à 200 étiquettes de référence » utilisée par des outils comme LangSmith Align Evals et Evidently : collectez les étiquettes humaines, exécutez le juge, inspectez les désaccords, affinez la grille, puis relancez jusqu'à ce que l'accord soit élevé.

Suggestion du juge en ligne à côté de l'étiquette humaineVerdict d'un juge LLM affiché à côté de l'annotation humaine avec un kappa en temps réel

Configuration

yaml
# The judge uses Potato's standard AI endpoint machinery.
ai_support:
  enabled: true
  endpoint_type: "ollama"        # ollama (local) | openai | anthropic | vllm | ...
  ai_config:
    model: "llama3.2"
    temperature: 0.0
    # openai/anthropic: add api_key: "<key>"
 
judge_alignment:
  enabled: true
  schemas:
    correctness:                 # per annotation-scheme rubric (editable)
      rubric: >
        Label 'correct' only if the agent's answer is factually right and fully
        satisfies the request; otherwise 'incorrect'.
  few_shot:
    enabled: false               # seed the judge prompt with gold examples
    max_examples: 4              # drawn from high-agreement human labels
    min_agreement: 0.8
  inline:
    enabled: true                # show the judge verdict beside the human label
    schemas: [correctness]
    compute_on_demand: false     # call the judge live when no cached verdict exists

Le périmètre couvre les schémas catégoriels à choix unique (radio, select, likert). Si judge_alignment.schemas est défini, seuls ces schémas sont jugés ; sinon, tous les schémas catégoriels le sont.

Exécuter le juge

Exécutez le juge depuis l'API d'administration. Les prédictions sont mises en cache par version de prompt, si bien que les réexécutions sont peu coûteuses :

bash
# Generate or refresh judge verdicts over human-annotated instances
curl -X POST localhost:8000/admin/api/judge-alignment/run \
  -H "X-API-Key: <admin-key>" \
  -H "Content-Type: application/json" \
  -d '{"max_per_schema": 200}'

Pour calibrer, passez une grille modifiée. Cela crée une nouvelle version du prompt, ce qui vous permet de comparer κ d'un tour à l'autre :

bash
curl -X POST localhost:8000/admin/api/judge-alignment/run \
  -H "X-API-Key: <admin-key>" -H "Content-Type: application/json" \
  -d '{"rubrics": {"correctness": "Stricter rubric text..."}}'

Le rapport d'alignement

text
GET /admin/judge-alignment                      # JSON
GET /admin/judge-alignment?format=html          # rendered page
GET /admin/judge-alignment?prompt_version=v_abc123

Envoyez l'en-tête X-API-Key. Pour chaque schéma, le rapport affiche :

  • Le κ de Cohen avec une interprétation Landis–Koch, le taux d'accord et le nombre d'instances comparées.
  • Une matrice de confusion (les lignes sont la référence humaine, les colonnes le juge).
  • Une table des désaccords avec l'instance, l'étiquette humaine, l'étiquette du juge, la confiance et le raisonnement du juge.
  • L'historique des versions du prompt avec le κ moyen par version, de sorte que la progression de la calibration soit visible.

La référence humaine est le vote majoritaire des annotateurs pour chaque instance.

Mode en ligne

Avec inline.enabled, chaque page d'annotation affiche le verdict du juge mis en cache pour l'instance — son étiquette, sa confiance et son raisonnement déployable — aux côtés d'un κ en temps réel pour la tâche. « Accepter » remplit le choix correspondant. Chaque sauvegarde humaine enregistre une comparaison humain↔juge qui alimente l'accord en temps réel. Réglez compute_on_demand: true pour appeler le juge en direct lorsqu'aucun verdict en cache n'existe ; sinon, exécutez le lot à l'avance, ce qui est plus rapide.

Notes et limites

  • Dans cette version, la calibration est manuelle : modifiez la grille et relancez. L'optimisation automatique du prompt sort du périmètre.
  • Le périmètre couvre les schémas catégoriels à choix unique. Le jugement des segments (span) et du texte libre est un travail futur.
  • Exécutez le juge sur un ensemble de référence ciblé d'environ 100 à 200 instances étiquetées pour obtenir un κ stable.

Voir aussi

Pour les détails d'implémentation, consultez la documentation source.