Spiegazione delle allucinazioni dell’intelligenza artificiale: perché i modelli linguistici inventano le cose e come ridurle

  1. Home
  2. Blog
  3. Intelligenza artificiale

Intelligenza artificiale

Spiegazione delle allucinazioni dell’intelligenza artificiale: Perché i modelli linguistici inventano le cose e come ridurle

Un modello linguistico può fornire una risposta sicura e ben scritta che è semplicemente falsa. Scopri perché ciò accade, le forme che assume e i modi pratici per ridurlo e rilevarlo nelle tue funzionalità di intelligenza artificiale.

8 min di lettura
Spiegazione delle allucinazioni dell'intelligenza artificiale: perché i modelli linguistici inventano le cose e come ridurle

Punti chiave

  • Viene emessa un’allucinazione AI che sembra plausibile ma è falsa o non supportata.
  • I modelli prevedono il testo probabile. Non hanno un modo integrato per sapere cosa è vero.
  • Le risposte radicate in fonti attendibili, istruzioni chiare e controlli automatizzati riducono le allucinazioni.
  • Nessuna tecnica attuale li rimuove completamente, quindi i risultati importanti necessitano ancora di verifica.

Un chatbot di supporto comunica a un cliente che i rimborsi richiedono 14 giorni. La vera politica dice 7. La risposta è stata fluente, educata e sbagliata. Questa è un’allucinazione dell’IA ed è uno dei motivi principali per cui le funzionalità dell’IA necessitano di un’attenta progettazione e test.

Questa guida spiega le cause in termini semplici e si concentra sulla prevenzione pratica. Il controllo automatizzato verso la fine è un piccolo script Python che abbiamo eseguito rispetto alle risposte di esempio che abbiamo scritto noi stessi. Non è stato eseguito contro un modello di intelligenza artificiale dal vivo.

Cos’è un’allucinazione dell’intelligenza artificiale?

Un’allucinazione si verifica quando un sistema di intelligenza artificiale generativa produce contenuti che sono di fatto errati, inventati o non supportati dalle informazioni fornite, pur presentandoli come veri. Il termine è una metafora. Il modello non vede le cose. Significa generare un testo che si adatti allo schema di una buona risposta senza essere legato ai fatti.

La parte pericolosa è la fiducia. Una risposta allucinata di solito assomiglia esattamente a una risposta corretta, con lo stesso tono, struttura e dettaglio.

Perché i modelli linguistici hanno allucinazioni

Un modello linguistico di grandi dimensioni viene addestrato per prevedere la parte di testo successiva, un token, sulla base di modelli presenti in un’enorme quantità di dati di addestramento. Da ciò conseguono diverse cose:

  • Plausibile non è la stessa cosa che vero. Il modello apprende come tendono ad apparire le risposte. Quando mancano i fatti, si può ancora inventare la continuazione che sembra più probabile.
  • Lacune e interruzioni. I dati di formazione presentano lacune e terminano a una determinata data. Il modello può integrare i fatti mancanti anziché dire che non lo sa.
  • La formazione premia la risposta. La ricerca, incluso un documento OpenAI del 2025 sul perché i modelli hanno allucinazioni, sostiene che i metodi comuni di formazione e valutazione premiano le ipotesi rispetto all’ammissione dell’incertezza, proprio come un test a scelta multipla senza penalità per le risposte sbagliate.
  • Suggerimenti ambigui. Domande vaghe invitano il modello ad assumere dettagli.
  • Contesto lungo o confuso. Fatti importanti possono essere trascurati se sepolti in input lunghi.

Tipi comuni di allucinazioni

Digitare Esempio
Fatti inventati Una data, un numero o una statistica sbagliata
Fonti false Citazioni, articoli o URL che non esistono
Riassunti infedeli Un riepilogo che aggiunge affermazioni non presenti nel documento
Codice inventato Chiamate a funzioni o pacchetti che non esistono
Ragionamento sbagliato Ogni passaggio sembra a posto, ma la conclusione non segue
Falsa fiducia Rispondere a una domanda che non ha una risposta affidabile

I ricercatori spesso li dividono in errori di fattualità, che contraddicono il mondo reale, ed errori di fedeltà, che contraddicono il materiale originale fornito al modello. Per le app aziendali basate sui tuoi documenti, la fedeltà è solitamente ciò che puoi testare più direttamente.

Il codice inventato merita un avvertimento speciale. Se un assistente suggerisce di installare un pacchetto che non esiste, un utente malintenzionato può pubblicare un pacchetto dannoso con quel nome. Verifica che ogni dipendenza suggerita sia reale e affidabile prima di installarla.

Dove conta di più

Un fatto cinematografico allucinato è innocuo. Una dose di farmaco per allucinazioni, una citazione legale, una politica di rimborso o una cifra finanziaria non lo sono. Ci sono stati casi ben segnalati di avvocati che hanno presentato atti giudiziari con citazioni di casi inventate dagli strumenti di intelligenza artificiale. Classifica i tuoi casi d’uso in base al costo di una risposta sbagliata e applica i controlli più rigorosi laddove tale costo è elevato.

Come ridurre le allucinazioni

  1. Fonda la risposta su dati attendibili. Fornisci al modello i fatti rilevanti invece di fare affidamento sulla sua memoria.
  2. Consenti “Non lo so”. Di’ esplicitamente al modello di dire quando l’informazione non è disponibile e trattalo come un buon risultato.
  3. Sii specifico. Domande chiare e ristrette lasciano meno spazio all’invenzione. La nostra guida di progettazione rapida tratta questo argomento in dettaglio.
  4. Richiedi citazioni o citazioni dalle fonti fornite, quindi verificale automaticamente.
  5. Utilizza output strutturato, come JSON con campi fissi, in modo che le risposte siano più facili da convalidare.
  6. Utilizza strumenti per gli aspetti in cui i modelli sono deboli, come calcoli, date e ricerche di dati in tempo reale.
  7. Mantieni un essere umano aggiornato sulle decisioni ad alto rischio.

Radicarsi con i propri dati

La generazione aumentata con recupero (RAG) è il modello di messa a terra più comune. Il sistema cerca nei tuoi documenti i passaggi rilevanti per la domanda e li include nel prompt, con le istruzioni per rispondere solo da quei passaggi. Riduce drasticamente i fatti inventati, ma non è una cura. Il modello può ancora leggere erroneamente un passaggio, combinare passaggi in modo errato o ricorrere alla propria conoscenza e la fase di ricerca può restituire documenti errati. Quindi i sistemi collegati a terra necessitano ancora di controlli.

Suggerimento: registra i passaggi recuperati insieme a ciascuna risposta. Quando viene segnalata una risposta sbagliata, puoi capire rapidamente se il recupero non è riuscito o se il modello ha ignorato il contesto valido. La correzione è diversa per ciascuno.

Un semplice controllo automatizzato

Ecco una protezione economica che abbiamo creato: contrassegna qualsiasi numero in una risposta che non appare nel testo di origine. È rozzo, ma numeri come prezzi, giorni e limiti sono esattamente il luogo in cui si manifestano costose allucinazioni.

import re

SOURCE = """Refunds are paid within 7 days to the original payment method.
Orders over 1000 rupees ship free. Standard delivery takes 3 to 5 working days."""

def unsupported_numbers(answer, source):
    found = set(re.findall(r"\d+", answer))
    allowed = set(re.findall(r"\d+", source))
    return sorted(found - allowed, key=int)

Abbiamo testato tre risposte scritte per imitare l’output tipico del modello:

grounded     -> no unsupported numbers
hallucinated -> ['14', '500']
partly       -> ['1']

La risposta “allucinata” richiedeva rimborsi entro 14 giorni e spedizione gratuita per oltre 500 rupie, ed entrambi i numeri furono catturati. La risposta “in parte” riportava tempi di consegna corretti ma aggiungeva “o 1 giorno con espresso”, cosa che la polizza non menziona mai, e anche questo è stato colto. Un secondo controllo verifica che le frasi citate appaiano realmente nella fonte:

{'paid within 7 days': True, 'no questions asked': False}

Questi controlli hanno limiti evidenti. Perdono parole sbagliate, unità e affermazioni non supportate senza numeri e contrassegnerebbero erroneamente un calcolo corretto. Molti team aggiungono una fase “LLM come giudice”, in cui un secondo modello controlla ogni affermazione rispetto alle fonti. Questo rileva di più, ma può anche essere sbagliato, quindi misuralo.

Test per le allucinazioni

Tratta il tasso di allucinazioni come una metrica di qualità che misuri, non come una sensazione. Un approccio pratico:

  • Costruisci una serie di test di domande reali con risposte e fonti corrette note.
  • Includi domande che il sistema dovrebbe rifiutare, perché la risposta non è nei dati.
  • Assegna un punteggio alle risposte per correttezza, fedeltà alle fonti e rifiuti appropriati.
  • Esegui il set a ogni modifica ai prompt, ai modelli o alle impostazioni di recupero.
  • Esempi di conversazioni di produzione per la revisione umana.

Anche qui si applica la disciplina del test di regressione: un insieme fisso di casi, eseguito su ogni modifica, con risultati confrontati nel tempo. Quando si sceglie come mettere a terra un sistema, il nostro confronto tra RAG, messa a punto e ingegneria tempestiva spiega i compromessi.

Consigli per gli utenti quotidiani

  • Verifica fatti, cifre, citazioni e citazioni dalla fonte originale.
  • Prestare particolare attenzione alle informazioni mediche, legali e finanziarie.
  • Incolla il testo di origine e chiedi all’assistente di rispondere solo da esso.
  • Chiedi “quanto sei sicuro di te e su cosa si basa?”, Ma ricorda che la risposta può anche essere sbagliata.

Le allucinazioni possono essere eliminate?

Non con la tecnologia attuale. Modelli più recenti e una migliore formazione hanno ridotto i tassi di allucinazioni su molti parametri di riferimento e il radicamento aiuta molto, ma ogni sistema commette ancora errori. L’obiettivo realistico è rendere gli errori rari, facili da rilevare e a basso impatto attraverso la progettazione del sistema, test e segnali chiari agli utenti.

Allucinazioni negli strumenti di codifica dell’intelligenza artificiale

Gli sviluppatori incontrano quotidianamente allucinazioni negli assistenti di codifica: un metodo che non esiste in una classe, un’opzione di configurazione obsoleta o una spiegazione sicura di un errore che è realmente causato da qualcos’altro. Le difese sono quelle che già usi per il codice umano. Compila o digita il risultato, esegui i test e leggi la documentazione ufficiale per qualsiasi API che non hai utilizzato prima. Prestare particolare attenzione al codice sensibile alla sicurezza, come l’autenticazione, la crittografia e la convalida dell’input, in cui il codice apparentemente plausibile può essere leggermente pericoloso. Tratta i suggerimenti dell’intelligenza artificiale come una bozza di un collega veloce ma inaffidabile: spesso utili, mai corretti automaticamente.

Considerazioni finali

Le allucinazioni derivano dal modo in cui funzionano i modelli linguistici: generano testo probabile, non fatti verificati. Non puoi spegnerli, ma puoi progettare attorno ad essi. Radica le risposte in dati attendibili, lascia che il modello dica “Non lo so”, aggiungi controlli automatici per i dettagli che contano e misura continuamente i risultati.

Domande frequenti

Cos’è un’allucinazione dell’intelligenza artificiale?

È quando un sistema di intelligenza artificiale produce informazioni false o non supportate e le presenta come vere, come una statistica inventata, una citazione o un dettaglio politico.

Perché i modelli di intelligenza artificiale hanno allucinazioni?

I modelli linguistici prevedono il testo probabile sulla base di modelli, non di fatti verificati. Lacune nei dati di addestramento, istruzioni vaghe e addestramento che premia indovinare tutto rendono più probabili le allucinazioni.

RAG ferma le allucinazioni?

Li riduce fornendo al modello informazioni attendibili, ma non li ferma. Il modello può ancora interpretare erroneamente le fonti e il recupero può restituire documenti errati.

Come si possono rilevare le allucinazioni dell’intelligenza artificiale?

Confronta le risposte con i documenti originali, controlla automaticamente numeri e citazioni, utilizza un secondo modello per verificare le affermazioni ed esamina campioni con le persone.

Le allucinazioni dell’IA scompariranno mai?

I tassi stanno diminuendo man mano che i modelli migliorano, ma nessun metodo attuale li rimuove completamente. I risultati importanti necessitano ancora di controlli e revisione umana.

Continua a imparare

Lavora con Stack Quora

Hai bisogno di aiuto con test, WordPress o SEO?

Aiutiamo i team a fornire software migliore e a far crescere i loro siti. Raccontaci a cosa stai lavorando e ti suggeriremo chiaramente il prossimo passo.

Continua a leggere

Altre guide su test, intelligenza artificiale e sviluppo moderno

Ti è piaciuto questo articolo? Scegli un argomento e passa direttamente ai nostri tutorial più recenti.

Intelligenza artificiale

Spiegazione delle allucinazioni dell'intelligenza artificiale: perché i modelli linguistici inventano le cose e come ridurle

Spiegazione delle allucinazioni dell'intelligenza artificiale: cosa sono, perché i modelli linguistici le producono, tipi comuni, come ridurle con b…

Leggi l'articolo →
DevOps

Spiegazione delle variabili d'ambiente: file .env, segreti e configurazione eseguiti correttamente

Variabili d'ambiente spiegate con esempi Python che abbiamo eseguito: lettura e impostazione, perché ogni valore è una stringa, file .env, ereditari…

Leggi l'articolo →
Sviluppo software

Spiegazione della limitazione della velocità API: algoritmi, intestazioni e gestione degli errori 429

La limitazione della velocità dell'API spiegata con una simulazione che abbiamo eseguito: bucket di token, finestra fissa, finestra scorrevole, risp…

Leggi l'articolo →
Automazione dei test

Derisione in Python: unittest.mock, patch e gli errori che fanno mentire i test

Mocking in Python con unittest.mock, testato: Mock e return_value, side_effect, patch dove viene utilizzato un nome, specifiche e autospec, date moc…

Leggi l'articolo →
Test del software

Spiegazione della copertura del codice: copertura di linea o di filiale e cosa significa realmente il 100%.

Copertura del codice spiegata con una vera esecuzione di cover.py: copertura di linea, ramo e condizione, lettura di un rapporto, perché la copertur…

Leggi l'articolo →
Database e SQL

DELETE vs TRUNCATE vs DROP in SQL: differenze, rollback e quando utilizzarli

DELETE vs TRUNCATE vs DROP spiegato con SQL testato: cosa rimuove, rollback, trigger, reimpostazione dell'identità, velocità e come differiscono Pos…

Leggi l'articolo →
Database e SQL

Spiegazione delle visualizzazioni SQL: crea, utilizza ed evita le insidie, con esempi

Viste SQL spiegate con le query che abbiamo eseguito: creazione di una vista, risultati in tempo reale, nascondere colonne, prestazioni, viste aggio…

Leggi l'articolo →
Sviluppo software

Interfaccia TypeScript e tipo: differenze reali, testate con il compilatore

Interfaccia TypeScript vs tipo, verificata con il vero compilatore: cosa possono fare entrambi, cosa può fare solo uno, fusione delle dichiarazioni,…

Leggi l'articolo →
Sviluppo software

Spiegazione di Python *args e **kwargs: funzioni flessibili con esempi chiari

Python *args e **kwargs spiegati con il codice che abbiamo eseguito: compressione e decompressione, ordine dei parametri, argomenti solo per parole …

Leggi l'articolo →
Sviluppo software

Funzioni Lambda Python: sintassi, usi reali e quando non usarli

Funzioni lambda Python spiegate con il codice che abbiamo eseguito: sintassi, ordinamento con chiave, mappa e filtro, chiusure, trap dell'associazio…

Leggi l'articolo →
Intelligenza artificiale

Cosa sono gli agenti AI? Come funzionano, con un semplice ciclo di agenti che puoi eseguire

Cosa sono gli agenti IA? Una semplice guida al ciclo dell'agente, agli strumenti, alla memoria e ai guardrail, con un piccolo ciclo Python che abbia…

Leggi l'articolo →
DevOps

Monitoraggio vs osservabilità: la vera differenza, con log, metriche e tracce

Spiegazione del monitoraggio e dell'osservabilità: errori noti e sconosciuti, log, metriche e tracce, una procedura dettagliata sugli incidenti di p…

Leggi l'articolo →
DevOps

Volumi Docker e montaggi di associazione: mantenere i dati del contenitore nel modo giusto

Volumi Docker e montaggi di collegamento spiegati: perché i dati del contenitore scompaiono, volumi denominati, montaggi di collegamento, tmpfs, ese…

Leggi l'articolo →
Automazione dei test

TDD vs BDD: differenze chiave, una caratteristica costruita in entrambi i modi e quando utilizzarli ciascuno

TDD vs BDD spiegato con una funzione di sconto costruita in entrambi i modi: refactoring rosso-verde con il codice che abbiamo eseguito, scenari "Da…

Leggi l'articolo →
Test del software

Test di accettazione da parte dell'utente (UAT): processo, lista di controllo ed esempi reali

Spiegazione del test di accettazione dell'utente: chi lo esegue, in cosa differisce dal QA, un processo in sette fasi, un modello di test case UAT, …

Leggi l'articolo →
Database e SQL

Spiegazione dei valori SQL NULL: IS NULL, COALESCE, NULLIF e le trappole da evitare

Valori SQL NULL spiegati con le query che abbiamo eseguito: logica a tre valori, IS NULL, COALESCE, NULLIF, come aggregazioni, join e ordinamento tr…

Leggi l'articolo →
Database e SQL

Istruzione SQL CASE WHEN: sintassi, esempi reali ed errori comuni

SQL CASE WHEN spiegato con le query che abbiamo eseguito: moduli semplici e cercati, ordine delle condizioni, pivot con SUM, trucchi COUNT, ordiname…

Leggi l'articolo →
Sviluppo software

Cos'è il JWT? Token Web JSON spiegati con un esempio funzionante

Cos'è il JWT? Spiegazione dei token Web JSON: le tre parti, un token creato e manomesso nel codice che abbiamo eseguito, JWT e sessioni, archiviazio…

Leggi l'articolo →
Sviluppo software

Spiegazione del loop di eventi JavaScript: stack di chiamate, microtask e timer con esempi

Il ciclo di eventi JavaScript spiegato con il codice che abbiamo eseguito: stack di chiamate, code di attività e microtask, perché setTimeout 0 non …

Leggi l'articolo →
Sviluppo software

Spiegazione dei generatori Python e del rendimento: risparmia memoria con esempi reali

Generatori Python e rendimento spiegati con il codice che abbiamo eseguito: come vengono messi in pausa e ripresi, misurato il risparmio di memoria,…

Leggi l'articolo →
Intelligenza artificiale

Cosa sono gli incorporamenti? I vettori e la somiglianza del coseno spiegati semplicemente

Cosa sono gli incorporamenti? Una guida in linguaggio semplice ai vettori, alla similarità del coseno e alla ricerca semantica, con un piccolo esemp…

Leggi l'articolo →
DevOps

Distribuzione blu-verde rispetto a quella canaria: differenze, compromessi e come scegliere

Spiegazione della distribuzione blu-verde e canary: come funziona ciascuna, costi, rischi e rollback, bucket utente stabile che abbiamo testato, mig…

Leggi l'articolo →
Automazione dei test

Test instabili: quali sono le cause e come risolverli definitivamente

Test instabili spiegati con demo che abbiamo eseguito: le cause principali, come confermarne e diagnosticarne uno, soluzioni adeguate per tempistich…

Leggi l'articolo →
Test del software

Test di carico e test di stress: differenze, metriche ed esempi k6

Spiegazione del test di carico e dello stress test: cosa dimostra ciascuno, test di picco e di assorbimento, le metriche che contano, perché le medi…

Leggi l'articolo →
Test del software

Caso di test e scenario di test: differenze chiave, esempi e quando utilizzarli

Spiegazione del caso di test e dello scenario di test: definizioni chiare, una tabella affiancata, una funzione di reimpostazione della password pre…

Leggi l'articolo →
Database e SQL

Ottimizzazione delle query SQL: leggi i piani di esecuzione e correggi query lente, con tempistiche

Ottimizzazione delle query SQL testata su un milione di righe: leggi i piani di esecuzione, aggiungi gli indici corretti, correggi filtri non aggior…

Leggi l'articolo →
Database e SQL

SQL UNION vs UNION ALL: differenze, esempi e prestazioni testate

SQL UNION vs UNION ALL spiegati con le query che abbiamo eseguito: duplicati, regole seguite da entrambi, un vero bug di dati, prestazioni misurate,…

Leggi l'articolo →
Sviluppo software

Tutorial sull'API di recupero JavaScript: GET, POST, gestione degli errori e timeout

Un tutorial sull'API JavaScript Fetch testato su un server locale: GET e POST, perché 404 non genera eccezioni, un helper riutilizzabile, stringhe d…

Leggi l'articolo →
Sviluppo software

Gestione dei file Python: lettura, scrittura, CSV, JSON e pathlib con esempi

Gestione dei file Python spiegata con il codice che abbiamo eseguito: modalità aperte, con, lettura di file di grandi dimensioni, CSV, JSON, pathlib…

Leggi l'articolo →
Sviluppo software

Classi e oggetti Python: tutorial OOP con esempi reali

Classi e oggetti Python spiegati con il codice che abbiamo eseguito: __init__, metodi, attributi di classe e istanza, ereditarietà, proprietà, metod…

Leggi l'articolo →
Intelligenza artificiale

Che cos'è un modello linguistico di grandi dimensioni? Come funzionano i LLM, spiegato senza esagerazioni

Cos’è un modello linguistico ampio? LLM spiegati in un linguaggio semplice: token, incorporamenti, attenzione, formazione, finestre di temperatura e…

Leggi l'articolo →
DevOps

Comandi Linux per principianti: la guida essenziale del terminale con esempi

Comandi Linux per principianti, raggruppati per attività: navigazione, file, visualizzazione log, grep, pipe, permessi, processi e archivi, con un e…

Leggi l'articolo →
Automazione dei test

Selenio vs drammaturgo: differenze chiave, codice a confronto e quale scegliere

Selenium vs Playwright a confronto: architettura, attesa, supporto per browser e linguaggio, debug, lo stesso test in entrambi gli strumenti, consig…

Leggi l'articolo →
Test del software

Partizionamento di equivalenza: tecnica di progettazione dei test spiegata con esempi pratici

Spiegazione del partizionamento di equivalenza: come trovare partizioni valide e non valide, esempi funzionanti per età, password e coupon, test che…

Leggi l'articolo →
Test del software

Gravità vs priorità nel test del software: differenze, matrice ed esempi reali

Spiegazione della gravità e della priorità nei test del software: definizioni chiare, una matrice a quattro vie con esempi, scale di livello, chi im…

Leggi l'articolo →
Database e SQL

Esercitazione sulle sottoquery SQL: tipi, sottoquery correlate ed EXISTS con esempi

Un tutorial sulle sottoquery SQL con le query che abbiamo eseguito: sottoquery scalari, IN, FROM e SELECT, sottoquery correlate, EXISTS, trap NOT IN…

Leggi l'articolo →
Database e SQL

Spiegazione di transazioni SQL e ACID: COMMIT, ROLLBACK e livelli di isolamento

Transazioni SQL e ACID spiegate con un bonifico bancario eseguito: COMMIT, ROLLBACK, punti di salvataggio, blocchi, livelli di isolamento, letture s…

Leggi l'articolo →
Sviluppo software

Git merge vs rebase: differenze, esempi e quando usare ciascuno

Git merge vs rebase spiegato con output reale del log, una tabella di confronto, la regola d'oro del rebase e un flusso di lavoro sicuro per i team.

Leggi l'articolo →
Sviluppo software

List comprehension in Python: sintassi, esempi e quando evitarla

List comprehension in Python spiegata: sintassi, filtri, if-else, cicli annidati, tempi misurati e i casi in cui un normale ciclo for è meglio.

Leggi l'articolo →
Database e SQL

SQL JOIN spiegati con esempi (Inner, Left, Right, Full)

Capisci i JOIN SQL passo dopo passo con tabelle e query di esempio: INNER, LEFT, RIGHT, FULL, CROSS e SELF, con errori comuni e consigli sulle prest…

Leggi l'articolo →