Ottieni JSON strutturati e convalidati dai flussi di lavoro degli agenti. L'Agent SDK supporta output strutturati attraverso JSON Schemas, assicurando che i tuoi agenti restituiscano dati esattamente nel formato di cui hai bisogno.
Quando utilizzare output strutturati
Utilizza output strutturati quando hai bisogno di JSON convalidato dopo che un agente completa un flusso di lavoro multi-turno con strumenti (ricerche di file, esecuzione di comandi, ricerca web, ecc.).
Per singole chiamate API senza utilizzo di strumenti, vedi Output strutturati API.
Gli output strutturati forniscono un'integrazione affidabile e type-safe con le tue applicazioni:
Definisci il tuo schema JSON
Crea uno schema JSON che descriva la struttura che desideri che l'agente restituisca. Lo schema utilizza il formato standard JSON Schema.
Aggiungi il parametro outputFormat
Includi il parametro outputFormat nelle opzioni della query con type: "json_schema" e la definizione dello schema.
Esegui la query
L'agente utilizza gli strumenti di cui ha bisogno per completare il compito (operazioni su file, comandi, ricerca web, ecc.).
Accedi all'output convalidato
Il risultato finale dell'agente sarà JSON valido corrispondente al tuo schema, disponibile in message.structured_output.
L'Agent SDK supporta le stesse funzionalità e limitazioni di JSON Schema di API Structured Outputs.
Funzionalità chiave supportate:
enum, const, required, additionalProperties (deve essere false)date-time, date, email, uri, uuid, ecc.$ref, $def, e definitionsPer i dettagli completi sulle funzionalità supportate, limitazioni e supporto dei pattern regex, vedi Limitazioni JSON Schema nella documentazione dell'API.
Ecco un esempio completo che mostra un agente che cerca TODO nel codice ed estrae informazioni di git blame:
import { query } from '@anthropic-ai/claude-agent-sdk'
// Define structure for TODO extraction
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 uses Grep to find TODOs, Bash to get git blame info
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}`)
}
})
}
}L'agente utilizza autonomamente gli strumenti giusti (Grep, Bash) per raccogliere informazioni e restituisce dati convalidati.
Se l'agente non riesce a produrre un output valido corrispondente al tuo schema, riceverai un risultato di errore:
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')
}
}
}