Skip to content

Kalibrierung von LLM-as-Judge

Labeln Sie Ihre Daten automatisch mit einem oder mehreren LLM-Judges und führen Sie anschließend einen blinden menschlichen Kalibrierungsdurchlauf durch, um Genauigkeit, Übereinstimmung und Kalibrierungsfehler zu messen. Beantwortet die Frage „Sollte ich diesem LLM-Judge vertrauen?“ mit einem belegbaren, reproduzierbaren Workflow.

Die Judge-Kalibrierung labelt Ihre Daten automatisch mit einem oder mehreren LLM-Judges und kalibriert sie anschließend gegen blinde menschliche Labels, sodass Sie quantifizieren können, wie weit Sie einem LLM-as-a-Judge trauen dürfen. Sie schreiben einen Judge-Prompt, wählen die Modelle aus, und Potato sampelt jedes Modell k-mal über Ihre Daten. Anschließend labeln Sie eine Stichprobe blind, ohne die Modellantworten zu sehen, und Potato berichtet die Genauigkeit pro Modell, die Mensch↔Modell- und Modell↔Modell-Übereinstimmung, den Kalibrierungsfehler sowie Konfusionsmatrizen.

Ein LLM zur Bewertung von Modellausgaben einzusetzen, ist in der Agenten- und Modellevaluierung mittlerweile gängig, doch ein Judge ist nur dann nützlich, wenn Sie wissen, wie gut er dem menschlichen Urteil folgt. Die Kalibrierung ist der Messschritt, der dieses Vertrauen belegbar macht.

So funktioniert es

text
SETUP → GENERATING → HUMAN_CALIBRATION → REPORT → COMPLETED
  1. Generierung — jedes Modell wird pro Element k-mal abgefragt. Das Modallabel ist die Vorhersage; der Anteil der k Samples, die mit ihm übereinstimmen, ist die Konfidenz des Modells. Die Ergebnisse landen in einem dedizierten Speicher, werden nie mit den Annotationsdaten vermischt und sind für Menschen nicht einsehbar.
  2. Menschliche Kalibrierung — Potato zieht eine zufällige oder geschichtete Stichprobe der gelabelten Elemente, und ein oder mehrere Menschen labeln sie über die übliche Annotationsoberfläche blind.
  3. Bericht — die Metriken werden über die Mensch∩Modell-Überlappung berechnet und in das Ausgabeverzeichnis geschrieben.

Da die Modelllabels in einem getrennten Speicher liegen und nie in die UI eingespeist werden, ist die Verblindung strukturell bedingt und keine Frage der Annotatorendisziplin.

Schnellstart

Führen Sie das mitgelieferte Beispiel vom Repository-Stammverzeichnis aus:

bash
python potato/flask_server.py start examples/ai-assisted/judge-calibration/config.yaml -p 8000 --debug
  • Öffnen Sie http://localhost:8000/judge_calibration/admin zum Konfigurieren und Ausführen.
  • Wenn die Generierung abgeschlossen ist, labeln Sie die Stichprobe unter http://localhost:8000/annotate blind.
  • Klicken Sie auf Build report und öffnen Sie dann http://localhost:8000/judge_calibration/report.

Das Beispiel verwendet ein lokales Ollama-Modell, daher ist kein API-Schlüssel erforderlich. Starten Sie zunächst Ollama und führen Sie ollama pull llama3.2:3b aus.

Konfiguration

yaml
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_output

Die meisten dieser Werte lassen sich im Admin-Assistenten überschreiben und erneut ausführen.

Setzen Sie temperature > 0. Bei k_samples > 1 und Temperatur 0 sind die Samples identisch, die Konfidenz beträgt stets 1.0 und der Kalibrierungsbericht ist bedeutungslos; in diesem Fall gibt Potato beim Start eine Warnung aus.

Unterstützte Annotationstypen

TypStatusMetriken
radio / selectUnterstütztGenauigkeit, P/R/F1, Cohen/Fleiss κ, Krippendorff α, ECE, Konfusion
likertUnterstütztdas Obige plus MAE und ordinales Krippendorff α
multiselectUnterstütztP/R/F1 pro Label, mittlerer Jaccard, Exact-Match-Genauigkeit, Kalibrierung
spanExperimentellIoU-gematchte P/R/F1, mittlerer IoU, span-F1-Übereinstimmung, Kalibrierung auf Span-Ebene

Die Span-Unterstützung clustert die Zeichen-Offset-Spans des Judges über die k Samples hinweg und matcht sie über die Intersection over Union mit der Goldreferenz; ihre Heuristiken sind richtungsabhängig, nicht exakt.

Was der Bericht enthält

  • Genauigkeit, Präzision, Recall und F1 für jedes Modell gegen das menschliche Gold-Label.
  • Cohens κ, aufgeteilt in Mensch↔Modell-, Modell↔Modell- und Mensch↔Mensch-Paare.
  • Fleiss' κ und Krippendorffs α über alle Bewerter hinweg.
  • Expected Calibration Error (ECE), Zuverlässigkeits-Bins und Brier-Score, die zeigen, wie gut die Konfidenz aus dem Stimmenanteil die Korrektheit nachzeichnet.
  • Eine Konfusionsmatrix pro Modell gegen das menschliche Gold.

Die Metriken werden über die Überlappung berechnet: Elemente, die sowohl die Modelle als auch der/die Mensch(en) gelabelt haben, beschränkt auf die Kalibrierungsstichprobe, sofern eine gezogen wurde.

Die Ausgabe wird unter output.dir geschrieben: llm_labels.jsonl (eine Zeile pro Modell, Element und Schema), report.json sowie eine menschenlesbare report.html.

Judge-Kalibrierung vs. Judge-Alignment

Die Judge-Kalibrierung verwendet mehrere Judges, empirische Konfidenz (den Stimmenanteil über die k Samples) und hält den Menschen strikt verblindet. Das Judge-Alignment kalibriert einen einzelnen Judge gegen vorhandene menschliche Gold-Labels, zeigt sein Urteil während der Annotation inline an und ist auf das Iterieren an einer Bewertungsrubrik ausgelegt. Greifen Sie zur Kalibrierung, wenn Sie Judge-Kandidaten prüfen; greifen Sie zum Alignment, wenn Sie einen einzelnen Judge gegen einen festen Goldsatz feinabstimmen.

Verwandt

Implementierungsdetails finden Sie in der Quelldokumentation.