Skip to main content
PromptQuorumPromptQuorum
Início/Prompt Engineering/Controle a saída: conformidade com JSON Schema, constrained decoding e seleção de formato
Techniques

Controle a saída: conformidade com JSON Schema, constrained decoding e seleção de formato

·10 min de leitura·By Hans Kuepper · Founder of PromptQuorum, multi-model AI dispatch tool · PromptQuorum

O constrained decoding alcança 100% de conformidade com JSON schema — nunca mais saídas malformadas. Antes dessa tecnologia, os modelos obtinham menos de 40% em schemas complexos e falhavam silenciosamente em casos extremos. O controle de saída é a variável de engenharia que distingue protótipos (80% de sucesso) de sistemas de produção (100% de confiabilidade).

Key Takeaways

  • Antes de existir a saída estruturada, os modelos obtinham menos de 40% em conformidade com JSON schema complexo; o `strict: true` da OpenAI alcança 100%
  • O constrained decoding reduz a precisão de raciocínio em 2,26 pontos percentuais em benchmarks BFCL — use a abordagem de duas etapas (raciocínio livre → modelo de estruturação especializado) para tarefas complexas
  • Não configure Temperature e Top-P em valores altos simultaneamente — se combinam para produzir saída mais errática do que qualquer parâmetro sozinho
  • `frequency_penalty`: intervalo -2,0 a 2,0 reduz a repetição proporcional à frequência; `presence_penalty`: intervalo -2,0 a 2,0 aplica uma penalidade fixa a qualquer token visto anteriormente
  • As stop sequences são o único mecanismo de terminação de saída determinístico — ao contrário das restrições negativas no corpo do prompt, o modelo não pode substituí-las
  • Intervalos de temperatura: T = 0,0–0,3 para tarefas factuais determinísticas; T = 0,7–1,0 para tarefas criativas; T > 1,2 arrisca incoerência em uso de produção
  • Claude Opus 4.8 alcança 93% de conformidade JSON com prompts de formato com tags XML; GPT-5.5 alcança 89% com regras de formato numeradas — ambos sem constrained decoding

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ívelTaxa de conformidadeImpacto no raciocínioMelhor para
Baseado em prompt ("retorne JSON")80–95%NenhumProtótipos; pipelines simples
Function calling / Tool use95–99%MínimoA 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%NenhumRaciocí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âmetroIntervaloFocado / FactualCriativo / Diverso
Temperature (T)0,0–2,00,0–0,30,7–1,0
Top-P0,0–1,00,3–0,50,9–1,0
Top-K1–tamanho do vocabulário10–2050–100
max_tokensdependente da tarefa256–5122.048–8.192
frequency_penalty-2,0 a 2,00,3–0,5 (reduzir repetição)0,0–0,2
presence_penalty-2,0 a 2,00,0–0,20,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ídaCaso de usoNotas
JSONAPIs, pipelines, repositórios de documentosSuporte de saída estruturada nativa em todos os principais provedores
JSONLFluxos de eventos, processamento em loteUm objeto JSON por linha; adequado para streaming e logging
CSVIntegração com sistemas legadosMais simples mas sem estrutura aninhada; bom para dados tabulares
YAMLArtefatos de configuraçãoLegível por humanos; usado em contextos de CI/CD e infraestrutura
XMLIntegração empresarialVerbose; preferido pelo Claude como formato de estrutura de prompt, não de saída
MarkdownRelatórios legíveis, documentaçãoRuim 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

Como controlar o formato de saída da IA

  1. 1
    Sempre 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.
  2. 2
    Use 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.
  3. 3
    Forneç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\" }."
  4. 4
    Use 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."
  5. 5
    Teste 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

Apply these techniques across 25+ AI models simultaneously with PromptQuorum.

Try PromptQuorum free →

← Back to Prompt Engineering

Controle a saída da IA e conformidade com schema 2026