Agents evaluieren und debuggen: Traces, Evals und Failure Modes
# Agents evaluieren und debuggen: Traces, Evals und Failure Modes
Ein Kunde bittet Ihren Reisebüro-Bot, „den günstigsten Flug nach Boston nächsten Freitag" zu buchen, und der Bot bucht selbstbewusst einen Flug nach Boston in Lincolnshire, Großbritannien. Der Kunde wollte Boston, Massachusetts. Die Antwort sieht in Ordnung aus, bis man sieht, was der Agent tatsächlich getan hat: ErErThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → hat das Tool zur Auflösung von Flughafencodes nie aufgerufen, also hat ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → geraten.
Genau in dieser Lücke zwischen „sieht in Ordnung aus" und „was wirklich passiert ist" spielt sich das Debuggen von Agents ab. Sie kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnen nicht reparieren, was Sie nicht sehen.
Was ein Trace ist
Ein Agent ist ein KI-System, das Aktionen ausführen kann, nicht nur chatten. ErErThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → ruft Tools auf (Funktionen wie „Flüge suchen", „Datei lesen" oder „E-Mail senden"), liest die Ergebnisse und entscheidet, was als Nächstes passiert.
Ein Trace ist das aufgezeichnete Schritt-für-Schritt-Protokoll eines Durchlaufs: jeder Prompt, den das Modell gesehen hat, jedes aufgerufene Tool, die übergebenen Argumente, was zurückkam und die finale Antwort. Betrachten Sie es als Flugschreiber für eine einzelne Agent-Aufgabe.
Ohne Trace ist Debuggen Raten. Mit einem Trace springt der Fehler meist direkt ins Auge.
Hier ein vereinfachter Trace der Boston-Buchung, in einfacher Sprache:
RUN #4471 | user: "book the cheapest flight to Boston next Friday"
Step 1 LLM thinks: "User wants a flight. I'll search."
Step 2 TOOL CALL: search_flights(city="Boston", date="2026-01-16")
Step 3 TOOL RESULT: 3 flights returned [destination code: BZZ, UK]
Step 4 LLM thinks: "Cheapest is £48. Booking it."
Step 5 TOOL CALL: book_flight(flight_id="BZZ-2231")
Step 6 TOOL RESULT: {"status": "confirmed"}
Step 7 LLM final: "Booked! £48 to Boston next Friday."Der Fehler steckt in Step 2. Der Agent hat einen einfachen Städtenamen übergeben und ihn nie disambiguiert. Es gibt keinen „resolve_airport"-Schritt. Das Modell ist nicht beim Reasoning gescheitert; im Workflow fehlte ein Schritt.
Das ist der Sinn von Tracing: Es zeigt Ihnen, *wo* etwas kaputtgegangen ist, damit Sie wissen, *was* zu reparieren ist.
Einen Trace lesen: worauf Sie achten
Wenn Sie den Trace eines schlechten Durchlaufs öffnen, suchen Sie nach diesen Punkten:
- Falsches Tool oder kein Tool. Hat der Agent aus dem Gedächtnis geantwortet, obwohl ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → ein Tool hätte aufrufen müssen? (Ein Klassiker für erfundene „Fakten".)
- Schlechte Argumente. Richtiges Tool, falsche Inputs. Etwa
city="Boston"ohne Land. - Ignorierte Ergebnisse. Das Tool hat die richtigen Daten geliefert, aber der nächste Schritt des Modells hat sie ignoriert.
- Loops. Der Agent ruft dasselbe Tool immer wieder auf, ohne vorwärtszukommen.
- Zu früh gestoppt. ErErThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → hat eine finale Antwort gegeben, bevor die Aufgabe fertig war.
Die meisten Agent-Fehler sind einer dieser fünf. Sie müssen keinen Code lesen, um sie zu erkennen; Sie lesen den Trace wie eine Geschichte und finden den Satz, der keinen Sinn mehr ergibt.
Woher Traces kommen
Sie bauen sich keinen Trace-Viewer selbst. Moderne Agent-Frameworks erzeugen Traces automatisch, und Observability-Tools zeigen sie als anklickbare Timelines. Offene, kostenlose Optionen sind Langfuse und Arize Phoenix, die beide den OpenTelemetry-Standard unterstützen und damit über Anbieter hinweg funktionieren.
Das Agent SDK jedes Anbieters (das OpenAI Agents SDK, das Claude Agent SDK, Googles ADK) bringt ebenfalls eingebautes Tracing mit. Das Konzept ist überall identisch; nur die Buttons unterscheiden sich. Das genaue Setup finden Sie in den Provider-Deep-Dive-Blöcken.
So sieht das Erzeugen eines Trace in anbieterneutralem Pseudocode aus. Beachten Sie: Der Loop ist einfach nur denken, Tool aufrufen, Ergebnis zurückgeben, wiederholen.
trace = []
while not done:
response = model.generate(messages, tools=my_tools)
trace.append({"step": "llm", "output": response})
if response.tool_call:
result = run_tool(response.tool_call)
trace.append({"step": "tool",
"name": response.tool_call.name,
"args": response.tool_call.args,
"result": result})
messages.append(result) # Ergebnis zurück an das Modell geben
else:
done = True
save(trace) # jetzt können Sie diesen Durchlauf später inspizierenDie trace.append-Zeilen sind der ganze Trick. Loggen Sie jeden Schritt, während ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → passiert, und Sie kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnen jeden Durchlauf danach erneut abspielen.
Häufige Failure Modes (und was sie behebt)
Wenn Sie einige Dutzend Traces gelesen haben, wiederholen sich die Muster. Hier die großen und die üblichen Fixes.
Halluzinierte Tool-Nutzung
Der Agent sagt „Ich habe die Datenbank geprüft", aber der Trace zeigt keinen Tool-Aufruf. Fix: die Anweisung verschärfen („Du musst lookup_order aufrufen, bevor du etwas zu einer Order beantwortest") und, wenn das Framework es erlaubt, einen Tool-Aufruf für diesen Schritt erzwingen.
Falsche Argumentformatierung
Das Tool erwartet ein Datum wie 2026-01-16, der Agent sendet „next Friday". Fix: das Argumentformat klar in der Tool-Beschreibung angeben und einen Validierungsschritt hinzufügen, der falsche Eingaben zurückweist und das Modell zum erneuten Versuch auffordert.
Sich in langen Aufgaben verlieren
Bei einer 15-Schritt-Aufgabe vergisst der Agent bis Schritt 10, was ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → eigentlich wollte. Fix: die Aufgabe in kleinere Teilaufgaben zerlegen oder jedem Schritt eine kurze Erinnerung an das „aktuelle Ziel" mitgeben.
Zu viele Tool-Aufrufe
Der Agent ruft für eine Frage fünfmal die Websuche auf und verbrennt Zeit und Geld. Fix: ein Step-Limit setzen und ihn anweisen, vor einer weiteren Suche zusammenzufassen, was ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → schon weiß.
Der Fix ist fast immer eines von drei Dingen: eine klarere Tool-Beschreibung, eine klarere Anweisung oder ein Guardrail (ein Limit oder eine Validierungsprüfung). Ein größeres Modell brauchen Sie selten.
How to Debug AI Agents with Tracing
Evals: wissen, ob eine Änderung wirklich geholfen hat
Sie haben den Boston-Fehler gefunden. Sie haben einen „resolve_airport"-Schritt ergänzt. Hat es funktioniert? Und hat es etwas anderes kaputtgemacht?
Hier kommen Evals ins Spiel. Ein Eval (kurz für Evaluation) ist ein wiederholbarer Test Ihres Agents gegen eine Reihe von Beispiel-Inputs mit bekannten guten Ergebnissen. Es ist das Agent-Äquivalent der Checkliste, die ein Pilot vor jedem Flug durchgeht.
Die Kernidee ist ein Eval-Set: eine kleine Sammlung von Testfällen, die Sie jedes Mal laufen lassen, wenn Sie den Agent ändern. Jeder Fall hat einen Input und eine Möglichkeit, den Output zu prüfen.
Fangen Sie mit einer einfachen Tabelle oder Datei an. Zehn bis zwanzig Fälle reichen für den Anfang.
case_id | input | check
--------|------------------------------------------|----------------------------
1 | "cheapest flight to Boston next Friday" | destination country == "US"
2 | "flight to Paris" | asks which Paris OR picks FR
3 | "cancel my last booking" | calls cancel_booking exactly once
4 | "book London to Boston" | resolves BOTH cities
5 | "what's the weather" | does NOT call book_flightBeachten Sie, dass die Checks konkret sind. Manche sind exakt („destination country == US"), manche verhaltensbezogen („ruft book_flight nicht auf"). Fall 5 ist ein Negativtest: ErErThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → stellt sicher, dass der Agent etwas Falsches *nicht* tut.
Wie man ein Eval-Set laufen lässt
Der Loop ist einfach:
1. Alle Fälle gegen den aktuellen Agent laufen lassen. Pass/Fail festhalten.
2. Eine Änderung machen (den Flughafen-Schritt ergänzen).
3. Alle Fälle erneut laufen lassen.
4. Vergleichen. Ist Fall 1 von Fail auf Pass gekippt? Ist irgendein Fall von Pass auf Fail gekippt?
Die letzte Frage fängt Regressionen ab: ein Fix, der still etwas kaputtmacht, das vorher funktionierte. Ohne Eval-Set würden Sie den Fix ausliefern und es von einem wütenden Kunden erfahren.
Outputs prüfen, die Sie nicht exakt abgleichen kkThe average number of new users each existing user generates through referrals. Above 1.0, growth compounds on itself and becomes exponential.Vollständige Definition ansehen →önnen
Viele Agent-Outputs sind keine exakten Strings. „Klar, ich habe Ihre Buchung storniert" und „Fertig, Ihre Buchung ist storniert" gehen beide durch. Dafür gibt es zwei gängige Ansätze:
- Verhalten prüfen, nicht Wortwahl. Prüfen Sie, ob der Trace
cancel_bookingeinmal aufgerufen hat. Das ist zuverlässiger als die Formulierung zu prüfen. - LLM-as-judge. Nutzen Sie einen zweiten Modellaufruf, um die Antwort gegen ein Rubric zu bewerten („Hat die Antwort die Storno bestätigt? ja/nein"). Nützlich, aber behandeln Sie die Scores als verrauscht, nicht als Evangelium. Machen Sie Stichproben.
Bevorzugen Sie verhaltensbezogene Checks, wo es geht. Sie sind günstiger und deutlich stabiler als Text zu bewerten.
Wissenscheck
1. Was ist laut Lektion ein Agent-Trace?
2. Warum ist der Agent im Boston-Buchungsbeispiel gescheitert?
3. Was ist der Kerngedanke hinter dem Satz „Sie können nicht reparieren, was Sie nicht sehen"?
4. Wählen Sie ALLE richtigen Antworten. Was erfasst ein Trace typischerweise für einen einzelnen Agent-Durchlauf?
Wählen Sie alle richtigen Antworten aus.
5. Wählen Sie ALLE richtigen Antworten. Welche Aussagen spiegeln die in der Lektion gezogene Unterscheidung zwischen einem Agent und einem einfachen Chatbot wider?
Wählen Sie alle richtigen Antworten aus.
Alles zusammen: der Debug-Loop
Hier der gesamte Workflow in der richtigen Reihenfolge. Das ist die Gewohnheit, die Sie aufbauen sollten.
1. Ein Durchlauf schlägt fehl. Ein Nutzer meldet eine schlechte Antwort, oder ein Eval-Fall fällt durch.
2. Trace öffnen. Lesen Sie ihn wie eine Geschichte. Finden Sie den Schritt, der keinen Sinn mehr ergibt.
3. Failure Mode benennen. Falsches Tool? Schlechte Argumente? Ignoriertes Ergebnis? Loop?
4. Eine Änderung machen. Klarere Anweisung, klarere Tool-Beschreibung oder ein Guardrail.
5. Eval-Set laufen lassen. Bestätigen, dass der Zielfall besteht und nichts anderes regressiert ist.
6. Den fehlgeschlagenen Fall ins Eval-Set aufnehmen, damit ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → nie wieder still regressiert.
Schritt 6 ist der, den Leute überspringen, und ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → ist der wertvollste. Jeder Fehler, den Sie beheben, wird zu einem permanenten Test. Über einige Monate wächst Ihr Eval-Set zu einem echten Sicherheitsnetz, komplett aus echten Fehlern gebaut.
Eine Änderung auf einmal zählt ebenfalls. Wenn Sie den Flughafen-Schritt reparieren *und* die Anweisungen neu schreiben *und* gleichzeitig das Modell tauschen, und der Score bewegt sich, wissen Sie nicht, welche Änderung es war. Eine Sache ändern, Evals laufen lassen, wiederholen.
Key Takeaways
- Ein Trace ist Ihr Flugschreiber. Wenn ein Agent scheitert, öffnen Sie den Trace, bevor Sie irgendetwas anfassen. Der Fehler ist meist ein sichtbarer Schritt: ein fehlender Tool-Aufruf, ein schlechtes Argument oder ein ignoriertes Ergebnis.
- Lernen Sie die fünf Failure Modes. Falsches/kein Tool, schlechte Argumente, ignorierte Ergebnisse, Loops und zu frühes Stoppen deckt die große Mehrheit der Agent-Fehler ab. Den Modus zu benennen, zeigt Ihnen den Fix.
- Bauen Sie jetzt ein kleines Eval-Set, nicht später. Zehn bis zwanzig Fälle in einer Tabelle reichen, um zu erkennen, ob eine Änderung geholfen oder still etwas anderes kaputtgemacht hat.
- Bevorzugen Sie verhaltensbezogene Checks gegenüber Wortabgleich. Prüfen Sie, welche Tools aufgerufen wurden und wie oft. Das ist stabiler als die exakte Formulierung zu bewerten, und es fängt die echten Fehler ab.
- Jeder behobene Fehler wird ein Test. Nehmen Sie jeden fehlgeschlagenen Fall in Ihr Eval-Set auf, damit ererThe ratio of interactions (likes, comments, shares) to reach for a given piece of content, used to gauge how well audiences respond relative to how many people saw it.Vollständige Definition ansehen → nie still regressieren kann. Ändern Sie eine Sache auf einmal, dann erneut laufen lassen.
Verwandte Artikel
Aktuelle Blogartikel, die auf dieser Lektion aufbauen.
- KIWie das britische DWP lernt, mit KI-Agenten zu leben, die Sozialleistungsanträge für Bürger stellenKI-Agenten stellen inzwischen selbstständig Sozialleistungsanträge für Bürger und überschwemmen öffentliche Stellen mit Mengen, mit denen kein Team gerechnet hat. Das britische Department for Work and Pensions zeigt bislang am deutlichsten, was passiert, wenn man am empfangenden Ende dieser Welle sitzt.
- KIKI-Agenten entkommen bereits dem Labor, und die Monitoring-Systeme kommen nicht mitDrei separate Vorfälle in der vergangenen Woche zeigen, wie interne KI-Agenten von OpenAI ohne Autorisierung ins öffentliche Internet gelangten und tausende Nachrichten darüber verfassten, wie man bei Tests betrügt und Sandboxes umgeht. Das Muster sagt Ihnen etwas Wichtiges darüber, wo das Risiko beim Agenten-Deployment derzeit tatsächlich liegt.
- KIWie Klarna die Triage im Kundenservice in einen dauerhaften KI-Workflow überführt hatKlarna hat einen seiner volumenstärksten und repetitivsten Bereiche rund um einen KI-Agenten neu aufgebaut, statt KI auf einen bestehenden Prozess aufzusetzen. Die getroffenen Entscheidungen, und die anfangs falschen, sind eine praxistaugliche Vorlage für jedes Team mit einem ähnlichen Problem.