Obtén JSON estructurado y validado de flujos de trabajo de agentes. El SDK del Agente admite salidas estructuradas a través de Esquemas JSON, asegurando que tus agentes devuelvan datos exactamente en el formato que necesitas.
Cuándo usar salidas estructuradas
Usa salidas estructuradas cuando necesites JSON validado después de que un agente complete un flujo de trabajo de múltiples turnos con herramientas (búsquedas de archivos, ejecución de comandos, investigación web, etc.).
Para llamadas de API únicas sin uso de herramientas, consulta Salidas Estructuradas de API.
Las salidas estructuradas proporcionan integración confiable y segura en tipos con tus aplicaciones:
Define tu esquema JSON
Crea un Esquema JSON que describa la estructura que deseas que devuelva el agente. El esquema utiliza el formato estándar de Esquema JSON.
Añade el parámetro outputFormat
Incluye el parámetro outputFormat en tus opciones de consulta con type: "json_schema" y tu definición de esquema.
Ejecuta tu consulta
El agente utiliza cualquier herramienta que necesite para completar la tarea (operaciones de archivos, comandos, búsqueda web, etc.).
Accede a la salida validada
El resultado final del agente será JSON válido que coincida con tu esquema, disponible en message.structured_output.
El SDK del Agente admite las mismas características y limitaciones de Esquema JSON que Salidas Estructuradas de API.
Características clave admitidas:
enum, const, required, additionalProperties (debe ser false)date-time, date, email, uri, uuid, etc.$ref, $def, y definitionsPara detalles completos sobre características admitidas, limitaciones y soporte de patrones regex, consulta Limitaciones de Esquema JSON en la documentación de API.
Aquí hay un ejemplo completo que muestra un agente que busca TODOs en código y extrae información de 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}`)
}
})
}
}El agente utiliza autónomamente las herramientas correctas (Grep, Bash) para recopilar información y devuelve datos validados.
Si el agente no puede producir una salida válida que coincida con tu esquema, recibirás un resultado de error:
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')
}
}
}