Structured Outputs

LLMs são funções estocásticas com saída não tipada — structured outputs é como você recria contrato de tipo na borda. A frase é a tese que organiza este vault (ver Formação Engenheiro de IA): o modelo é uma dependência cujo retorno é texto livre, e qualquer pipeline sério precisa transformar esse texto num objeto validável antes do próximo passo. Esta trilha cobre as três camadas dessa disciplina: o problema (por que “pedir JSON no prompt” não basta), os mecanismos (JSON Schema, function calling, structured outputs por provider), e a robustez (validação semântica, retry, streaming).

Pré-requisitos

09 - APIs de LLM — anatomia de uma chamada é suficiente. Familiaridade com Prompt Engineering ajuda a entender por que prompt sozinho não resolve, mas não é obrigatória.

Provider guarante shape, não semântica

Mesmo com strict mode da OpenAI, tool use da Anthropic, ou response schema do Gemini, a garantia é que o JSON tem os campos certos com os tipos certos. O conteúdo dos campos (um email realmente ser um email, um cnpj ter dígito verificador válido) segue sendo seu problema. Notas 07-08 tratam disso.

Comece por aqui

Trilha sequencial recomendada — do problema ao mecanismo, do mecanismo à robustez.

Bloco 1 — Fundamentos (2 notas)

Por que o output não estruturado é um problema técnico, e qual é a linguagem padrão pra resolver.

Bloco 2 — Mecanismos (4 notas)

Como o output estruturado é forçado na prática — o flip conceitual de function calling, e as implementações por provider.

Bloco 3 — Robustez (2 notas)

O que fazer quando o shape está certo mas o conteúdo não, e como lidar com output parcial.

Rotas alternativas

Rota mínima (preciso resolver hoje)

“Output do meu LLM não está parseando — me dê o essencial”

01 - O problema do output não estruturado02 - JSON Schema como contrato04 - OpenAI Structured Outputs — strict mode ou 05 - Anthropic tool use para forçar formato07 - Validação e retry — Pydantic, Zod

Rota arquitetura (estou desenhando pipeline)

“Quero entender os mecanismos antes de escolher provider”

02 - JSON Schema como contrato03 - Function calling como mecanismo de output04 - OpenAI Structured Outputs — strict mode05 - Anthropic tool use para forçar formato06 - Gemini structured output07 - Validação e retry — Pydantic, Zod

Rota provider único (já escolhi stack)

“Trabalho só com OpenAI / Anthropic / Gemini”

02 - JSON Schema como contrato → nota do provider correspondente (04, 05 ou 06) → 07 - Validação e retry — Pydantic, Zod08 - Streaming de structured outputs

Rota streaming UI (UX em chat / canvas)

“Quero estruturar output mas mostrar enquanto sai”

02 - JSON Schema como contrato05 - Anthropic tool use para forçar formato08 - Streaming de structured outputs07 - Validação e retry — Pydantic, Zod

Leituras recomendadas

FonteTipoCobertura
@hooeemBecome an AI Engineer, caps #6 e #11Thread / artigoNotas 01-03 (espinha dorsal conceitual)
OpenAIStructured Outputs guide (docs)Doc oficialNota 04
AnthropicTool use overview (docs)Doc oficialNotas 03 e 05
GoogleGemini API — Structured output (docs)Doc oficialNota 06
JSON Schema spec (json-schema.org)SpecNota 02
Eugene YanPatterns for LLM Systems (eugeneyan.com)ArtigoNotas 01, 07 — guardrails e validação
PydanticValidators docsDoc oficialNota 07
ZodRefinements docsDoc oficialNota 07

Veja também

Todas as notas

LIST
FROM "03-Dominios/IA/Structured Outputs"
WHERE type != "moc"
SORT file.name ASC