Fondamenti
Cosa sono gli output strutturati dell’IA?
Chiedere a un modello di rispondere in JSON è una richiesta, non una garanzia: la risposta può comunque tornare malformata. Cosa vincola davvero l’output di un modello, perché alcuni meccanismi lo impongono e altri si limitano a chiederlo, e perché la convalida resta importante in entrambi i casi.
Tutte le guide · Ultima verifica:
Struttura significa che il codice a valle può fidarsi della forma
Un output strutturato vincola una risposta a una forma definita — un insieme fisso di campi, tipi specifici, un’enumerazione di valori consentiti — invece di un paragrafo di prosa. Non è una questione di stile; un programma che legge la risposta può estrarre un valore da un percorso noto invece di analizzare frasi e indovinarne il significato.
Ci sono due modi diversi per richiederla
Il primo è basato sul prompt: le istruzioni dicono al modello di rispondere solo in JSON secondo una forma descritta. Funziona con praticamente qualsiasi modello e non richiede supporto API speciale, ma è una richiesta che il modello può comunque ignorare, eseguire parzialmente in modo sbagliato, o avvolgere in testo esplicativo non richiesto. Il secondo è imposto dal fornitore: alcuni fornitori offrono una modalità, spesso chiamata output strutturati o modalità JSON, in cui la generazione stessa è vincolata in modo che a ogni passo possano essere prodotti solo token conformi allo schema. È un meccanismo più forte di un’istruzione, non solo uno che suona più rigido — ed è una funzionalità distinta dalla chiamata di strumenti (vedi come funziona la chiamata di strumenti), che modella gli argomenti di una funzione con nome invece della risposta del modello stesso.
Un’istruzione nel prompt è una richiesta, non una garanzia
Quando la struttura arriva solo dalla formulazione del prompt, il modello può comunque produrre un output che non corrisponde — un campo in più, uno mancante, prosa prima del JSON, un valore del tipo sbagliato. Qualsiasi sistema che si affida solo alla struttura via prompt ha bisogno di un piano reale per quando l’analisi fallisce, non del presupposto che non accadrà mai.
La struttura imposta dal fornitore è un tipo diverso di garanzia
Quando un fornitore vincola la generazione direttamente rispetto a uno schema, l’output è molto più affidabilmente ben formato, perché i token malformati sono esclusi dalla generazione fin dall’inizio invece di essere semplicemente scoraggiati. Quali fornitori e modelli esattamente lo supportino, e con quanto rigore, varia e cambia nel tempo — tratta la struttura via prompt e quella imposta dal fornitore come livelli di affidabilità diversi, non come modi intercambiabili per ottenere lo stesso risultato.
Una forma valida non è la stessa cosa di una risposta corretta
Anche con l’applicazione più rigida, lo schema vincola solo la forma, non il significato. Un campo di riepilogo può essere JSON sintatticamente valido e contenere comunque tre frasi divaganti invece di una, o un numero sbagliato affermato con sicurezza in un campo etichettato come conteggio. Uno schema vago o troppo permissivo tende a produrre output tecnicamente valido ma comunque inaffidabile da usare.
Analizzare con successo non è la stessa cosa di potersi fidare
Che la struttura provenga da un prompt o dall’imposizione del fornitore, analizzare con successo una risposta conferma solo che la forma è stata rispettata — non dice nulla sul fatto che i valori dei campi siano accurati, nell’intervallo giusto o sensati. Trattare un oggetto analizzato come dato verificato, invece che come affermazione da controllare, è dove i sistemi di output strutturato falliscono più spesso in produzione.
Domande frequenti
- Un output strutturato è la stessa cosa di una chiamata di strumento?
- No. La chiamata di strumenti propone una funzione con nome e i suoi argomenti che la tua applicazione può eventualmente eseguire; un output strutturato modella la risposta del modello stesso secondo un formato definito. I due meccanismi possono essere usati separatamente o insieme.
- Chiedere JSON al modello nel prompt garantisce di ricevere JSON valido?
- No. È una richiesta che il modello può comunque sbagliare — testo in più, un campo mancante, un tipo scorretto. I sistemi che si affidano solo alla formulazione del prompt hanno bisogno di un fallback definito per quando l’analisi fallisce, non del presupposto che riesca sempre.
- Se un fornitore impone uno schema, il risultato è garantito corretto?
- È garantito ben formato secondo lo schema — i campi giusti, i tipi giusti. Non è garantito che i valori all’interno di quei campi siano accurati o sensati; l’imposizione vincola la forma, non la verità.
- Devo comunque validare una risposta strutturata prima di usarla?
- Sì. Analizzare con successo una risposta conferma che la forma corrispondeva, non che il contenuto sia corretto. I controlli di intervallo, di tipo e di ragionevolezza dei valori restano necessari, indipendentemente da come è stata prodotta la struttura.
Provalo invece di leggerne
La funzione judge di ClawAI chiede a un modello una forma JSON specifica tramite istruzioni nel prompt e ricade su uno stato definito di "analisi fallita" invece di indovinare quando una risposta non corrisponde — un esempio diretto e funzionante che uno schema richiesto in un prompt è una richiesta, non una garanzia.