Per ottenere JSON affidabili da un LLM locale servono una decodifica vincolata consapevole dello schema e una validazione semantica; il solo prompting non può garantire campi analizzabili o corretti.
Un agente domestico potrebbe dover effettuare una chiamata a uno strumento con un ID dispositivo esatto, un valore enumerato, un numero e un oggetto di argomenti annidato. Una virgoletta mancante interrompe l’analisi, mentre un JSON perfettamente valido può comunque selezionare il dispositivo sbagliato. L’affidabilità ha quindi due livelli: il decoder deve imporre la sintassi consentita e l’applicazione deve verificare che i valori completati soddisfino l’operazione reale.
Uno schema definisce più delle sole parentesi graffe
La modalità JSON può limitare l’output a JSON valido, ma uno schema JSON descrive anche chiavi obbligatorie, tipi, valori enumerati, annidamento, intervalli e la possibilità di consentire proprietà aggiuntive. Nomi e descrizioni chiari dei campi aiutano il modello a scegliere i contenuti prima dell’applicazione dei vincoli strutturali.
Un ampio benchmark sugli schemi JSON valuta i decoder vincolati su diecimila schemi reali e distingue conformità, copertura, efficienza e qualità dell’output. Questa separazione mostra perché una sola percentuale di “JSON valido” non possa descrivere l’affidabilità pratica. Questa distinzione resta evidente anche durante i successivi test domestici.
Il modello di chat e il formato delle chiamate agli strumenti devono corrispondere al runtime. Una parola chiave dello schema non supportata o una discrepanza nel tokenizer possono indebolire l’applicazione dei vincoli, mentre schemi profondamente ricorsivi o ambigui possono aumentare la latenza e gli errori di contenuto anche quando la sintassi rimane valida.
La decodifica vincolata dalla grammatica blocca i token successivi non validi
A ogni passaggio della generazione, un motore grammaticale tiene traccia dello stato valido dell’analizzatore e maschera i token che violerebbero lo schema. Il modello sceglie solo tra le continuazioni consentite, impedendo delimitatori mancanti, chiavi impossibili o testo libero al di fuori della struttura richiesta.
La decodifica vincolata dalla grammatica accelera l’esecuzione delle grammatiche context-free con token verificati in anticipo, stato persistente dell’analizzatore e integrazione con il motore di inferenza. Il lavoro dimostra che è possibile applicare forti vincoli strutturali con un sovraccarico ridotto nel serving locale. Il risultato intermedio deve restare analizzabile prima che l’automazione proceda.
I vincoli garantiscono l’appartenenza al linguaggio descritto dalla grammatica, non la veridicità del valore selezionato. Se “sblocca” e “blocca” sono entrambi valori enumerati validi, la grammatica non può determinare quale rifletta l’intento dell’utente.
La validazione e la correzione proteggono il significato dopo l’analisi
Dopo l’analisi, i validatori deterministici dovrebbero controllare identificatori, unità, intervalli, regole tra campi, autorizzazioni e riferimenti allo stato corrente. Un passaggio di correzione con limiti prestabiliti può ricevere gli errori di validazione e rigenerare solo l’oggetto non valido, invece di lasciare che dati malformati proseguano nel flusso.
L’approccio di correzione dell’output strutturato utilizza un modello leggero di post-elaborazione e valuta sia l’accuratezza rispetto allo schema sia la fedeltà dei contenuti. Illustra un’alternativa o un complemento quando il modello locale principale non dispone di un supporto nativo completo ai vincoli. Questo limite dovrebbe essere misurato separatamente in condizioni operative realistiche.
Il confine di errore più pericoloso sul piano semantico è un output sintatticamente valido. Le chiamate agli strumenti ad alto rischio richiedono la risoluzione del destinatario e l’approvazione al di fuori del modello, e le correzioni ripetute dovrebbero interrompersi dopo un budget ridotto invece di modificare silenziosamente l’intento fino al superamento della validazione.
Costruisci una matrice di test per l’affidabilità degli schemi
Crea schemi che includano campi obbligatori, valori enumerati, array annidati, valori nullable, limiti numerici, Unicode, testo con caratteri di escape e chiavi aggiuntive vietate. Esegui prompt rappresentativi e avversariali con la temperatura, la lunghezza del contesto, la quantizzazione del modello e la concorrenza previste. La conseguenza pratica emerge quando diverse fonti competono per un contesto limitato.
Metti in relazione i risultati con il passaggio alle chiamate strutturate agli strumenti descritto nelle chiamate strutturate agli strumenti. Conta separatamente i parsing riusciti, la conformità allo schema, la validità semantica, i tentativi di correzione, la latenza e le selezioni non sicure del destinatario; non unirli in un’unica percentuale di successo. Questa dipendenza dovrebbe restare esplicita nell’interfaccia finale.
Distribuisci solo le funzionalità dello schema effettivamente supportate dal runtime e rifiuta gli oggetti che non superano i controlli deterministici. Se la sintassi raggiunge il cento per cento mentre persistono errori semantici, migliora le definizioni dei campi e la validazione esterna invece di dichiarare affidabile la pipeline JSON.
Hub Tecnologico e AI
Altro da leggere

Quali fattori determinano l’accuratezza delle citazioni RAG in una knowledge base domestica?
Scopri perché una fonte pertinente può comunque essere una citazione errata, quali fasi della pipeline determinano supporto e copertura e come verificare le affermazioni...

Provenienza dei dati dell’IA locale: perché ogni risposta necessita di un percorso delle fonti tracciabile
Scopri come i percorsi delle fonti rendono verificabili le risposte dell’IA locale, perché le sole citazioni sono incomplete e come testare la provenienza attraverso...

Indicizzazione tramite hash dei contenuti: come le impronte digitali dei file evitano il lavoro ridondante dell’IA
Scopri come le impronte digitali di file e blocchi guidano l’indicizzazione incrementale, perché i metadati non sono sufficienti e in quali casi gli hash...

