Quais são os três níveis de controle de saída?
O controle de saída opera em três níveis distintos — baseado em prompt, baseado em schema e constrained decoding — cada um oferecendo garantias de formato progressivamente mais fortes com compensações progressivamente maiores em relação à qualidade de raciocínio.
O formato baseado em prompt instrui o modelo por linguagem natural ("Retorne JSON com campos: nome, email, pontuação"). Isso funciona 80–95% das vezes, mas falha silenciosamente em casos extremos sem garantias de tipo, exigindo tratamento de erros para 5–20% de respostas malformadas. As abordagens baseadas em schema (function calling / tool use) definem a estrutura de saída formalmente com 95–99% de conformidade. O constrained decoding nativo usa máquinas de estados finita para mascarar tokens inválidos em tempo de geração, produzindo 100% de saídas válidas segundo o schema com certeza matemática.
A abordagem de duas etapas — deixar Claude Opus 4.8 ou GPT-5.5 raciocinar livremente na Etapa 1, depois alimentar a saída a um modelo especializado pequeno na Etapa 2 — alcança garantias de formato sem a penalidade de qualidade de raciocínio do constrained decoding.
| Nível | Taxa de conformidade | Impacto no raciocínio | Melhor para |
|---|---|---|---|
| Baseado em prompt ("retorne JSON") | 80–95% | Nenhum | Protótipos; pipelines simples |
| Function calling / Tool use | 95–99% | Mínimo | A maioria das aplicações de produção |
| Constrained decoding nativo (estrito) | 100% | Redução de qualidade de 2–10% | Extração de dados; pipelines de alto volume |
| Duas etapas (texto livre → modelo especialista) | ~100% | Nenhum | Raciocínio complexo + formato garantido |
Como você controla o formato de saída por prompt engineering?
Instruções explícitas de schema de saída — colocadas no início do prompt do sistema para Claude Opus 4.8 e imediatamente antes do conteúdo do usuário para GPT-5.5 — produzem taxas de conformidade de saída estruturada de 85–95% sem a penalidade de qualidade de raciocínio do constrained decoding nativo.
Claude Opus 4.8 responde melhor às instruções de formato de saída colocadas no início do prompt do sistema usando tags de seção estilo XML. GPT-5.5 funciona melhor quando o schema é colocado imediatamente antes do conteúdo do usuário usando regras de formato numeradas. Gemini 3.1 Pro produz a saída estruturada mais confiável quando o schema é repetido tanto no início quanto no final do prompt.
Prompt deficiente — sem estrutura, sem especificação de formato:
Analyse this customer review and tell me the sentiment, key issues, and urgency.
Como é um bom prompt de saída estruturada (Claude Opus 4.8)?
Bom prompt — Claude Opus 4.8
<output_format> Return only this JSON object, no prose: { "sentiment": "positive" | "neutral" | "negative", "key_issues": "string", // max 3 items "urgency": "low" | "medium" | "high", "confidence": 0.0–1.0 } </output_format> <task>Analyse the following customer review.</task> <review>REVIEW TEXT HERE</review>
O prompt estruturado com XML ancora o contrato de formato de saída enquanto preserva o raciocínio livre dentro do bloco `<task>`. Não é necessário constrained decoding — Claude Opus 4.8 está em conformidade em mais de 93% das chamadas de produção com essa estrutura.
Como é um bom prompt de saída estruturada (GPT-5.5)?
Bom prompt — GPT-5.5
Analyse the following customer review. Format rules: 1. Return valid JSON only. No markdown fences. No explanation. 2. Fields: "sentiment" (string: "positive"|"neutral"|"negative"), "key_issues" (array of strings, max 3), "urgency" (string: "low"|"medium"|"high"), "confidence" (float: 0.0–1.0) 3. If no issues found, return empty array for key_issues. <REVIEW TEXT HERE>
Quais regras de formato de saída se aplicam a cada modelo?
Cada LLM principal tem preferências estruturais distintas para a conformidade do formato de saída:
- Claude Opus 4.8 (Anthropic) — Tags XML (`<output>`, `<format>`, `<constraints>`); schema no início; "Retorne apenas o JSON, nada mais"
- GPT-5.5 (OpenAI) — Regras de formato numeradas; schema após a instrução principal; "Responda com JSON válido. Sem markdown. Sem explicação."
- Gemini 3.1 Pro (Google DeepMind) — Schema conciso e explícito tanto no início quanto no final; exemplo one-shot do formato de saída desejado no prompt
- Modelos locais via Ollama (LLaMA 3.1 7B, Mistral) — Mais sensíveis ao desvio de formato; um exemplo de formato one-shot diretamente no prompt é necessário para saída JSON confiável
Quais parâmetros de amostragem controlam a geração de saída?
Temperature (T), Top-P, Top-K, max_tokens, frequency_penalty e presence_penalty são seis parâmetros independentes que determinam conjuntamente o comprimento, a aleatoriedade e a repetição da saída.
Temperature (T) escala a distribuição softmax de saída: com T = 0,0 o modelo sempre seleciona o token de maior probabilidade (determinístico); com T = 2,0 a distribuição é quase plana. Top-P (amostragem de núcleo) seleciona do conjunto mínimo de tokens cuja probabilidade acumulada alcança P. Top-K restringe a geração aos K tokens de maior probabilidade em cada etapa.
| Parâmetro | Intervalo | Focado / Factual | Criativo / Diverso |
|---|---|---|---|
| Temperature (T) | 0,0–2,0 | 0,0–0,3 | 0,7–1,0 |
| Top-P | 0,0–1,0 | 0,3–0,5 | 0,9–1,0 |
| Top-K | 1–tamanho do vocabulário | 10–20 | 50–100 |
| max_tokens | dependente da tarefa | 256–512 | 2.048–8.192 |
| frequency_penalty | -2,0 a 2,0 | 0,3–0,5 (reduzir repetição) | 0,0–0,2 |
| presence_penalty | -2,0 a 2,0 | 0,0–0,2 | 0,5–0,8 |
Regra crítica: Não configure Temperature e Top-P em valores altos simultaneamente. Temperature escala primeiro a distribuição completa; depois Top-P amostra da massa de probabilidade superior já escalada. Combinar T = 1,5 e Top-P = 0,95 produz saída mais errática do que qualquer parâmetro sozinho.
Qual é a compensação entre qualidade de raciocínio e garantias de formato de saída?
Forçar JSON por constrained decoding reduz a precisão do modelo em 2,26 pontos percentuais em benchmarks de function calling — o parsing alinhado com schema do BAML alcançou 93,63% de precisão no BFCL vs. 91,37% para o constrained decoding estrito da OpenAI no mesmo benchmark.
A solução pronta para produção para sistemas que exigem tanto profundidade de raciocínio quanto garantias de formato: (1) Etapa 1 — Envie para GPT-5.5 ou Claude Opus 4.8 sem restrições: "Analise isso, raciocine passo a passo, explique sua lógica." (2) Etapa 2 — Alimente a saída da Etapa 1 a um modelo especializado pequeno: "Extraia os dados principais desta análise e retorne-os neste schema JSON exato."
Como os principais modelos se comparam no controle de formato de saída?
Testado no PromptQuorum — 30 prompts de controle de saída despachados a três modelos: Claude Opus 4.8 alcançou 93% de conformidade JSON usando instruções de formato com tags XML sem constrained decoding. GPT-5.5 alcançou 89% de conformidade usando regras de formato numeradas. Gemini 3.1 Pro alcançou 91% de conformidade com o schema indicado tanto no início quanto no final.
Em que as stop sequences diferem das restrições negativas?
As stop sequences — tokens que encerram imediatamente a saída do modelo ao serem gerados — são o mecanismo de controle de saída mais determinístico.
Usos comuns em produção:
- `"###"` — encerra a geração após um marcador de seção estruturado
- `"</output>"` — encerra após uma tag XML de fechamento
- `"\n\n"` — limita a saída a um único parágrafo
- `"Human:", "User:"` — evita que o modelo alucine uma continuação de conversa simulada
As restrições negativas no corpo do prompt — "Não inclua explicações", "Sem markdown" — reduzem os padrões de saída indesejados mas não podem garantir a conformidade da forma que as stop sequences fazem.
Que formato de saída usar para pipelines de produção?
JSON é o formato de saída dominante para pipelines LLM de produção porque mapeia diretamente para objetos de API, arrays e dados tipados.
| Formato de saída | Caso de uso | Notas |
|---|---|---|
| JSON | APIs, pipelines, repositórios de documentos | Suporte de saída estruturada nativa em todos os principais provedores |
| JSONL | Fluxos de eventos, processamento em lote | Um objeto JSON por linha; adequado para streaming e logging |
| CSV | Integração com sistemas legados | Mais simples mas sem estrutura aninhada; bom para dados tabulares |
| YAML | Artefatos de configuração | Legível por humanos; usado em contextos de CI/CD e infraestrutura |
| XML | Integração empresarial | Verbose; preferido pelo Claude como formato de estrutura de prompt, não de saída |
| Markdown | Relatórios legíveis, documentação | Ruim para parsing downstream; melhor para consumidores humanos |
Quais são as considerações globais e regionais para o controle de saída?
Empresas europeias que constroem pipelines LLM que processam dados pessoais devem aplicar o Artigo 25 do RGPD (privacidade por design) ao design do schema de saída.
Para equipes da UE que exigem inferência on-premise com controle de saída estruturada, a Mistral AI (França) suporta constrained decoding baseado em vLLM com parâmetros JSON guiados — habilitando conformidade garantizada com JSON Schema completamente dentro da infraestrutura da UE.
Empresas brasileiras que processam dados pessoais de brasileiros devem seguir a LGPD ao projetar schemas de saída — saídas que expõem campos de dados pessoais requerem base legal adequada.
Erros comuns com controle de saída
❌ Configurar tanto Temperature quanto Top-P em valores altos
Why it hurts: Se combinam — T=1,5 + Top-P=0,95 produz saída mais errática do que qualquer parâmetro sozinho.
Fix: Use um ou outro como seu controle principal de aleatoriedade, não ambos.
❌ Forçar JSON em tarefas de raciocínio complexo
Why it hurts: O constrained decoding reduz a precisão entre 2–10%. O modelo sacrifica qualidade de raciocínio para manter a conformidade com o schema.
Fix: Use a abordagem de duas etapas: raciocínio livre primeiro, depois extração estruturada.
❌ Escrever "retorne JSON" sem mostrar o schema exato
Why it hurts: O modelo adivinha os nomes dos campos, tipos e aninhamento — produzindo JSON inválido ou malformado.
Fix: Sempre forneça o schema completo com tipos de campos e valores de enumeração.
❌ Confiar em restrições negativas do corpo do prompt para o formato crítico
Why it hurts: "Não inclua markdown" pode ser ignorado pelo modelo, especialmente com temperatura alta.
Fix: Use stop sequences no nível da API — são o único mecanismo de terminação determinístico.
❌ Copiar configurações de temperatura entre modelos
Why it hurts: T=0,7 no GPT-5.5 e T=0,7 no Claude produzem distribuições de probabilidade diferentes.
Fix: Teste cada configuração de parâmetro por modelo em seu pipeline de produção.
Leituras relacionadas
- O que é prompt engineering? — princípios fundamentais por trás do design de instruções de IA estruturadas
- Temperature e Top-P explicados — análise profunda dos dois parâmetros primários de aleatoriedade
- Escreva melhor código com IA — aplicando técnicas de controle de saída em workflows de geração de código
- Tool use e function calling — saída estruturada via definições de ferramentas e schemas de função
- Tokens e economia de tokens — compreensão dos custos de tokens para constrained decoding e pipelines de duas etapas
- Tratamento de erros em aplicações LLM — detecção e recuperação de saída malformada em sistemas de produção
Como controlar o formato de saída da IA
- 1Sempre especifique o formato de saída desejado explicitamente no prompt. Em vez de "resuma isso", diga: "Resuma como uma lista de 5–7 marcadores, cada um de 1–2 frases. Use voz ativa. Não inclua opiniões." Seja específico sobre a estrutura.
- 2Use JSON schema para aplicar saída estruturada quando disponível (OpenAI, Anthropic). Se você está extraindo dados ou gerando conteúdo legível por máquina, defina o schema: nomes de campos, tipos, campos obrigatórios, restrições de enumeração.
- 3Forneça um exemplo do formato de saída exato que você quer. Mostre ao modelo um exemplo concreto: "Formate assim: { \"topic\": \"...\", \"key_points\": ..., \"confidence\": \"high|medium|low\" }."
- 4Use linguagem baseada em restrições: "Deve X, não deve Y, sempre Z." Evite linguagem suave ("tente", "aponte para"). Diga: "Retorne exatamente 3 etapas, nem mais nem menos. Não use jargão técnico. Sempre inclua um aviso se a recomendação tiver limitações."
- 5Teste sua especificação de formato de saída em um exemplo antes de executá-la em escala. Gere uma saída, verifique se corresponde à sua especificação, ajuste o prompt se necessário.
Perguntas frequentes
Qual é a diferença entre Temperature e Top-P nos LLMs?
Temperature (T) escala toda a distribuição de probabilidade softmax: T = 0,0 sempre seleciona o token de maior probabilidade (determinístico); T = 2,0 achata em direção à aleatoriedade. Top-P seleciona do conjunto mínimo de tokens cuja probabilidade acumulada alcança P. Controlam aspectos diferentes e não devem ser configurados ambos em valores altos simultaneamente.
Forçar a saída JSON reduz a qualidade da resposta da IA?
Sim — mensuravelmente. A redução é de 2,26 pontos percentuais de precisão. Para tarefas de raciocínio complexo, a abordagem de duas etapas (texto livre → estruturação especializada) preserva a qualidade alcançando 100% de conformidade de formato.
O que é constrained decoding e como ele garante a saída JSON?
O constrained decoding aplica uma FSM sobre o processo de geração de tokens. Em cada etapa, a FSM mascara tokens incompatíveis com o schema. A OpenAI o implementa via `response_format: { type: "json_schema", strict: true }`. A Anthropic via Strict Tool Use Mode.
Que formato de saída devo usar para pipelines LLM de produção?
JSON é o padrão para pipelines LLM de produção. Use JSONL para fluxos de eventos e processamento em lote. Use CSV apenas para compatibilidade com sistemas legados. A arquitetura recomendada: TOON para entrada + JSON com constrained decoding para a saída da Etapa 2.
Em que as stop sequences diferem das restrições negativas nos prompts?
As stop sequences são aplicadas no nível da API — o modelo para no instante em que a string especificada aparece, sem exceções. As restrições negativas no corpo do prompt não são vinculantes. Use ambas: stop sequences para terminação estrutural, restrições negativas para moldar o conteúdo.
Fontes e leituras adicionais
- OpenAI, 2025. "Structured Outputs Guide" — documentação oficial sobre constrained decoding, modo JSON estrito e garantias de conformidade de schema
- BoundaryML / BAML, 2025. "Structured Outputs Create False Confidence" — benchmark mostrando 93,63% vs. 91,37% de precisão
- Hannecke, 2025. "Beyond JSON: Picking the Right Format for LLM Pipelines" — análise de arquitetura de produção: entrada TOON + saída JSON restrita