Erhalten Sie strukturierte, validierte JSON aus Agent-Workflows. Das Agent SDK unterstützt strukturierte Ausgaben durch JSON-Schemas und stellt sicher, dass Ihre Agenten Daten genau in dem Format zurückgeben, das Sie benötigen.
Wann strukturierte Ausgaben verwendet werden sollten
Verwenden Sie strukturierte Ausgaben, wenn Sie validiertes JSON benötigen, nachdem ein Agent einen mehrstufigen Workflow mit Tools abgeschlossen hat (Dateisuchen, Befehlsausführung, Webrecherche usw.).
Für einzelne API-Aufrufe ohne Tool-Nutzung siehe API Strukturierte Ausgaben.
Strukturierte Ausgaben bieten zuverlässige, typsichere Integration mit Ihren Anwendungen:
Definieren Sie Ihr JSON-Schema
Erstellen Sie ein JSON-Schema, das die Struktur beschreibt, die der Agent zurückgeben soll. Das Schema verwendet das Standard-JSON-Schema-Format.
Fügen Sie den outputFormat-Parameter hinzu
Fügen Sie den outputFormat-Parameter in Ihre Query-Optionen mit type: "json_schema" und Ihrer Schemadefinition ein.
Führen Sie Ihre Query aus
Der Agent verwendet alle Tools, die er benötigt, um die Aufgabe abzuschließen (Dateivorgänge, Befehle, Websuche usw.).
Greifen Sie auf validierte Ausgabe zu
Das Endergebnis des Agenten wird gültiges JSON sein, das Ihrem Schema entspricht und in message.structured_output verfügbar ist.
Das Agent SDK unterstützt die gleichen JSON-Schema-Funktionen und Einschränkungen wie API Strukturierte Ausgaben.
Wichtige unterstützte Funktionen:
enum, const, required, additionalProperties (muss false sein)date-time, date, email, uri, uuid usw.$ref, $def und definitionsFür vollständige Details zu unterstützten Funktionen, Einschränkungen und Regex-Muster-Unterstützung siehe JSON-Schema-Einschränkungen in der API-Dokumentation.
Hier ist ein vollständiges Beispiel, das einen Agent zeigt, der Code nach TODOs durchsucht und Git-Blame-Informationen extrahiert:
import { query } from '@anthropic-ai/claude-agent-sdk'
// Struktur für TODO-Extraktion definieren
const todoSchema = {
type: 'object',
properties: {
todos: {
type: 'array',
items: {
type: 'object',
properties: {
text: { type: 'string' },
file: { type: 'string' },
line: { type: 'number' },
author: { type: 'string' },
date: { type: 'string' }
},
required: ['text', 'file', 'line']
}
},
total_count: { type: 'number' }
},
required: ['todos', 'total_count']
}
// Agent verwendet Grep zum Finden von TODOs, Bash zum Abrufen von Git-Blame-Informationen
for await (const message of query({
prompt: 'Find all TODO comments in src/ and identify who added them',
options: {
outputFormat: {
type: 'json_schema',
schema: todoSchema
}
}
})) {
if (message.type === 'result' && message.structured_output) {
const data = message.structured_output
console.log(`Found ${data.total_count} TODOs`)
data.todos.forEach(todo => {
console.log(`${todo.file}:${todo.line} - ${todo.text}`)
if (todo.author) {
console.log(` Added by ${todo.author} on ${todo.date}`)
}
})
}
}Der Agent nutzt autonom die richtigen Tools (Grep, Bash), um Informationen zu sammeln und gibt validierte Daten zurück.
Wenn der Agent keine gültigen Ausgaben entsprechend Ihrem Schema erzeugen kann, erhalten Sie ein Fehlerergebnis:
for await (const msg of query({
prompt: 'Analyze the data',
options: {
outputFormat: {
type: 'json_schema',
schema: mySchema
}
}
})) {
if (msg.type === 'result') {
if (msg.subtype === 'success' && msg.structured_output) {
console.log(msg.structured_output)
} else if (msg.subtype === 'error_max_structured_output_retries') {
console.error('Could not produce valid output')
}
}
}