Warum strukturierte Ausgaben?
Agenten geben standardmäßig freien Text zurück, was für Chat funktioniert, aber nicht, wenn Sie die Ausgabe programmgesteuert verwenden müssen. Strukturierte Ausgaben geben Ihnen typisierte Daten, die Sie direkt an Ihre Anwendungslogik, Datenbank oder UI-Komponenten übergeben können. Stellen Sie sich eine Rezept-App vor, bei der ein Agent das Web durchsucht und Rezepte zurückbringt. Ohne strukturierte Ausgaben erhalten Sie freien Text, den Sie selbst analysieren müssten. Mit strukturierten Ausgaben definieren Sie die gewünschte Form und erhalten typisierte Daten, die Sie direkt in Ihrer App verwenden können.Ohne strukturierte Ausgaben
Ohne strukturierte Ausgaben
Mit strukturierten Ausgaben
Mit strukturierten Ausgaben
Schnellstart
Um strukturierte Ausgaben zu verwenden, definieren Sie ein JSON Schema, das die Form der gewünschten Daten beschreibt, und übergeben Sie es dann anquery() über die Option outputFormat (TypeScript) oder output_format (Python). Wenn der Agent fertig ist, enthält die Ergebnismeldung ein Feld structured_output mit validierten Daten, die Ihrem Schema entsprechen.
Das folgende Beispiel fordert den Agenten auf, Anthropic zu recherchieren und den Firmennamen, das Gründungsjahr und den Hauptsitz als strukturierte Ausgabe zurückzugeben.
Typsichere Schemas mit Zod und Pydantic
Anstatt JSON Schema von Hand zu schreiben, können Sie Zod (TypeScript) oder Pydantic (Python) verwenden, um Ihr Schema zu definieren. Diese Bibliotheken generieren das JSON Schema für Sie und ermöglichen es Ihnen, die Antwort in ein vollständig typisiertes Objekt zu analysieren, das Sie in Ihrer gesamten Codebasis mit Autovervollständigung und Typprüfung verwenden können. Das folgende Beispiel definiert ein Schema für einen Implementierungsplan für Features mit einer Zusammenfassung, einer Liste von Schritten (jeweils mit Komplexitätsstufe) und potenziellen Risiken. Der Agent plant das Feature und gibt ein typisiertesFeaturePlan-Objekt zurück. Sie können dann auf Eigenschaften wie plan.summary zugreifen und über plan.steps mit vollständiger Typsicherheit iterieren.
- Vollständige Typinferenz (TypeScript) und Typhinweise (Python)
- Laufzeitvalidierung mit
safeParse()odermodel_validate() - Bessere Fehlermeldungen
- Zusammensetzbare, wiederverwendbare Schemas
Konfiguration des Ausgabeformats
Die OptionoutputFormat (TypeScript) oder output_format (Python) akzeptiert ein Objekt mit:
type: Setzen Sie auf"json_schema"für strukturierte Ausgabenschema: Ein JSON Schema-Objekt, das Ihre Ausgabestruktur definiert. Sie können dies aus einem Zod-Schema mitz.toJSONSchema()oder einem Pydantic-Modell mit.model_json_schema()generieren
enum, const, required, verschachtelte Objekte und $ref-Definitionen. Die vollständige Liste der unterstützten Funktionen und Einschränkungen finden Sie unter JSON Schema-Einschränkungen.
Beispiel: TODO-Tracking-Agent
Dieses Beispiel zeigt, wie strukturierte Ausgaben mit Multi-Step-Tool-Nutzung funktionieren. Der Agent muss TODO-Kommentare in der Codebasis finden und dann für jeden Git-Blame-Informationen nachschlagen. Er entscheidet autonom, welche Tools er verwenden soll (Grep zum Suchen, Bash zum Ausführen von Git-Befehlen) und kombiniert die Ergebnisse in eine einzelne strukturierte Antwort. Das Schema enthält optionale Felder (author und date), da Git-Blame-Informationen möglicherweise nicht für alle Dateien verfügbar sind. Der Agent füllt aus, was er finden kann, und lässt den Rest weg.
Fehlerbehandlung
Die Generierung strukturierter Ausgaben kann fehlschlagen, wenn der Agent kein gültiges JSON erzeugen kann, das Ihrem Schema entspricht. Dies geschieht normalerweise, wenn das Schema für die Aufgabe zu komplex ist, die Aufgabe selbst mehrdeutig ist, oder der Agent sein Wiederholungslimit beim Versuch, Validierungsfehler zu beheben, erreicht. Wenn ein Fehler auftritt, hat die Ergebnismeldung einensubtype, der angibt, was schief gelaufen ist:
| Subtype | Bedeutung |
|---|---|
success | Ausgabe wurde erfolgreich generiert und validiert |
error_max_structured_output_retries | Agent konnte nach mehreren Versuchen keine gültige Ausgabe erzeugen |
subtype, um zu bestimmen, ob die Ausgabe erfolgreich generiert wurde oder ob Sie einen Fehler behandeln müssen:
- Halten Sie Schemas fokussiert. Tief verschachtelte Schemas mit vielen erforderlichen Feldern sind schwerer zu erfüllen. Beginnen Sie einfach und fügen Sie Komplexität nach Bedarf hinzu.
- Passen Sie das Schema an die Aufgabe an. Wenn die Aufgabe möglicherweise nicht alle Informationen hat, die Ihr Schema erfordert, machen Sie diese Felder optional.
- Verwenden Sie klare Prompts. Mehrdeutige Prompts machen es für den Agenten schwieriger zu wissen, welche Ausgabe er erzeugen soll.
Verwandte Ressourcen
- JSON Schema-Dokumentation: Erfahren Sie mehr über JSON Schema-Syntax zum Definieren komplexer Schemas mit verschachtelten Objekten, Arrays, Enums und Validierungsbeschränkungen
- API Structured Outputs: Verwenden Sie strukturierte Ausgaben direkt mit der Claude API für Single-Turn-Anfragen ohne Tool-Nutzung
- Custom tools: Geben Sie Ihrem Agenten benutzerdefinierte Tools, die während der Ausführung aufgerufen werden können, bevor strukturierte Ausgaben zurückgegeben werden