LLM-Evaluation: Von öffentlichen Benchmarks zu deinem Golden Set
Derselbe agent, dieselbe Aufgabe, zehn Läufe: 70 % Erfolg wirken gut – bis pass^10 exakt null ergibt.
Auf dieser Seite
Hier ist eine Demonstration. Der agent aus Kapitel 23 — dieselbe Schleife, zwei seiner vier Tools — wird auf ein Verzeichnis mit fünf Log- und Konfigurationsdateien angesetzt und bekommt eine Frage.
Q: What is the last line of errors.log about?
turn 1 -> read_file({"path": "errors.log"})
turn 2 -> "The last line of errors.log is:
ERROR worker 7 timed out after 30000 ms."Korrekt, und zugleich ein Beleg für überhaupt nichts — denn dieses Transkript ist eines von zehn, die ich ausgeführt habe, und ich habe es ausgewählt, nachdem ich alle zehn gesehen hatte.
Führe die identische Aufgabe zehnmal aus, ändere nichts außer dem Sampling-Seed, und der agent liegt siebenmal richtig. Siebzig Prozent, die Zahl, die auf die Folie käme. Stell jetzt die Frage, die einem Kunden wirklich wichtig ist — funktioniert es jedes Mal? — und die Antwort ist eine ganz andere Zahl:
t20 7/10 successes = 70 % (95 % Wilson interval: 39.7 % to 89.2 %)
pass^1 70.00 % pass^5 8.33 %
pass^2 46.67 % pass^7 0.83 %
pass^3 29.17 % pass^8 0.00 %
pass^4 16.67 % pass^10 0.00 %Der agent hat diese Aufgabe noch nie zehnmal hintereinander gelöst und ist nach dieser Evidenz auch nicht dafür zu erwarten. Diese Zahl — pass^10 — ist die ehrliche; sie wird fast nie veröffentlicht, und am Ende dieses Kapitels weißt du, wie man sie berechnet, was ihre Berechnung kostet und warum das Intervall neben den 70 % wichtiger ist als die 70 % selbst.
Details anzeigen
Was dieses Kapitel aus den früheren braucht.
- Kapitel 4 für die Statistik: das Wilson-Intervall einer Proportion, der Grund, warum siebzehn Richtige aus zwanzig nichts unterscheiden, und die dumme Baseline als erste Anforderung.
- Kapitel 15 für die Bench: das fünfzigzeilige harness, den gepaarten Sign-Test über die Fälle, in denen zwei Systeme sich widersprechen, und die Regel, dass ein prompt gemessen und nicht diskutiert wird.
- Kapitel 23 für das, was gemessen wird: die Schleife, die fünf Auswege, die Kostenrechnung und die Schlussbeobachtung, dass ein harness einen agent steuerbar macht, aber nicht korrekt.
Zwei Panels hier. TypeScript für deine eigene Evaluation, weil sie in deine Continuous Integration neben deinen Code gehört. Python für das zweite Panel, weil die öffentlichen Benchmarks dort leben und eine der Messungen unten die logits braucht.
Drei Projekte, drei Instrumente
Link zum Abschnitt: Drei Projekte, drei InstrumenteFast jedes Argument über Evaluation besteht aus zwei Personen, die unterschiedliche Dinge messen. Es gibt drei Projekte, und sie teilen kein Instrument.
| was du evaluierst | die Frage | das Instrument | wem es gehört |
|---|---|---|---|
| das model | ist dieses model im Allgemeinen besser als jenes? | öffentliche Benchmarks, Leaderboards | der Community |
| deine Anwendung | funktioniert mein prompt, mein Retrieval, mein Schema auf meinen Inputs? | dein Golden Set | dir |
| dein agent | erreicht die gesamte Schleife, mit Tools und Seiteneffekten, zuverlässig das Ziel? | Task-Erfolg plus pass^k | dir |
Die Verwechslung ist in eine Richtung teuer. Ein Leaderboard sagt dir, dass ein model stark im Reasoning auf Graduiertenniveau ist; es kann dir nicht sagen, ob es deine Support-Tickets routet. Und eine Anwendungsevaluation, die eine Antwort pro Input bewertet, kann einen agent überhaupt nicht sehen, weil ein agent eine Verteilung von Trajektorien hat und eine Antwort nur eine einzelne Stichprobe daraus ist. Kapitel 22 hat diese dritte Zeile benannt und leer gelassen: das Performance-Maß, den einen Teil der Spezifikation eines agents, den Teams zuletzt oder nie aufschreiben.
Auch die Reihenfolge zählt, und der Anbieter, der dir das model verkauft, sagt das selbst. OpenAIs agent-Leitfaden reduziert die model-Auswahl auf drei Schritte, in dieser Reihenfolge: „Set up evals to establish a performance baseline“, „Focus on meeting your accuracy target with the best models available“, „Optimize for cost and latency by replacing larger models with smaller ones where possible“.1 Evaluation kommt zuerst, weil Schritt zwei und drei ohne Zahl bedeutungslos sind.
Das Golden Set und was zwanzig Fälle tatsächlich kaufen
Link zum Abschnitt: Das Golden Set und was zwanzig Fälle tatsächlich kaufenEin Golden Set ist eine Liste von Inputs, jeweils mit aufgeschriebener Antwort, und ein Grader, der entscheidet, ob ein Output passt. Es ist langweilig, es ist klein, und es ist das einzige Artefakt in diesem Kapitel, das dir gehört. Das hier gebaute Set hat zwanzig Aufgaben über ein Verzeichnis mit fünf Dateien — nicht die drei aus Kapitel 23, also sind die Antworten nicht dieselben Antworten — und der Grader wird geschrieben, bevor der agent läuft:
export type Task = {
id: string;
prompt: string;
answer: string; // the fact, in words, for a human and for a judge
must: RegExp[]; // ALL must match the final answer
mustNot?: RegExp[]; // NONE may match
};
export const GOLDEN: Task[] = [
{ id: "t04", prompt: "Which file is the largest?", answer: "access.log",
must: [/access\.log/i], mustNot: [/errors\.log/i, /notes\.txt/i] },
{ id: "t12", prompt: "Which HTTP status codes appear in access.log? List all of them.",
answer: "200, 429 and 500", must: [/200/, /429/, /500/] },
// ...eighteen more
];Zwei Eigenschaften tragen die Last. Die Liste mustNot existiert, weil ein model, das drei Dateien nennt, darunter die richtige, nicht geantwortet hat. Und answer ist in Prosa ebenso geschrieben wie in Patterns, weil ein Mensch und ein Judge sie später beide brauchen werden — und denselben Fakt zweimal in zwei Notationen zu schreiben ist die Art, wie du herausfindest, dass du mit dir selbst nicht einig warst, worum es in der Aufgabe ging.
Jetzt die Tabelle, die entscheidet. Vier Kandidatensysteme, dieselben zwanzig Aufgaben, Accuracy mit Intervall und die zwei Spalten, die eine reine Accuracy-Tabelle immer versteckt:
| system | correct | accuracy, 95 % Wilson | cost per solved task | mean latency |
|---|---|---|---|---|
| A — keine Tools, greedy | 2/20 | 10.0 % [2.8, 30.1] | $0.004649 | 663 ms |
| B — Tools, knapper prompt | 5/20 | 25.0 % [11.2, 46.9] | $0.005576 | 1,362 ms |
| C — Tools, geführter prompt | 2/20 | 10.0 % [2.8, 30.1] | $0.013071 | 930 ms |
| D — C, best of 3 bei T = 0.7 | 1/20 | 5.0 % [0.9, 23.6] | $0.073532 | 2,628 ms |
Lies die Intervalle vor dem Gewinner. Arm B reicht von 11 % bis 47 %; Arm A von 3 % bis 30 %. Sie überlappen über den größten Teil ihrer Länge, was Kapitel 4s Befund genau dort ankommen lässt, wo er versprochen war: Zwanzig Fälle können vier Systeme nicht ranken. Kapitel 15 hat das geschärft, indem es stattdessen die gepaarte Frage gestellt hat — wie schief ist die Aufteilung in den Fällen, in denen zwei Arme nicht übereinstimmen? — weil die gemeinsame Schwierigkeit des Sets herausgekürzt wird. Hier ist jedes Paar:
A vs B +0 / -3 p = 0.2500 B vs C +4 / -1 p = 0.3750
A vs C +2 / -2 p = 1.0000 B vs D +4 / -0 p = 0.1250
A vs D +2 / -1 p = 1.0000 C vs D +1 / -0 p = 1.0000Keine der sechs Vergleiche ist etabliert. Der beste Arm schlägt den Arm ganz ohne Tools um fünfzehn Punkte, und drei diskordante Fälle sind die Grundlage dafür. Zwanzig Fälle zeigen einen Mechanismus und können keinen Lieferanten auswählen; in einem Meeting etwas anderes zu sagen, ist die Art, wie ein schlechtes model gekauft wird.
Eine Sache stellt diese Tabelle fest, und es ist die Spalte, die niemand einfügt. Arm D kostet dreizehnmal so viel wie Arm B pro gelöster Aufgabe, weil drei Trajektorien zu samplen und die modale Antwort zu nehmen die Rechnung verdreifacht, ob es die Accuracy verdreifacht oder nicht. Accuracy-Tabellen ohne Kosten machen diesen Trade-off unsichtbar.
Die Metrik entscheidet die Zahl
Link zum Abschnitt: Die Metrik entscheidet die ZahlJetzt der Befund, der verändert, wie du jeden Benchmark lesen wirst, den du je siehst. Nimm dieselben zweihundert Transkripte — zwanzig Aufgaben, zehn Läufe, kein einziges token neu generiert — und bewerte sie auf drei Arten:
| grader | correct | accuracy, 95 % Wilson |
|---|---|---|
| exakter Match gegen die geschriebene Antwort | 0/200 | 0.0 % [0.0, 1.9] |
| die geschriebene Antwort erscheint als Substring | 26/200 | 13.0 % [9.0, 18.4] |
| die Keyword-Rubrik oben | 52/200 | 26.0 % [20.4, 32.5] |
Null, dreizehn, sechsundzwanzig. Das System hat sich nicht geändert. Der Grader schon. Exakter Match gibt nicht null zurück, weil der agent nutzlos ist, sondern weil keine Freitextantwort jemals byte-identisch mit einer Referenz ist: Er misst Formatierung und meldet sie als Capability.
Das ist keine Kuriosität, sondern ein Mechanismus, und er hat einen Namen. Eine Hard-Cutoff-Metrik bewertet eine Aufgabe über mehrere Teilfakten als alles-oder-nichts, also multipliziert sie. Task t12 fragt nach drei Statuscodes auf einmal. Über die zehn Läufe:
per-code presence 200: 9/10 429: 6/10 500: 8/10 (mean 0.77 per fact)
all three at once 5/10Jeder Fakt ist etwa drei Viertel der Zeit richtig; alle drei auf einmal zu verlangen halbiert den Score, und liegt nah genug an den gemessenen 0.50, um zu zeigen, woher der Abfall kam. Verallgemeinert:
| per-fact accuracy | |||||
|---|---|---|---|---|---|
| 0.60 | 60.0 % | 36.0 % | 21.6 % | 7.8 % | 0.6 % |
| 0.80 | 80.0 % | 64.0 % | 51.2 % | 32.8 % | 10.7 % |
| 0.90 | 90.0 % | 81.0 % | 72.9 % | 59.0 % | 34.9 % |
| 0.95 | 95.0 % | 90.3 % | 85.7 % | 77.4 % | 59.9 % |
Lies die 0.90-Zeile gegen die 0.95-Zeile bei : Eine Verbesserung pro Fakt um fünf Punkte wird zu fünfundzwanzig Punkten auf der Konjunktion. Dem model ist nichts Diskontinuierliches passiert. Eine glatte Kurve, durch eine Alles-oder-nichts-Metrik gelesen, sieht wie ein Sprung aus — genau das Argument, das Schaeffer, Miranda und Koyejo über emergente Fähigkeiten gemacht haben und das Kapitel 10 hierher verschoben hat.2 Ihr Audit fand, dass höchstens 5 der 39 bevorzugten Metriken von BIG-Bench überhaupt Emergenz zeigen, wobei zwei diskontinuierliche Metriken für über 92 % der behaupteten Fälle verantwortlich sind.
Die Disziplin in einer Zeile: Ein Sprung in einem Chart ist Evidenz über die Metrik, bis das Gegenteil gezeigt ist. Bevor du glaubst, dass eine Fähigkeit erschienen ist, plotte dieselben Läufe mit einer Metrik, die Teilpunkte vergibt, und sieh nach, ob die Klippe bleibt.
Es gibt eine Version zweiter Ordnung davon, von der Kalai und Kolleginnen argumentieren, dass sie schon upstream Schaden anrichtet: Benchmarks, die richtig-oder-falsch bewerten, belohnen Raten statt „Ich weiß es nicht“, also lernt ein model, das gegen sie optimiert wird, zu raten. Ihr vorgeschlagener Fix ist kein weiterer Halluzinations-Benchmark, sondern „modifying the scoring of existing benchmarks that are misaligned but dominate leaderboards“.3 Dein Golden Set hat denselben Hebel, und er ist eine Zeile: Entscheide, ob eine Enthaltung als Fehlschlag zählt oder als eigene Kategorie. Die meisten Menschen entscheiden das nie, also zählt sie stillschweigend als Fehlschlag, und das System, das sie ausliefern, rät.
pass^k, und die Varianz, die niemand veröffentlicht
Link zum Abschnitt: pass^k, und die Varianz, die niemand veröffentlichtBis hierher wurde ein Versuch pro Aufgabe bewertet. Ein agent ist nicht ein Versuch. Kapitel 17 hat gezeigt, dass du selbst bei Temperatur null keine Determiniertheit hast, also erzeugt derselbe Input eine Verteilung von Trajektorien, und ein Benchmark, der jede Aufgabe einmal ausführt, berichtet eine Stichprobe daraus.
τ-benchs Beitrag ist die Metrik dafür. Das Paper definiert sie klar: „we propose a new metric – pass^k (pass hat k), defined as the chance that all k i.i.d. task trials are successful, averaged across tasks.“4 Führe jede Aufgabe -mal aus, zähle die Erfolge, und die unverzerrten Schätzer sind:
Der zweite ist das bekannte pass@k aus der Codegenerierung: die Chance, dass mindestens einer von Versuchen erfolgreich ist. Setze sie auf denselben gemessenen Zählungen nebeneinander, und sie bewegen sich in entgegengesetzte Richtungen:
pass@k — mindestens einer | pass^k — alle | |
|---|---|---|
| 1 | 26.0 % | 26.0 % |
| 2 | 37.0 % | 15.0 % |
| 3 | 43.5 % | 10.5 % |
| 5 | 51.2 % | 6.7 % |
| 8 | 57.7 % | 5.1 % |
| 10 | 60.0 % | 5.0 % |
Dieselben Läufe, derselbe Grader, dieselben zwanzig Aufgaben. Eine Spalte sagt, dass das System mit mehr Versuchen besser wird, die andere sagt, dass es schlechter wird, und beide sind korrekt, weil sie unterschiedliche Fragen beantworten. pass@k ist die richtige Metrik, wenn ein Mensch den Output filtert — Codegenerierung, Entwürfe, Brainstorming — und die zusätzlichen Versuche billig sind. pass^k ist die richtige Metrik, wenn der agent ohne Filter handelt, was „agent“ bedeutet. Die erste zu veröffentlichen, wo die zweite gilt, ist die häufigste Übertreibung in diesem Feld, und τ-benchs eigene Headline ist die ehrliche Version: gpt-4o mit ungefähr 61 % pass^1 im Retail fällt auf etwa 25 % bei pass^8.4
Jetzt der Stich in meinen eigenen Zahlen. pass^10 über meine zwanzig Aufgaben ist 5.0 %: genau eine Aufgabe von zwanzig in allen zehn Läufen gelöst. Diese Aufgabe ist t19, „Did deploy 42 succeed?“, und hier sind zwei der zehn Antworten, die die Rubrik als korrekt bewertet hat:
run 2 "To check if 'deploy.log' succeeded in deploying 42, I will list the file
names in the working directory using the list_files function..."
run 8 "Yes, deploy 42 has successfully deployed. Deploying was successful for 41
as well."Die erste antwortet nie. Die zweite fügt eine Behauptung hinzu, die falsch ist — deploy 41 wurde zurückgerollt. Beide matchten /succe|yes/. Die einzige Aufgabe, die pass^10 über null hält, ist ein Grader-Artefakt, also ist die wahre Zahl null, und kein Aggregat hätte mir das gezeigt. Die Transkripte hinter deiner bestbewerteten Aufgabe zu samplen ist der Ort, an dem Grader sterben.
Und noch eine Zahl, die, nach der dieser Abschnitt benannt ist. Zehn identische Evaluationen — dasselbe System, dieselben zwanzig Aufgaben, derselbe Code, nichts geändert außer den Seeds:
per-run correct: 5 2 5 5 8 5 8 5 4 5 -> 10 % .. 40 %, mean 26.0 %, sd 8.8 pointsEine Spannweite von dreißig Punkten bei einem System, das sich nicht geändert hat. Wenn du deine Suite einmal vor einem Release und einmal danach laufen lässt, liegt eine „Verbesserung“ um acht Punkte innerhalb dieser Streuung, und du wirst sie ausliefern in dem Glauben, du hättest sie verursacht. Deshalb ist das gepoolte Intervall oben — 26.0 % [20.4, 32.5] — zu eng, um allein zitiert zu werden: Es behandelt zweihundert korrelierte Trials als zweihundert unabhängige. Die ehrliche Zusammenfassung einer agent-Evaluation ist ein Mittelwert und eine Streuung über Wiederholungen, und fast niemand veröffentlicht die zweite.
Der Judge und das Golden Set des Judges
Link zum Abschnitt: Der Judge und das Golden Set des JudgesRubriken skalieren nicht auf offene Antworten, also besteht der Standardzug darin, ein model den Output bewerten zu lassen. Auf Frontier-Niveau funktioniert das gut genug, um Default zu sein, und es hat drei benannte Failure Modes: Position Bias, Verbosity Bias und Self-Enhancement Bias.5
Miss es, bevor du ihm vertraust. Dieselben sechzig Antworten — drei der zehn Läufe — wurden auf drei Arten gelabelt. Das menschliche Label ist meines: Ich las alle sechzig mit den fünf Dateien offen und wandte eine geschriebene Regel an, pass genau dann, wenn die Antwort den Fakt nennt, nach dem gefragt wurde, und nichts enthält, was den Dateien widerspricht.
| grader | says pass | agrees with the human | false pass | false fail |
|---|---|---|---|---|
| Keyword-Rubrik | 17/60 | 50/60 = 83.3 % [72.0, 90.7] | 8 | 2 |
| das model als Judge | 60/60 | 11/60 = 18.3 % [10.6, 29.9] | 49 | 0 |
Der Judge sagte PASS sechzigmal von sechzig. Er hätte diesen agent auf einem Set, auf dem der Mensch ihn mit 18 % bewertet, mit 100 % Accuracy gemeldet. Ein Judge ohne diskriminative Kraft ist kein verrauschtes Instrument; er ist eine konstante Funktion, und eine konstante Funktion gibt deinem besten System und deinem schlechtesten System denselben Score.
Prompting rettete ihn nicht. Vier Varianten, dieselben sechzig Items:
| judge prompt | says pass | agreement with the human |
|---|---|---|
| „Reply PASS or FAIL.“ | 60/60 | 18.3 % |
| „Reply FAIL or PASS.“ — Labels vertauscht | 56/60 | 25.0 % |
| plus eine explizite Liste dessen, was als Fehlschlag zählt | 55/60 | 26.7 % |
plus ein ausgearbeitetes FAIL-Beispiel und ein PASS-Beispiel | 56/60 | 25.0 % |
Die Reihenfolge der zwei Labels in der Anweisung zu tauschen verschob vier Urteile. Das ist ein messbarer Effekt und die falsche Art von Effekt: Der Judge reagiert auf die Form des prompt statt auf die Antwort vor ihm.
Die saubere Demonstration ist paarweise. Zwanzig Fragen, jeweils mit einem offensichtlich richtigen und einem offensichtlich falschen Kandidaten, in beiden Reihenfolgen präsentiert:
picked the FIRST option 40/40 = 100.0 %
order-consistent (same winner both ways) 0/20 = 0.0 % [Wilson 0.0, 16.1]
picked the CORRECT answer 20/40 = 50.0 %Er wählte Position A vierzigmal von vierzig. Die 50 % auf Korrektheit sind keine Teilkompetenz — sie sind Arithmetik, weil die korrekte Antwort in genau der Hälfte der Trials auf Position A sitzt. Konsistenz ist hier so definiert, wie MT-Bench sie definiert, „the percentage of cases where a judge gives consistent results when swapping the order of two assistants“, wodurch der Vergleich apples to apples bleibt: GPT-4 erreicht 65.0 % auf diesem Maß, und few-shot prompting hob es auf 77.5 %.5 Meiner erreicht null.
Die Standard-Minderung stammt ebenfalls aus diesem Paper: „call a judge twice by swapping the order of two answers and only declare a win when an answer is preferred in both orders.“5 Wende sie hier an, und der Judge produziert null brauchbare Urteile aus zwanzig Paaren — was das korrekte Ergebnis ist und unendlich besser als zwanzig selbstbewusste.
Eine methodische Notiz, die mehr wert ist als das Resultat. Ich ließ auch einen Verbosity-Test laufen: dieselbe korrekte Antwort, eine Kopie mit einem 36-Wort-Satz aufgepolstert, der nichts hinzufügt. Der Judge bevorzugte die längere Version in genau 50 % der Trials — was wie das Fehlen von Verbosity Bias aussieht und nichts dergleichen ist, weil ein Judge, der immer Position A wählt, bei jeder balancierten Paarung überhaupt 50 % erzielt. Du kannst keinen zweiten Bias messen, bis der erste kontrolliert ist. Positionen zu tauschen ist keine Verfeinerung für später; es macht jede andere Messung interpretierbar.
Wofür ein Judge da ist. Offene Antworten ohne parsebare Form: Ton, Abdeckung, ob eine Zitation ihren Satz stützt, ob eine Ablehnung angemessen war. Billig, schnell und ungefähr so gut wie sein Basismodel.
Was ein Judge nicht ist. Ground Truth. Er ist ein System mit Accuracy, Bias-Profil und Kosten, und er braucht sein eigenes Golden Set menschlicher Labels — einschließlich bekannter Fehlschläge — bevor irgendeine Zahl, die er produziert, etwas bedeutet.
Der ehrliche Vorbehalt: Dieser Judge ist ein model mit einer halben Milliarde Parameter, und niemand sollte damit graden. Der Punkt ist nicht, dass Judges schlecht sind. Er ist, dass die Zahlen oben acht Minuten gekostet haben, und ohne sie wäre das Urteil dieses Judges über eine Shipping-Entscheidung 100 % gewesen.
Zweites Panel: Python und eine Probe auf Kontamination
Link zum Abschnitt: Zweites Panel: Python und eine Probe auf KontaminationDies ist das dritte und letzte deklarierte Python-Panel des Kurses, und der Grund liegt dort, wo die öffentlichen Zahlen herkommen. lm-evaluation-harness deckt „over 60 standard academic benchmarks for LLMs, with hundreds of subtasks and variants implemented“ ab und ist „the backend for Hugging Face's popular Open LLM Leaderboard“; HELM, SWE-bench und τ-bench sind Python-Pakete mit Python-Entry-Points.6 Dein model gegen eine veröffentlichte Zahl laufen zu lassen bedeutet, ihren Code laufen zu lassen, und an dem Tag, an dem du mit einer Zahl vergleichen willst, die jemand zitiert hat, bist du in diesem Ökosystem:
lm_eval --model hf \
--model_args pretrained=EleutherAI/gpt-j-6B \
--tasks hellaswag \
--device cuda:0 \
--batch_size 8Der zweite Grund ist, dass eine Messung in diesem Kapitel über HTTP unmöglich ist. Kontamination — dass das Testset in die Trainingsdaten geleakt ist — ist der Fehler, der einen öffentlichen Benchmark still bedeutungslos macht, und die schärfste Probe dafür braucht den eigenen Loss des model, den keine Chat-API zurückgibt. Es ist Kapitel 8s Cross-Entropy pro token, gerichtet auf eine Frage über Gedächtnis:
def nll(text: str) -> float:
"""Mean negative log-likelihood per token, in nats."""
ids = tok(text, return_tensors="pt").input_ids.to(model.device)
with torch.no_grad():
out = model(ids, labels=ids)
return float(out.loss)Zehn Satzpaare: fünf in jedem Crawl des Webs, seit es existiert, fünf heute Morgen für dieses Kapitel geschrieben, jeweils gepaart mit einer umformulierten Version mit demselben Inhalt.
| set | canonical wording | reworded | gap |
|---|---|---|---|
| berühmt, Mittelwert von 5 | 1.21 | 3.03 | +1.83 |
| frisch, Mittelwert von 5 | 5.02 | 5.96 | +0.93 |
Das model ist von einem heute Morgen geschriebenen Satz viermal stärker überrascht als von einem, den es eine Million Mal gesehen hat, und Umformulieren kostet bei den berühmten Sätzen doppelt so viel — wobei die Zusatzkosten der Teil sind, der memorisiert statt verstanden wurde. Absoluter Loss vermischt Memorisation mit gewöhnlicher Natürlichkeit, also ist die Lücke die bessere Statistik und der Continuation-Test noch besser. Gib ihm die ersten sechs Wörter:
famous "Permission is hereby granted, free of"
-> "charge, to any person obtaining a copy of this software and associated
documentation files (the "
famous "All human beings are born free"
-> "and equal in dignity and rights. The right to life, liberty, and security"
fresh "All evaluation harnesses are born tiny"
-> ", and the most common way to measure their size is by using a ruler."Drei der fünf berühmten Strings wurden ab sechs Wörtern wortgenau fortgesetzt; keiner der fünf frischen. Das ist ein model mit einer halben Milliarde Parameter, das die MIT License rezitiert. Wenn dein Benchmark im öffentlichen Web steht, geh davon aus, dass er in den Weights ist. Das ist auch das Argument für das ganze Kapitel: Ein Golden Set, das du aus deinen eigenen Daten geschrieben und aus jedem Repository herausgehalten hast, das ein Crawler liest, ist das einzige Testset, von dem du sicher sein kannst, dass nie darauf trainiert wurde.
Was die öffentlichen Benchmarks tatsächlich messen
Link zum Abschnitt: Was die öffentlichen Benchmarks tatsächlich messenSie sind weiterhin lesenswert, solange du liest, was jeder einzelne misst, statt der einzelnen Zahl daran.
| benchmark | what it measures | a number from its paper |
|---|---|---|
| MMLU | Multiple-Choice-Wissen über 57 Fächer | GPT-3 schlug Zufall um „almost 20 percentage points on average“7 |
| HELM | viele Metriken × viele Szenarien, standardisiert | Abdeckung der Kern-Szenarien stieg von 17.9 % auf 96.0 %8 |
| Chatbot Arena | crowdsourced paarweise menschliche Präferenz | über 240K Votes; Crowd-Votes „in good agreement“ mit Experten9 |
| SWE-bench | echte GitHub-Issues lösen, bewertet durch Repo-Tests | 2,294 Probleme; bestes damaliges model löste „a mere 1.96 %“10 |
| τ-bench | Tool-Nutzung mit simuliertem User und Domain-Policy | gpt-4o ≈ 61 % pass^1, ≈ 25 % pass^8 im Retail4 |
| WebArena | Long-horizon Tasks auf funktionierenden Websites | bester GPT-4 agent 14.41 % gegenüber 78.24 % für Menschen11 |
| OSWorld | echte Desktop- und OS-Tasks über Anwendungen hinweg | 369 Tasks; bestes model 12.24 %, Menschen 72.36 %12 |
| GAIA | Fragen, die für Menschen leicht und für Assistenten schwer sind | 466 Fragen; Menschen 92 %, GPT-4 mit Plugins 15 %13 |
| AgentBench | agent-Reasoning über 8 unterschiedliche Umgebungen | große Lücke zwischen kommerziellen und offenen models14 |
| AgentHarm | ob ein agent bösartige mehrstufige Tasks ausführt | 110 bösartige Tasks über 11 Schadenskategorien15 |
Nimm die Tabelle statt irgendeiner Zeile. Die agentic Benchmarks setzen Menschen alle weit über models, was das Gegenteil der Wissens-Benchmarks ist und die beste Ein-Zeilen-Zusammenfassung davon, wo das Feld steht; ihre Zahlen altern innerhalb von Monaten, also zitiere sie mit dem Datum, an dem du sie gelesen hast; und jeder einzelne misst eine Aufgabe, die nicht deine ist.
Die Metriken, die in Produktion entscheiden
Link zum Abschnitt: Die Metriken, die in Produktion entscheidenAccuracy ist die Metrik, über die du streitest. Diese hier entscheiden, ob das Ding ausgeliefert wird. Alle vier fallen aus den bereits gemessenen zweihundert Läufen heraus.
Kosten pro gelöster Aufgabe, nicht pro Call. Der agent kostet $0.001345 pro Versuch und $0.005172 pro tatsächlich gelöster Aufgabe — 3.85-mal mehr, weil drei Viertel der Versuche nichts produzieren. Latency verhält sich gleich: 1,213 ms pro Versuch, 4,667 ms pro gelöster Aufgabe. Jeder Retry, jedes erneute Nachfragen, jede abgebrochene Trajektorie steckt in der zweiten Zahl und ist in der ersten unsichtbar.
Eine Diagnose, die Accuracy schlägt. In 123 von 200 Versuchen antwortete der agent ohne ein einziges Tool aufzurufen — er riet, statt nachzusehen. Darauf aufgeteilt:
answered without reading anything 8/123 = 6.5 % [3.3, 12.3]
answered after reading something 44/77 = 57.1 % [46.0, 67.6]Die Intervalle kommen sich nicht annähernd nahe. Das ist mehr wert als die aggregierten 26 %, weil es das zu reparierende Ding benennt — das model scheitert nicht am Reasoning, es scheitert am Nachsehen — und der Fix liegt im harness, nicht im model. Ein Vorbehalt, den dieses Kapitel seinen eigenen Standards schuldet: Die zwei Gruppen sind unterschiedliche Tasks, nicht dieselben gepaarten Tasks, also kann ein Teil der Lücke daher kommen, dass es die Tools genau bei den Fragen überspringt, die es schwierig findet. Der Split ist eine Diagnose, keine kausale Behauptung.
Human intervention rate ist die Metrik, nach der ein Käufer zuerst fragt: welcher Anteil der Läufe an einer Approval, einer guardrail oder einem handoff stoppt. Die typisierten Unterbrechungen aus Kapitel 23 machen sie zählbar, und pro Task-Typ und pro Woche gezählt ist sie das, was einen agent, der seinen Job lernt, von einem unterscheidet, der still zu einer Warteschlange wird.
Abandonment ist die, die keine Offline-Suite sehen kann: der User, der die Antwort gelesen, den Tab geschlossen und die Aufgabe selbst erledigt hat. Offline-Evaluation ist ein Gate; Produktionsevaluation ist eine kontinuierliche Stichprobe echten Traffics, bewertet mit demselben Grader plus diesen vier.
Und eine aus Kapitel 17 geerbte Regel: nie auf exakten Output assertieren. Assertiere auf Eigenschaften — valides JSON, korrektes Schema, das richtige Tool aufgerufen, eine Zahl innerhalb einer Toleranz, ein erforderlicher Substring vorhanden. Die Exact-Match-Spalte oben in diesem Kapitel zeigt, was passiert, wenn diese Regel gebrochen wird.
Was du an Dritte sendest
Link zum Abschnitt: Was du an Dritte sendestEinen Lieferanten zu evaluieren geht nicht nur um Accuracy, und das ist die zweite Hälfte der Ethik dieses Kurses, mit eigener Überschrift statt Anhang.
Miss den Bias, nimm ihn nicht an. Was auch immer du über das Verhalten eines model bei Namen, Dialekten, Geschlechtern oder Nationalitäten glaubst: Es ist eine messbare Eigenschaft deiner Pipeline, und das Instrument ist das, das du schon hast: Nimm dein Golden Set, variiere nur das Attribut, vergleiche gepaart. HELM existiert genau deshalb, weil Accuracy allein berichtet wurde, wo Bias, Toxizität, Kalibrierung und Robustheit ebenfalls entscheidbar waren.8 Die Model Card eines Vendors ist ein Ausgangspunkt, keine Evidenz über deine Inputs.
Kontamination ist ebenfalls eine Lieferantenfrage. Die Probe oben ist der Grund zu fragen, worauf eine veröffentlichte Zahl gemessen wurde und wann die Daten des model abgeschnitten wurden.
Retention, Training und Residency, gelesen am 7. September 2026. Das ändert sich, also notiere das Datum neben der Antwort. Anthropics Policy-Seite sagt: „By default, we will not use your inputs or outputs from our commercial products (e.g. Claude for Work, Anthropic API, Claude Gov, etc.) to train our models“, mit Ausnahme von Inhalten, die du ausdrücklich als Feedback einreichst und die „for up to 5 years“ gespeichert werden.16 OpenAIs Dokumentation zu Datenkontrollen sagt, dass „data sent to the OpenAI API is not used to train or improve OpenAI models (unless you explicitly opt in to share data with us)“, beschreibt eine standardmäßige dreißigtägige Retention für Abuse-Monitoring-Logs und bietet Zero Data Retention, das „excludes customer content from abuse monitoring logs“, plus konfigurierbare Data Residency über eine Liste von Regionen.17
Vier Fragen, die du vor dem ersten Produktions-Call schriftlich beantwortet haben willst, weil jede einen anderen Owner hat: Werden meine Daten fürs Training genutzt; wie lange werden sie gespeichert und von wem; wo werden sie verarbeitet und gespeichert; und was passiert mit all dem, wenn ich einen Reseller, ein Gateway oder einen Aggregator nutze statt direkt den Provider. In der letzten Frage wohnen die meisten Überraschungen, und kein Benchmark wird sie dir verraten.
Wohin es als Nächstes geht
Link zum Abschnitt: Wohin es als Nächstes gehtDu hast jetzt das Instrument: ein Golden Set, das dir gehört, ein Intervall auf jeder Zahl, einen gepaarten Test für jeden Vergleich, pass^k für die Läufe, die du niemandem gezeigt hast, einen gemessenen Judge und eine Probe dafür, ob ein öffentlicher Score etwas bedeutet. Kapitel 23s Schlussbehauptung kann jetzt geprüft statt behauptet werden — ein harness macht einen agent steuerbar, nicht korrekt — und diese Prüfung brauchte zweihundert Läufe und acht Minuten.
Es gibt eine Eigenschaft eines agent, die all das nicht misst, und es ist die, wegen der Menschen gefeuert werden.
Jede Aufgabe im Golden Set dieses Kapitels wurde von mir geschrieben, und jede Datei, die der agent las, wurde von mir geschrieben. Nichts in diesem Verzeichnis versuchte, irgendetwas zu tun. Ändere eine Zeile in einer Datei, die der agent lesen soll — eine Zeile, die mit einer Anweisung endet, adressiert an das, was sie als Nächstes liest — und der agent, der 26 % erzielte, wird ihr mit denselben Tools, denselben Berechtigungen und derselben sauberen Trace folgen, und jede Zahl in diesem Kapitel bleibt exakt, wo sie ist. Eine Evaluation-Suite misst, wie oft ein System dein Ziel erreicht. Sie misst nicht, wie leicht jemand anders ihres an die Stelle setzen kann.
Kapitel 30 ist das: prompt injection, die tödliche Dreifaltigkeit aus privaten Daten, unvertrauenswürdigem Content und externer Kommunikation, und was es kostet, einem agent echte Berechtigungen zu geben. Es beginnt mit der Beobachtung, die dieses Kapitel vermieden hat — dass derselbe Passing Score kompatibel ist mit einem agent, der genau das tut, was ein Angreifer in eine Datei geschrieben hat, die er lesen sollte.
Quellen und Methode
Link zum Abschnitt: Quellen und MethodeJede Zahl oben wurde auf einer Maschine erzeugt, und keine davon berührte einen bezahlten Endpoint. Der agent ist die Schleife aus Kapitel 23 mit zwei ihrer vier Tools über einem Fünf-Dateien-Verzeichnis; das model hinter dem Port ist Qwen/Qwen2.5-0.5B-Instruct, exposed durch einen kleinen Server derselben Form wie ein Chat-Completions-Endpoint genau wie in Kapitel 23, aber in half precision auf einer Consumer-GPU statt der CPU jenes Kapitels. Kosten verwenden die Raten aus Kapitel 16 — $2.00 pro Million Input-token und $12.00 pro Million Output — angewendet auf gemessene token-Zählungen. Die wiederholten Läufe nutzen Temperatur 0.7 mit festen Seeds, sodass das ganze Set reproduzierbar ist; die Vier-Arm-Tabelle ist greedy. Intervalle sind Wilson bei 95 %, gepaarte Vergleiche sind zweiseitige exakte Sign-Tests über die diskordanten Paare; das Wilson-Intervall ist das aus Kapitel 4 und der exakte gepaarte Sign-Test der aus Kapitel 15, beide unverändert wiederverwendet. Die menschlichen Labels sind meine, angewandt auf sechzig Antworten unter der im Text zitierten schriftlichen Regel. Lies jede Größenordnung hier als Eigenschaft eines model mit einer halben Milliarde Parameter und jede Methode als übertragbar: Ein größeres model schiebt alle Zahlen nach oben und keines der Instrumente.
Referenzen
Link zum Abschnitt: Referenzen-
OpenAI, A practical guide to building agents (PDF), Seite 8, gelesen am 7. September 2026. Quelle der oben zitierten Drei-Schritte-Reihenfolge und des begleitenden Ratschlags, „build your agent prototype with the most capable model for every task to establish a performance baseline. From there, try swapping in smaller models to see if they still achieve acceptable results.“ Kapitel 22 und 25 zitieren seine Definitions- und Orchestrierungsseiten. ↩
-
Schaeffer, R., Miranda, B. und Koyejo, S. Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004 (2023). Das Argument, dass diskontinuierliche Alles-oder-nichts-Metriken scheinbare Sprünge aus glatten zugrunde liegenden Verbesserungen herstellen, mit dem in Kapitel 10 zitierten BIG-Bench-Audit. Ihre eigene Vorsicht ist es wert, wiederholt zu werden: Nichts in dem Paper behauptet, große models könnten keine emergenten Fähigkeiten zeigen. ↩
-
Kalai, A. T., Nachum, O., Vempala, S. S. und Zhang, E. Why Language Models Hallucinate. arXiv:2509.04664 (2025). Das Argument, dass Benchmarks, die richtig-oder-falsch bewerten, Raten statt Enthaltung belohnen, und der vorgeschlagene Remedy, „modifying the scoring of existing benchmarks that are misaligned but dominate leaderboards, rather than introducing additional hallucination evaluations“. Kapitel 19 zitiert es von der Retrieval-Seite; dies ist die Evaluationsseite derselben Behauptung. ↩
-
Yao, S., Shinn, N., Razavi, P. und Narasimhan, K. τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains. arXiv:2406.12045 (2024). Der Ursprung von
pass^k, definiert wie oben zitiert, mit beiden Schätzern im Paper nebeneinander abgedruckt; die Headline des Abstracts ist, dass State-of-the-Art-function-calling agents „succeed on <50 % of the tasks, and are quite inconsistent (pass^8 <25 % in retail)“, und Abschnitt 1 gibt die gpt-4o-Zahlen von ≈61 %pass^1und ≈25 %pass^8auf τ-retail. Derpass@k-Schätzer, dem es gegenübergestellt wird, stammt aus Chen, M. et al., Evaluating Large Language Models Trained on Code, arXiv:2107.03374 (2021). ↩ ↩2 ↩3 -
Zheng, L. et al. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. arXiv:2306.05685 (2023). Quelle der drei benannten Biases, der oben verwendeten Definition von Konsistenz („the percentage of cases where a judge gives consistent results when swapping the order of two assistants“), des Befunds, dass „only GPT-4 outputs consistent results in more than 60 % of cases“ mit 65.0 %, steigend auf 77.5 % few-shot, und der wörtlich zitierten Swap-and-require-agreement-Minderung. Auch das positive Resultat zählt: GPT-4-Judges erreichen „an agreement rate exceeding 80 %“ mit menschlichen Evaluationen, „the same level of human-human agreement“ — was der Grund ist, überhaupt einen Judge zu verwenden, und der Grund, deinen zu messen. ↩ ↩2 ↩3
-
EleutherAI, Language Model Evaluation Harness, Projekt-README gelesen am 7. September 2026: „over 60 standard academic benchmarks for LLMs, with hundreds of subtasks and variants implemented“ und „the backend for Hugging Face's popular Open LLM Leaderboard“. Der oben zitierte
lm_eval-Aufruf ist das eigene Beispiel des README. Liang, P. et al., Holistic Evaluation of Language Models, arXiv:2211.09110 (2022), ist der andere Standard-Runner und die bessere Lektüre zu Evaluationsdesign. ↩ -
Hendrycks, D., Burns, C., Basart, S., Zou, A., Mazeika, M., Song, D. und Steinhardt, J. Measuring Massive Multitask Language Understanding. arXiv:2009.03300 (2020). 57 Tasks; die Behauptung des Abstracts, dass das größte GPT-3-model „improves over random chance by almost 20 percentage points on average“, ist eine nützliche Erinnerung daran, wie neu die Sättigung dieses Benchmarks ist. ↩
-
Liang, P. et al. Holistic Evaluation of Language Models. arXiv:2211.09110 (2022). Sieben Metriken — Accuracy, Kalibrierung, Robustheit, Fairness, Bias, Toxizität und Effizienz — über 16 Kern-Szenarien und 30 models, mit den oben zitierten Coverage-Zahlen. Der Grund, es zu lesen, ist das Framing: Welche der sieben du berichtest, ist selbst eine Entscheidung. ↩ ↩2
-
Chiang, W.-L. et al. Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. arXiv:2403.04132 (2024). Über 240K Votes zum Zeitpunkt des Schreibens, crowdsourced paarweise Präferenz und die Behauptung, dass „the crowdsourced human votes are in good agreement with those of expert raters“. ↩
-
Jimenez, C. E., Yang, J., Wettig, A., Yao, S., Pei, K., Press, O. und Narasimhan, K. SWE-bench: Can Language Models Resolve Real-World GitHub Issues? arXiv:2310.06770 (2023). 2,294 Probleme aus 12 Python-Repositories, bewertet durch die eigenen Tests der Repositories, wobei das beste damalige model „a mere 1.96 %“ löste. Kapitel 23 nutzt es für die andere Bedeutung des Wortes „harness“. ↩
-
Zhou, S. et al. WebArena: A Realistic Web Environment for Building Autonomous Agents. arXiv:2307.13854 (2023). Funktionierende Websites über vier Domains hinweg, mit einem besten GPT-4 agent bei 14.41 % gegenüber 78.24 % für Menschen. ↩
-
Xie, T. et al. OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments. arXiv:2404.07972 (2024). 369 Tasks auf echten Betriebssystemen; Menschen über 72.36 %, bestes model 12.24 %, mit GUI-Grounding als Hauptlücke benannt. ↩
-
Mialon, G., Fourrier, C., Swift, C., Wolf, T., LeCun, Y. und Scialom, T. GAIA: A Benchmark for General AI Assistants. arXiv:2311.12983 (2023). 466 Fragen, Menschen bei 92 % gegenüber 15 % für GPT-4 mit Plugins — die sauberste veröffentlichte Aussage zur Lücke zwischen dem, was für einen Menschen leicht ist, und dem, was für einen Assistenten leicht ist. ↩
-
Liu, X. et al. AgentBench: Evaluating LLMs as Agents. arXiv:2308.03688 (2023). Acht unterschiedliche Umgebungen und eine signifikante Disparität zwischen führenden kommerziellen models und Open-Source-Models vergleichbarer Größe. ↩
-
Andriushchenko, M. et al. AgentHarm: A Benchmark for Measuring Harmfulness of LLM Agents. arXiv:2410.09024 (2024). 110 explizit bösartige agent-Tasks (440 mit Augmentations) über 11 Schadenskategorien, mit dem Befund, dass führende models „surprisingly compliant with malicious agent requests without jailbreaking“ sind und einfache universelle Jailbreak-Templates auf agents übertragen, während deren Fähigkeiten erhalten bleiben. Es ist die Brücke zu Kapitel 30: Ein Capability-Benchmark und ein Harm-Benchmark messen dasselbe System und widersprechen einander darin, ob es bereit ist. ↩
-
Anthropic, Is my data used for model training?,
privacy.claude.com, gelesen am 7. September 2026. Oben wörtlich zitiert, einschließlich der Feedback-Ausnahme und des Fünf-Jahres-Speicherfensters für eingereichtes Feedback. ↩ -
OpenAI, Your data (API data controls documentation),
developers.openai.com, gelesen am 7. September 2026. Quelle der Default-No-Training-Aussage, der dreißigtägigen Abuse-Monitoring-Retention, der Beschreibung von Zero Data Retention und der Liste berechtigter Endpoints sowie der Data-Residency-Regionen. ↩