Perché i modelli locali di piccole dimensioni hanno più allucinazioni durante la generazione di JSON?

Eva Wong è la Technical Writer e smanettatrice residente di ZimaSpace. Una geek da sempre con una passione per homelab e software open-source, si specializza nel tradurre concetti tecnici complessi in guide accessibili e pratiche. Eva crede che l'auto-ospitare debba essere divertente, non intimidatorio. Attraverso i suoi tutorial, dà potere alla comunità di demistificare le configurazioni hardware, dalla costruzione del loro primo NAS al dominio dei container Docker.

I piccoli modelli locali allucinano più spesso durante l’output JSON perché devono risolvere il compito preservando al contempo uno schema rigido e una sintassi valida.

Un flusso di lavoro con l’IA locale può chiedere a un modello compatto di estrarre nomi di file, date, tag, stati dei dispositivi o argomenti per l’automazione e restituirli come JSON leggibile dalle macchine. Il modello non sta svolgendo un solo compito. Deve identificare i fatti corretti, associarli ai campi previsti, rispettare i tipi e gli enum richiesti, ricordare punteggiatura e annidamento e fermarsi senza aggiungere commenti. Quando la capacità del modello è limitata, questi vincoli competono con il ragionamento necessario per mantenere i valori ancorati alle fonti.

Il JSON rende la correttezza un problema a due livelli

La risposta deve essere semanticamente corretta e strutturalmente valida allo stesso tempo. Una risposta in forma libera può esprimere incertezza o spiegare l’assenza di un valore, mentre un contratto JSON spesso obbliga il modello a scegliere un valore per un campo anche quando le prove sono deboli.

La ricerca sul compromesso tra validità e correttezza mostra perché queste misurazioni debbano rimanere separate: vincoli più forti sull’output possono migliorare la validità dello schema, mentre i valori selezionati diventano meno accurati.

La pressione è più evidente in un piccolo modello locale perché ha meno capacità residua per seguire le istruzioni, estrarre informazioni e serializzare i dati. Anche un modello più grande può inventare un campo, ma un modello compatto raggiunge prima il punto in cui il rispetto del formato compromette la qualità della risposta.

Un oggetto valido può comunque contenere una risposta allucinata

La decodifica vincolata può impedire l’emissione di una parentesi graffa illegale, di una chiave sconosciuta o di un enum non valido. Non può dimostrare che l’ID cliente, la data, il percorso o lo stato scelto siano presenti nel materiale di origine.

vLLM descrive i vincoli dello schema JSON come un metodo per limitare la forma dell’output generato. Il decodificatore restringe i token successivi consentiti, ma il significato veicolato da quei token validi viene comunque fornito dal modello.

Questo crea una modalità di errore pericolosa nell’automazione: l’oggetto viene analizzato correttamente, quindi il codice a valle si fida di esso, ma un campo è inventato. Dopo la validazione dello schema, verifica le regole di business e le prove presenti nella fonte, invece di considerare il corretto parsing come prova della correttezza fattuale.

Gli schemi annidati aumentano i rami e il tracciamento dello stato

Ogni proprietà obbligatoria, ramo facoltativo, array annidato, campo nullable ed enum aggiunge uno stato che il modello deve mantenere durante la generazione. Nomi di chiavi simili o strutture di oggetti ripetute rendono più facile inserire un valore corretto nella posizione sbagliata.

La guida di llama.cpp al JSON vincolato da grammatica distingue la grammatica di output consentita dal prompt che spiega il significato dei campi. Una grammatica può imporre la struttura, ma lo schema deve comunque includere istruzioni semantiche chiare.

Riduci il numero di decisioni simultanee. Appiattisci gli oggetti profondamente annidati, rimuovi i campi facoltativi inutilizzati, usa nomi di chiave distinti e suddividi una grande estrazione in oggetti più piccoli quando il modello locale scambia o compila ripetutamente campi non correlati.

I prompt “solo JSON” possono sopprimere il ragionamento utile

Un’istruzione rigida come “restituisci solo JSON” spinge il modello a confezionare immediatamente una risposta. In un’estrazione complessa, ciò può causare la scelta prematura di un campo prima che il modello abbia confrontato passaggi concorrenti o risolto una data ambigua.

Le valutazioni di Hugging Face mostrano la sensibilità al formato del prompt: modificare la struttura prevista e lo spazio disponibile per il ragionamento può cambiare le prestazioni sul compito, anche quando la domanda di fondo è la stessa.

Non esporre il ragionamento privato passo per passo, ma separa la risoluzione interna del compito dalla serializzazione finale. Il flusso di lavoro può prima estrarre un record compatto delle prove o eseguire una ricerca deterministica, quindi chiedere al modello di visualizzare soltanto i campi verificati.

Il JSON richiesto nel prompt e la decodifica vincolata falliscono in modi diversi

Il JSON ottenuto soltanto dal prompt può contenere blocchi di codice, commenti, chiavi duplicate, virgole finali o un oggetto incompleto. La decodifica vincolata elimina molti errori sintattici, ma può costringere il modello a scegliere tra valori validi quando “sconosciuto” non è un’opzione consentita.

Fireworks spiega come le scelte dei token vincolate dallo schema mantengano la generazione all’interno di un contratto di output, richiedendo comunque che il prompt descriva accuratamente i dati previsti.

Monitora entrambe le famiglie di errori. Misura gli errori di parsing per l’output ottenuto solo dal prompt, quindi misura i campi errati ma validi, i valori predefiniti indesiderati e la falsa certezza dopo aver abilitato la decodifica vincolata.

Campionamento e troncamento amplificano i piccoli errori

Una temperatura più elevata può variare la scelta delle chiavi e i valori dei campi, mentre un budget di token insufficiente può troncare gli array o le parentesi graffe di chiusura. Una temperatura più bassa riduce la variabilità, ma non rende vero un valore privo di supporto.

Una guida pratica a una pipeline di output strutturato locale dimostra perché la validazione e la generazione vincolata siano componenti separate, non un’unica tecnica di prompting.

Riserva abbastanza token di output per l’oggetto legale più grande, limita la lunghezza degli array e riprova soltanto la parte non riuscita. Rigenerare l’intero oggetto può sostituire campi già corretti con nuove allucinazioni.

Usa una pipeline JSON locale in due fasi

Per prima cosa, risolvi il compito in un record tipizzato minimale: l’intervallo esatto della fonte, la data normalizzata, l’identificatore selezionato, lo stato di confidenza ed eventuali valori esplicitamente mancanti. Questa fase dovrebbe poter rifiutare la richiesta invece di inventare i dati obbligatori.

Successivamente, visualizza quel record tramite un decodificatore vincolato dallo schema, analizzalo ed esegui controlli semantici come l’esistenza del file, l’intervallo della data, la compatibilità dell’enum e la coerenza tra campi. Un validatore dovrebbe restituire errori mirati che identifichino il campo da correggere.

La spiegazione di ZimaSpace sul perché un modello più piccolo possa essere più affidabile definisce il limite: i modelli compatti funzionano meglio quando compito, contesto, strumenti e contratto di output sono abbastanza circoscritti da poter essere verificati.

FAQ

Il JSON valido significa che il modello non ha avuto allucinazioni?

No. Il JSON valido dimostra che l’oggetto segue le regole sintattiche o dello schema. Non dimostra che i valori dei campi provengano dalla fonte o corrispondano allo stato reale del sistema.

Impostare la temperatura a zero risolverà le allucinazioni nel JSON?

No. Può rendere l’output più ripetibile, ma un valore privo di supporto selezionato sistematicamente resta un’allucinazione.

La decodifica vincolata è sufficiente per l’automazione?

No. Usala insieme all’estrazione ancorata alla fonte, al parsing dello schema, alla validazione semantica e a un percorso sicuro di rifiuto per i dati mancanti o ambigui.

Hub Tecnologico e AI

Altro da leggere

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.