Home → Assistenza

La modalità JSON restituisce comunque testo che non si riesce ad analizzare

La modalità JSON semplice promette un JSON sintatticamente valido solo se il modello arriva fino in fondo. Non promette il tuo schema, e non può promettere nulla se la generazione si ferma prima su max_tokens.

Cosa vedi

Perché succede

Raggiungere il limite di output tronca l'oggetto a metà token. Il risultato non è analizzabile senza alcuna colpa del prompt: controlla finish_reason prima di controllare il parser.

La modalità JSON di base non ha uno schema. Il modello può restituire un JSON valido con chiavi diverse, o con una struttura annidata che non ti aspettavi, che verrà analizzato senza problemi rompendo però il tuo codice.

Alcuni modelli racchiudono l'output in blocchi di codice markdown quando il prompt contiene esempi formattati così. Il contenuto va bene; a fallire è l'involucro.

Come risolvere

  1. Controlla finish_reason prima di analizzareUn finish_reason uguale a length significa troncamento. Alza max_tokens o chiedi un oggetto più piccolo invece di fare debug del parser.
  2. Usa un output vincolato da schema dove il modello lo supportaÈ passare un JSON schema, non chiedere JSON a parole, che vincola davvero le chiavi. Convalida comunque il risultato.
  3. Rimuovi i delimitatori per precauzioneUna pre-elaborazione di tre righe che toglie i delimitatori di blocco di codice iniziali e finali non costa nulla ed elimina un'intera categoria di errori.
Un output troncato è comunque output generato, quindi su APICLAN viene comunque addebitato. Leggere finish_reason e dimensionare bene max_tokens ti fa risparmiare il retry, che è il vero costo.

Articoli correlati

Unexpected token '<' quando chiami un'API compatibile con OpenAI401 invalid API key: quando la chiave sembra giusta ma continua a fallire

Ultima verifica: 2026-10-01. Scritto a partire da problemi diagnosticati su un gateway compatibile con OpenAI in produzione, non raccolto da altri siti.