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
JSONDecodeError on output that looks almost rightThe object is cut off mid-stringMarkdown fences around the JSONValid JSON that is missing fields your code requires
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
- 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.
- 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.
- 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
Ultima verifica: 2026-10-01. Scritto a partire da problemi diagnosticati su un gateway
compatibile con OpenAI in produzione, non raccolto da altri siti.