Constrained Decoding
Scopri come la decodifica vincolata applica JSON, schemi, grammatiche e output di strumenti validi per rendere le risposte dell'IA più sicure, strutturate e facili da analizzare per il software.
La decodifica vincolata è una tecnica di inferenza che limita un modello generativo a output validi mentre il modello genera ciascun token. Invece di consentire al modello di scegliere dall'intero vocabolario, il decoder rimuove le scelte che violerebbero una regola, come un elenco di etichette consentite, un'espressione regolare, una grammatica o uno schema JSON. Questo rende le risposte del modello più facili e sicure da analizzare per il software, soprattutto quando un sistema di intelligenza artificiale deve restituire dati strutturati o selezionare un'azione consentita.
Come funziona la decodifica vincolata#
Un modello linguistico autoregressivo genera una sequenza un token alla volta. A ogni passaggio, assegna punteggi chiamati logit ai possibili token successivi e normalmente li converte in probabilità usando il softmax. La decodifica vincolata inserisce un passaggio di filtraggio aggiuntivo:
- Traccia la porzione di output già generata.
- Determina quali token successivi rimangono validi secondo il vincolo.
- Maschera i token non validi in modo che la loro probabilità diventi zero.
- Seleziona o campiona tra i token validi rimanenti.
- Aggiorna lo stato del vincolo e ripeti.
L'insieme valido cambia dinamicamente. Dopo aver generato {"status": ", ad esempio, uno schema potrebbe consentire solo token in grado di completare "approved", "rejected" o "review". I motori che offrono output strutturati vLLM possono imporre scelte, espressioni regolari, grammatiche e schemi JSON, mentre la generazione JSON di Outlines può derivare vincoli da schemi o modelli Python tipizzati.
La decodifica con vincoli a grafo descrive le implementazioni che rappresentano le sequenze valide come percorsi attraverso un grafo o una macchina a stati. Ogni token generato sposta il decoder verso un altro stato, i cui archi uscenti definiscono le successive scelte valide. Questo approccio è utile per grammatiche, relazioni tra entità e altre regole dipendenti dallo stato.
Concetti correlati e differenze chiave#
La decodifica vincolata è strettamente connessa a diversi concetti di intelligenza artificiale, ma non sono intercambiabili:
- Output strutturati: Il risultato desiderato, come un oggetto con campi obbligatori e tipi di dati. La decodifica vincolata è un meccanismo utilizzato per produrre tale risultato. Servizi tra cui Output strutturati OpenAI, output strutturati Claude e output strutturati Gemini espongono controlli basati su schemi.
- Modalità JSON: Di solito garantisce una sintassi JSON valida ma potrebbe non imporre chiavi particolari, tipi o valori consentiti. La decodifica vincolata da schema mira a una struttura specifica.
- Chiamata di funzioni e uso di strumenti (Function calling and tool use): Definisce come un modello richiede un'operazione esterna. La decodifica vincolata può imporre nomi di funzioni validi e forme degli argomenti, ma l'applicazione esegue e autorizza comunque lo strumento.
- Prompt engineering: Chiede al modello di seguire un formato tramite le istruzioni. Influenza il comportamento ma non elimina meccanicamente i token non validi.
- Decodifica speculativa (Speculative decoding): Accelera la generazione proponendo e verificando i token. Il suo obiettivo primario è la velocità, mentre la decodifica vincolata controlla la validità.
I sistemi tipizzati possono definire schemi tramite strumenti come Pydantic JSON Schema anziché scrivere manualmente ogni regola.
Applicazioni nel mondo reale#
Elaborazione di documenti: Un sistema di elaborazione delle fatture può estrarre vendor, invoice_number, total e currency da documenti scansionati. La decodifica vincolata assicura che la risposta abbia le chiavi e i tipi di dati attesi prima che entri nel software di contabilità. Previene payload malformati, sebbene non possa garantire che il totale estratto sia fattualmente corretto.
Automazione della sicurezza basata sulla visione: Un sistema può utilizzare Ultralytics YOLO26 per rilevare lavoratori e dispositivi di protezione, quindi inviare le osservazioni pertinenti a un modello linguistico. Il decoder può limitare la decisione del modello a no_action, manual_review o send_alert. In un flusso di lavoro di Ultralytics Platform Agents, modelli di visione, condizioni, modelli linguistici e azioni possono essere collegati in modo che solo le immagini idonee procedano ai passaggi successivi.
Esempio di flusso di lavoro pratico#
Le predizioni della visione artificiale sono già strutturate anziché generate token per token. Il seguente flusso di lavoro della modalità Predict di YOLO produce JSON che può diventare input per una successiva decisione di un modello linguistico vincolato:
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)Qui, to_json() esegue una serializzazione deterministica, non una decodifica vincolata. Il passaggio vincolato avverrebbe in seguito se un modello generativo convertisse questi rilevamenti in un rapporto o un'azione limitati da schema.
Vantaggi, limiti e migliori pratiche#
La decodifica vincolata riduce gli errori di analisi, i tentativi ripetuti, i campi inattesi e gli argomenti di strumenti non validi. Tuttavia, la validità strutturale non elimina le allucinazioni LLM: una risposta perfettamente formata può comunque contenere fatti non corretti o un'azione inappropriata.
Usa schemi ristretti, descrizioni di campi significative, enum per scelte chiuse e campi che ammettono valori nulli quando le informazioni potrebbero non essere disponibili. Valida le regole di business dopo la generazione, gestisci rifiuti e risposte troncate e testa il sottoinsieme di schemi supportato da ciascun provider. In produzione, misura anche l'overhead di compilazione dello schema, la latenza di decodifica e l'accuratezza semantica anziché valutare solo la conformità del formato.









