Obtenha JSON estruturado e validado de fluxos de trabalho de agentes. O Agent SDK suporta saídas estruturadas através de JSON Schemas, garantindo que seus agentes retornem dados exatamente no formato que você precisa.
Quando usar saídas estruturadas
Use saídas estruturadas quando você precisar de JSON validado após um agente completar um fluxo de trabalho multi-turno com ferramentas (buscas de arquivo, execução de comando, pesquisa na web, etc.).
Para chamadas de API única sem uso de ferramentas, consulte Saídas Estruturadas de API.
Saídas estruturadas fornecem integração confiável e type-safe com suas aplicações:
Defina seu JSON schema
Crie um JSON Schema que descreva a estrutura que você quer que o agente retorne. O schema usa o formato padrão de JSON Schema.
Adicione o parâmetro outputFormat
Inclua o parâmetro outputFormat nas opções de sua query com type: "json_schema" e sua definição de schema.
Execute sua query
O agente usa qualquer ferramenta que precisar para completar a tarefa (operações de arquivo, comandos, pesquisa na web, etc.).
Acesse a saída validada
O resultado final do agente será JSON válido correspondendo ao seu schema, disponível em message.structured_output.
O Agent SDK suporta os mesmos recursos e limitações de JSON Schema que Saídas Estruturadas de API.
Recursos principais suportados:
enum, const, required, additionalProperties (deve ser false)date-time, date, email, uri, uuid, etc.$ref, $def, e definitionsPara detalhes completos sobre recursos suportados, limitações e suporte a padrões regex, consulte Limitações de JSON Schema na documentação da API.
Aqui está um exemplo completo mostrando um agente que pesquisa código para TODOs e extrai informações de git blame:
O agente usa autonomamente as ferramentas certas (Grep, Bash) para reunir informações e retorna dados validados.
Se o agente não conseguir produzir saída válida correspondendo ao seu schema, você receberá um resultado de erro:
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')
}
}
}import { query } from '@anthropic-ai/claude-agent-sdk'
// Defina estrutura para extração de TODO
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']
}
// O agente usa Grep para encontrar TODOs, Bash para obter informações de git blame
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}`)
}
})
}
}