Die Bauchgefühl-Falle
Du hast einen Agent gebaut. Du hast 30 Minuten mit ihm gechattet. Er wirkte klug. Du hast ihn deployed.
Drei Tage später meldet ein Nutzer, dass er auf eine einfache Frage selbstsicher eine falsche Antwort gegeben hat. Du testest erneut — jetzt läuft alles prima. Du zuckst mit den Schultern. Das Modell hatte wohl einen schlechten Tag.
Das ist die Bauchgefühl-Falle: informelle Eindrücke als Qualitätssignal zu nutzen. Im Hobbybereich funktioniert das. Es scheitert in dem Moment, in dem du echte Nutzer, echtes Geld oder echten Einsatz hast.
Evals sind der Ausweg.
Was ein Eval wirklich ist
Ein Eval ist eine Funktion, die einen Prompt plus erwartetes Verhalten entgegennimmt und eine Bewertung zurückgibt. Das ist alles. Für den Einstieg ist keine ausgefeilte Infrastruktur nötig.
Das einfachste Eval, das du schreiben kannst:
interface EvalCase {
input: string;
expected: string;
check: (output: string) => boolean;
}
const cases: EvalCase[] = [
{
input: "What is 2 + 2?",
expected: "4",
check: (out) => out.includes("4"),
},
{
input: "Summarize: 'The quick brown fox jumps over the lazy dog'",
expected: "mentions fox and dog",
check: (out) => out.toLowerCase().includes("fox") && out.toLowerCase().includes("dog"),
},
];
async function runEvals(model: (prompt: string) => Promise<string>) {
let pass = 0;
for (const c of cases) {
const output = await model(c.input);
if (c.check(output)) {
pass++;
console.log(`✓ ${c.input.slice(0, 40)}`);
} else {
console.log(`✗ ${c.input.slice(0, 40)}`);
console.log(` Got: ${output.slice(0, 100)}`);
}
}
console.log(`\n${pass}/${cases.length} passed (${Math.round(pass / cases.length * 100)}%)`);
}
Führe das bei jeder Prompt-Änderung aus. Du hast jetzt eine Regressions-Suite.
Die drei Prüftypen, die du brauchst
1. Exakte Übereinstimmung — für strukturierte Ausgaben, Codes, IDs, Ja/Nein-Entscheidungen. Binär. Schnell.
2. Enthaltsprüfung — für Prosaausgaben, bei denen die genaue Formulierung variiert, aber Schlüsselfakten vorhanden sein müssen. "Die Ausgabe erwähnt 'Paris'" ist robuster als "die Ausgabe ist gleich 'Paris ist die Hauptstadt von Frankreich'".
3. Modellbewertung — für komplexe Aufgaben, bei denen du semantisches Urteilsvermögen benötigst. Frage ein zweites (günstigeres, schnelleres) Modell: "Beantwortet diese Antwort die Frage korrekt? Antworte YES oder NO mit einem Grund." Das skaliert auf subjektive Qualität, Ton und Schlussfolgerungsketten.
async function modelGrade(output: string, criterion: string): Promise<boolean> {
const verdict = await callModel(
`Criterion: ${criterion}\nOutput: ${output}\nDoes the output meet the criterion? Reply YES or NO only.`
);
return verdict.trim().startsWith("YES");
}
Was zuerst geprüft werden sollte
Wenn du bei null anfängst, prüfe in dieser Reihenfolge:
-
Happy Path — die 5-10 Eingaben, für die dein Agent explizit entwickelt wurde. Diese sollten alle bestehen. Wenn nicht, hast du keinen funktionierenden Agent, sondern eine Demo.
-
Randfälle, die du bereits scheitern gesehen hast — alles, was beim Testen kaputtgegangen ist. Encode sie sofort. Jeder Bug ist ein Eval-Fall.
-
Adversariale Eingaben — leere Eingaben, fehlerhafte Eingaben, domänenfremde Fragen, Prompt-Injection-Versuche. Dein Agent muss würdevoll degradieren.
-
Regressions-Set — ein festes Set von 50-100 Fällen, das du bei jeder Änderung ausführst. Grün bedeutet, du hast nichts kaputt gemacht. Rot bedeutet, du musst eine Entscheidung treffen.
Der Eval-Workflow
Prompt-Änderung → Evals ausführen → Score-Delta prüfen → Deployen, wenn Delta > Schwellenwert → Fertig
Dein Schwellenwert hängt vom Einsatz ab. Ein Hobbyprojekt könnte -2 % akzeptieren. Ein Produktions-Agent, der Kundendaten verarbeitet, sollte +0 % oder besser fordern. Lege das explizit fest, bevor du anfängst, damit du die Entscheidung nicht unter Druck triffst, wenn dein Score nach einem "kleinen" Prompt-Tweak um 4 % sinkt.
Erwähnenswerte Tools
- Braintrust — Eval-Runs, Logging, Modellvergleich. Hat ein großzügiges Free-Tier.
- Promptfoo — Open-Source, läuft lokal, ausgezeichnet für Red-Teaming.
- Langfuse — Observability plus Eval, gut wenn du Tracing neben Scores möchtest.
- DIY-Skript — für einfache Agents reicht ein 50-Zeilen-TypeScript-Skript oft aus. Nicht überentwickeln.
Die unbequeme Wahrheit
Die meisten agentischen Fehler sind Prompt-Fehler, keine Modellfehler. Du brauchst kein neues Modell. Du musst wissen, wobei dein aktueller Prompt versagt, und das beheben.
Evals sagen dir das. Bauchgefühl nicht.
Bau das Eval-Harness, bevor du das nächste Feature hinzufügst. Dein zukünftiges Ich wird dankbar sein.
