Warum der Konfidenzwert eines LLM keine Messung ist
Wenn du ein LLM fragst „Wie sicher bist du?“, antwortet es mit etwas wie 0,85. Das wirkt genau. Amrut Joshis Beitrag vom 20. Oktober 2026 sagt dazu etwas Einfaches: Es gibt keinen guten Grund, dieser Zahl zu trauen. Ich habe das Muster, das er beschreibt, auch in Agenten-Designs gesehen, wo ein vom Modell geschriebener Wert entscheidet, ob eine Antwort direkt rausgeht oder erst zu einem Menschen. Hier ist das Argument und was du stattdessen tun kannst.
Was ein Konfidenzwert bedeuten muss
Joshi nimmt einen Wettervorhersager als Beispiel. „70 % Regenwahrscheinlichkeit morgen“ lässt sich an einem einzelnen Tag nicht prüfen, denn es regnet oder eben nicht. Prüfen lässt es sich nur über viele Tage: Nimm alle Tage, an denen er 70 % gesagt hat, und schau, wie oft es geregnet hat. Waren es etwa 70 %, dann bedeutet die Zahl etwas. Das nennt man Kalibrierung.
Sein Beispiel für ein Jahr:
| Gesagt | Tage | Regentage | Quote |
|---|---|---|---|
| 10 % | 120 | 13 | 11 % |
| 30 % | 90 | 26 | 29 % |
| 70 % | 80 | 57 | 71 % |
| 90 % | 75 | 67 | 89 % |
Zwei Punkte aus dem Beitrag sind wichtig. Erstens reicht Kalibrierung allein nicht: Wer immer 30 % sagt, die übliche Quote der Jahreszeit, ist ebenfalls kalibriert und sagt dir trotzdem nichts. Ein nützlicher Wert ist kalibriert und bewegt sich mit den Informationen, die er hat. Zweitens funktioniert nichts davon, wenn niemand jede Vorhersage und das tatsächliche Ergebnis aufschreibt. Ohne Aufzeichnung keine Erkenntnis.
Warum die Zahl des LLM an beiden Tests scheitert
Ein LLM schreibt Text Token für Token. Wenn es „0,85“ antwortet, liest es keine Anzeige ab, sondern schreibt eine plausible Fortsetzung des Gesprächs. Das Vortraining hat das Modell zwar an Ergebnissen gemessen, aber das Ergebnis war das nächste Token, nicht, ob die angegebene Sicherheit zur tatsächlichen Trefferquote passt. Mit Joshis Worten: Es hat gelernt, wie Konfidenzwerte in Texten aussehen.
Die Zahl spiegelt also nicht die Beweislage wider und wurde nie an Ergebnissen geprüft. Die Symptome, die er nennt, kannst du selbst sehen:
- Stell dieselbe Frage noch einmal, und die Zahl ändert sich: einmal 0,85, beim nächsten Mal 0,7.
- Frag „Bist du sicher?“, und der Wert verschiebt sich meistens, obwohl sich am Problem nichts geändert hat.
- Hat das Modell schon „Das ist eindeutig die richtige Antwort“ geschrieben, ist ein hoher Wert einfach die naheliegende Fortsetzung.
Eine falsche Zahl sieht genauso aus wie eine richtige. Herausfinden lässt sich das nur, indem du viele davon gegen einen Lösungsschlüssel bewertest, und genau diesen Schritt lassen die meisten aus.
Bau den Wert aus deinen eigenen Aufzeichnungen
Joshis Alternative lässt das LLM die Aufgabe erledigen und holt die Konfidenz aus einer Regel, die auf Aufzeichnungen beruht. Sein Beispiel ist ein Support-Agent, der ein Hilfecenter durchsucht und Antworten entwirft, wobei unsichere Antworten zuerst zu einem Menschen gehen:
- Beobachtbare Signale wählen. Hat die Suche einen passenden Artikel gefunden? Kennt der Agent diese Art von Frage? Stimmen zwei Läufe derselben Frage überein?
- Mit der Basisquote starten. Hat jemand 200 frühere Antworten geprüft und waren 150 richtig, startet jede Antwort bei 75 %.
- Alles aufzeichnen. Signale, den Wert der Regel und ob die Antwort sich als richtig herausgestellt hat.
- Die Regel aus den Aufzeichnungen aktualisieren. Waren Antworten mit passendem Artikel und zwei übereinstimmenden Läufen zu 95 % richtig, sagt die Regel 95 % für die nächste solche Antwort.
- Weiter prüfen. Etwa jede Woche baust du die Tabelle des Vorhersagers neu. Waren die 90-%-Antworten nur zu 70 % richtig, ist die Regel überheblich, und die Aufzeichnungen zeigen, wo.
Die wöchentliche Prüfung sind ein paar Zeilen. Diese Skizze ist zur Veranschaulichung und stammt nicht aus der Quelle: Sie gruppiert aufgezeichnete Antworten nach ihrem Wert und gibt zurück, wie oft jede Gruppe richtig lag.
// records: [{ said: 0.9, correct: true }, ...]
function calibrationTable(records) {
const groups = new Map();
for (const r of records) {
const key = Math.round(r.said * 10) / 10;
const g = groups.get(key) ?? { n: 0, right: 0 };
g.n += 1;
if (r.correct) g.right += 1;
groups.set(key, g);
}
return [...groups]
.sort((a, b) => a[0] - b[0])
.map(([said, g]) => ({ said, n: g.n, rate: g.right / g.n }));
}
Liegt rate in einer Gruppe mit genug Antworten deutlich unter said, ist diese Gruppe überheblich.
Nächster Schritt: Wenn in deinem System irgendetwas anhand eines selbst gemeldeten Modellwerts entscheidet, zeichne ab heute den Wert und das echte Ergebnis auf. Ein Monat Aufzeichnungen reicht für die erste Tabelle und zeigt dir, ob die Zahl je etwas bedeutet hat. Quelle: Amrut Joshi, Asking LLM for confidence.
Notizen der Leser