Constrained Decoding
Aprende como a descodificação restrita aplica JSON válido, esquemas, gramáticas e saídas de ferramentas para tornar as respostas de IA mais seguras, estruturadas e fáceis de analisar por software.
A decodificação restrita é uma técnica de inferência que restringe um modelo gerador a saídas válidas enquanto ele gera cada token. Em vez de permitir que o modelo escolha entre todo o seu vocabulário, o decodificador remove as escolhas que violariam uma regra, como uma lista de rótulos permitidos, uma expressão regular, uma gramática ou um JSON Schema. Isso torna as respostas do modelo mais fáceis e seguras para o software analisar, especialmente quando um sistema de IA deve retornar dados estruturados ou selecionar uma ação permitida.
Como Funciona a Decodificação Restrita#
Um modelo de linguagem autorregressivo gera uma sequência um token por vez. Em cada etapa, ele atribui pontuações chamadas logits aos possíveis tokens seguintes e normalmente os converte em probabilidades usando softmax. A decodificação restrita insere uma etapa de filtragem adicional:
- Rastrear a parte da saída já gerada.
- Determinar quais tokens seguintes permanecem válidos sob a restrição.
- Mascarar tokens inválidos para que sua probabilidade se torne zero.
- Selecionar ou fazer amostragem a partir dos tokens válidos restantes.
- Atualizar o estado da restrição e repetir.
O conjunto válido muda dinamicamente. Após gerar {"status": ", por exemplo, um esquema pode permitir apenas tokens que possam completar "approved", "rejected" ou "review". Motores que oferecem vLLM structured outputs podem impor escolhas, expressões regulares, gramáticas e esquemas JSON, enquanto Outlines JSON generation pode derivar restrições de esquemas ou modelos Python tipados.
A decodificação por restrição de grafos descreve implementações que representam sequências válidas como caminhos através de um grafo ou máquina de estados. Cada token gerado move o decodificador para outro estado, cujas arestas de saída definem as próximas escolhas válidas. Esta abordagem é útil para gramáticas, relacionamentos de entidades e outras regras dependentes de estado.
Conceitos relacionados e principais diferenças#
A decodificação restrita está intimamente ligada a vários conceitos de IA, mas eles não são intercambiáveis:
- Structured outputs: O resultado desejado, como um objeto com campos obrigatórios e tipos de dados. A decodificação restrita é um mecanismo usado para produzir esse resultado. Serviços incluindo OpenAI Structured Outputs, Claude structured outputs e Gemini structured outputs expõem controles baseados em esquemas.
- Modo JSON: Geralmente garante sintaxe JSON válida, mas pode não impor chaves específicas, tipos ou valores permitidos. A decodificação restrita por esquema visa uma estrutura específica.
- Function calling and tool use: Define como um modelo solicita uma operação externa. A decodificação restrita pode impor nomes de funções válidos e formatos de argumentos, mas a aplicação ainda executa e autoriza a ferramenta.
- Prompt engineering: Pede ao modelo que siga um formato por meio de instruções. Ele influencia o comportamento, mas não elimina mecanicamente os tokens inválidos.
- Speculative decoding: Acelera a geração propondo e verificando tokens. Seu objetivo principal é a velocidade, enquanto a decodificação restrita controla a validade.
Sistemas tipados podem definir esquemas por meio de ferramentas como Pydantic JSON Schema em vez de escrever manualmente cada regra.
Aplicações no mundo real#
Processamento de documentos: Um sistema de processamento de faturas pode extrair vendor, invoice_number, total e currency de documentos digitalizados. A decodificação restrita garante que a resposta tenha as chaves e os tipos de dados esperados antes de entrar no software de contabilidade. Ela evita cargas úteis malformadas, embora não possa garantir que o total extraído esteja factualmente correto.
Automação de segurança impulsionada por visão: Um sistema pode usar Ultralytics YOLO26 para detectar trabalhadores e equipamentos de proteção, e então enviar observações relevantes para um modelo de linguagem. O decodificador pode restringir a decisão do modelo para no_action, manual_review ou send_alert. Em um fluxo de trabalho do Ultralytics Platform Agents workflow, modelos de visão, condições, modelos de linguagem e ações podem ser conectados para que apenas imagens qualificadas prossigam para as etapas posteriores.
Exemplo Prático de Fluxo de Trabalho#
As previsões de visão computacional já são estruturadas em vez de geradas token por token. O seguinte fluxo de trabalho do YOLO Predict mode produz JSON que pode se tornar entrada para uma decisão subsequente de modelo de linguagem restrito:
from ultralytics import YOLO
# Load the recommended object detection model
model = YOLO("yolo26n.pt")
# Run inference and select the first result
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Serialize detections for a downstream constrained decoder
json_output = result.to_json()
print(json_output)Aqui, to_json() realiza serialização determinística, não decodificação restrita. A etapa restrita ocorreria mais tarde se um modelo gerador convertesse essas detecções em um relatório ou ação limitada por esquema.
Benefícios, Limites e Melhores Práticas#
A decodificação restrita reduz falhas de análise, novas tentativas, campos inesperados e argumentos de ferramentas inválidos. No entanto, a validade estrutural não elimina LLM hallucinations: uma resposta perfeitamente formada ainda pode conter fatos incorretos ou uma ação inadequada.
Usa esquemas restritos, descrições de campos significativas, enums para escolhas fechadas e campos anuláveis quando as informações puderem estar indisponíveis. Valida regras de negócios após a geração, lida com recusas e respostas truncadas, e testa o subconjunto de esquemas suportado por cada provedor. Em produção, mede também a sobrecarga de compilação de esquemas, a latência de decodificação e a acurácia semântica, em vez de avaliar apenas a conformidade do formato.









