A descodificação com saída estruturada e restrições impõe um esquema ou uma gramática durante a geração, permitindo apenas os tokens seguintes que ainda possam conduzir a uma estrutura válida.
Esse mecanismo é importante quando um modelo local fornece JSON, argumentos de ferramentas, estruturas semelhantes a SQL ou registos legíveis por máquina a outro programa. A criação de prompts pode solicitar um formato e a validação após a geração pode rejeitar resultados inválidos, mas a descodificação com restrições altera o próprio processo de amostragem. Impede muitas falhas estruturais antes de estas existirem, mantendo a correção factual, a autorização de ferramentas e a semântica do esquema como responsabilidades distintas.
A descodificação com restrições limita o token seguinte antes da amostragem
A descodificação normal atribui pontuações ao vocabulário do modelo e faz a amostragem a partir da distribuição permitida. Um descodificador com restrições introduz uma etapa adicional que verifica o estado atual da saída estruturada e remove os tokens que tornariam impossível concluir a gramática pretendida.
Uma máscara de tokens do tamanho do vocabulário pode assinalar quais os tokens que continuam legais em cada etapa da geração.
O modelo continua a fornecer probabilidades entre as opções restantes. O motor de restrições não escreve a resposta; estreita o caminho para que uma aspa, um parêntese, uma posição de campo ou uma transição gramatical ilegais não possam ser selecionados nesse momento.
Um esquema ou uma gramática tem de se tornar numa restrição do descodificador
Um esquema JSON, uma expressão regular ou uma gramática EBNF descreve a estrutura permitida a um nível superior ao dos IDs dos tokens. O runtime tem de compilar ou traduzir essa descrição para uma representação que possa atualizar enquanto os tokens são emitidos.
Um esquema pode definir regras para descrever e validar a estrutura, mas essas regras não executam automaticamente a descodificação ao nível dos tokens sem um backend que as converta em geração.
Esta distinção explica por que motivo dois runtimes podem anunciar suporte para saída JSON e, ainda assim, suportar funcionalidades de esquema diferentes. O modelo não é a única camada de compatibilidade; o descodificador com restrições também tem de compreender o conjunto de regras.
Por isso, palavras-chave não suportadas ou estruturas recursivas complexas podem falhar antes da geração ou recorrer a uma validação mais limitada, mesmo quando o próprio modelo de linguagem conseguiria produzir o texto solicitado.
O estado da gramática altera o vocabulário legal após cada token
O conjunto de tokens legais depende do que já foi gerado. Depois de uma chaveta de abertura, um nome de chave pode ser válido; depois dos dois-pontos de um campo numérico, uma aspa pode ser inválida; depois de um objeto completo, apenas delimitadores ou o fim da saída podem continuar a ser legais.
Rejeitar tokens inadmissíveis durante a descodificação impede que uma sequência parcial inválida sobreviva até à verificação da saída completa.
O estado das restrições avança, portanto, juntamente com a geração. Um analisador, uma máquina de estados finitos, uma estrutura de pilha ou uma representação equivalente determina que continuações mantêm válido o objeto parcialmente gerado.
A validade estrutural não torna os valores verdadeiros
A descodificação com restrições pode garantir que um campo de temperatura contém um número e que as chaves obrigatórias aparecem no objeto correto. Não pode provar que o número veio do sensor certo ou que o dispositivo solicitado existe efetivamente.
JSON Schema, expressões regulares e EBNF podem funcionar como restrições estruturais durante a geração, que devem ser interpretadas como controlo da sintaxe e não como verificação factual.
Nas ferramentas para servidores domésticos, o executor tem ainda de validar a identidade dos recursos, as permissões, as pré-condições e o estado real. Um comando JSON perfeitamente válido pode, ainda assim, visar o contentor errado ou solicitar um efeito secundário inseguro.
A análise relacionada sobre falhas de JSON Schema explica por que motivo a saída estruturada falha, enquanto a descodificação com restrições explica um mecanismo para impedir estruturas inválidas durante a geração.
As restrições complexas aumentam o trabalho do descodificador
Cada etapa da geração inclui agora o processamento do estado das restrições e o mascaramento de tokens, além da inferência do modelo. As implementações eficientes colocam o estado da gramática em cache e comprimem os conjuntos de tokens legais, mas o custo adicional não é nulo.
Os mecanismos de estados finitos ou de gramáticas podem restringir a saída de forma eficiente, mas o custo da geração estruturada continua a depender de detalhes de implementação que afetam a latência e a memória.
Esse custo costuma justificar-se quando as falhas de análise a jusante são dispendiosas. É menos relevante para prosa livre, na qual uma estrutura rígida não controla uma ação de máquina nem um pipeline de dados.
A descodificação com restrições é importante quando a saída se torna entrada de uma máquina
O caso de utilização mais forte é uma fronteira em que o texto gerado deixa de ser meramente descritivo e é consumido por software determinístico. Chamadas de ferramentas, registos de configuração, payloads de API, alterações em bases de dados e estados de fluxos de trabalho beneficiam de uma linguagem aceite restrita.
Um agente local deve, ainda assim, combinar a geração estruturada com a validação do esquema após a descodificação. As duas camadas detetam problemas diferentes: o descodificador impede continuações ilegais, enquanto a validação confirma que o objeto concluído cumpre o contrato completo antes da execução.
Considere a descodificação com restrições uma camada de fiabilidade, não um sistema de segurança completo. Controla a forma; a autorização controla a autoridade; a aprovação controla se uma ação válida específica deve ser executada.
Centro de Tecnologia e IA
Mais para Ler

O que é o estado do Plex e que partes têm de persistir?
O estado persistente do Plex é a informação que preserva a experiência do servidor após reinícios e reconstruções; os dados multimédia e temporários de...

Como é que o Plex gere a autenticação entre sessões locais e remotas?
A autenticação do Plex começa pela identidade do servidor e da conta; depois, os caminhos de rede locais ou remotos determinam a acessibilidade e...

Porque é que a pesquisa no Plex pode ficar mais lenta à medida que os dados da biblioteca aumentam?
O crescimento da biblioteca, por si só, não é o diagnóstico. Teste a estrutura das consultas, os índices, o estado da cache, a latência...

