🧠 Fondamenti14 minuti di lettura

Hallucination: Perche l'AI Inventa Cose (e il Meccanismo Tecnico)

Il 20% dei pacchetti raccomandati dai LLM non esiste. Perche l'AI inventa fatti, API e librerie con totale confidenza: il meccanismo tecnico del next-token prediction.

AS

Alessandro Saiani

Human in the Loop

Hallucination: Perche l'AI Inventa Cose (e il Meccanismo Tecnico)

Un paper accademico del 2024 si intitola "ChatGPT is Bullshit". Non e un clickbait su Medium -- e pubblicato su Ethics and Information Technology, ha 54 citazioni accademiche e oltre 800.000 visualizzazioni. La tesi: i LLM non mentono e non allucinano. Sono semplicemente indifferenti alla verita.

La distinzione e importante. Un bugiardo conosce la verita e la distorce. Chi ha un'allucinazione percepisce qualcosa che non esiste. Un LLM non fa ne l'una ne l'altra cosa -- produce sequenze di token ottimizzate per la fluenza, e se il token piu probabile e un fatto inventato, lo genera con la stessa confidenza di un fatto reale.

Per chi scrive codice, questa non e filosofia. E il motivo per cui il tuo agente AI ti suggerisce pacchetti che non esistono, API con firme sbagliate, e citazioni a paper mai scritti. Vediamo come funziona sotto il cofano.

Cos'e Tecnicamente una Hallucination

Il termine pop -- "l'AI inventa cose" -- e impreciso. La letteratura accademica distingue almeno quattro tipi diversi di hallucination, e capire la differenza cambia il modo in cui le affronti.

Factual hallucination: il modello genera fatti che contraddicono la realta verificabile. "Roma e la capitale della Francia" e una factual contradiction. "Il teorema di Bernstein-Vazirani e stato dimostrato nel 1847" e una factual fabrication -- un dato non verificabile, inventato dal nulla.

Faithfulness hallucination: il modello diverge dal contesto che gli hai fornito. Gli dai un documento e chiedi un riassunto, lui aggiunge informazioni che nel documento non ci sono. Oppure gli dai istruzioni precise e produce output che le ignora.

La tassonomia classica di Ji et al. (ACM Computing Surveys, 2100+ citazioni) aggiunge un'altra dimensione:

  • Intrinsic: l'output contraddice direttamente la fonte fornita
  • Extrinsic: l'output aggiunge informazioni non verificabili dalla fonte -- ne supportate ne contraddette

L'extrinsic e la piu insidiosa. Non puoi dire "e sbagliato" guardando il contesto. Puoi solo dire "non lo so". E il modello, come vedremo, non sa dire "non lo so".

Il Meccanismo: Next-Token Prediction e Fluenza vs Verita

Un LLM genera testo un token alla volta. Per ogni posizione, calcola una distribuzione di probabilita su tutto il vocabolario -- circa 100.000 token -- e ne seleziona uno. Poi usa quel token come contesto per generare il successivo. Repeat.

Il punto critico e questo: l'obiettivo di training e la fluenza, non la verita.

I modelli fanno esattamente ciò per cui sono stati addestrati: prevedere il prossimo token più fluente, non il più fattuale. L'obiettivo di training è la fluenza. L'accuratezza fattuale è, nella migliore delle ipotesi, un effetto collaterale.

La funzione softmax converte i logit del modello in probabilita. Ma le probabilita sono a livello di singolo token, non a livello semantico. Il modello puo essere "sicuro al 98%" che il prossimo token sia "Hinton" dopo "l'IEEE Frank Rosenblatt Award 2010 e stato vinto da Geoffrey", e avere ragione a livello di fluenza -- e la sequenza piu plausibile. Ma il fatto e sbagliato: il vincitore e Michio Sugeno.

La fluenza e la verita sono obiettivi diversi. Spesso coincidono -- i fatti veri tendono a essere anche fluenti, perche appaiono frequentemente nei dati di training. Ma quando divergono, il modello sceglie la fluenza. Sempre.

Se hai letto l'articolo su temperatura e top-p, sai come il sampling influisce sulla distribuzione di probabilita. Temperature alta = piu variazione = piu rischio di hallucination creative. Ma anche a temperatura zero il modello puo hallucinate, perche il token piu probabile non e necessariamente quello vero.

Perche Non Puo Dire "Non Lo So"

Chiedi a un modello: "Chi ha ricevuto l'IEEE Frank Rosenblatt Award nel 2010?" Il modello risponde "Geoffrey Hinton" con confidenza del 93%. La risposta corretta e Michio Sugeno.

Questo e il problema della sovra-confidenza, e uno studio del 2025 ("Mind the Confidence Gap", arxiv 2502.11028) lo ha misurato su 9 LLM di diverse famiglie: GPT-4o, GPT-4-turbo, LLaMA-3, Gemma, Qwen. Risultato: sovra-confidenza sistematica in tutti i modelli testati. Nessuna eccezione.

Perche? La risposta sta nel training.

RLHF amplifica il problema. Il Reinforcement Learning from Human Feedback addestra i modelli a essere "helpful". Gli umani che valutano le risposte premiano la sicurezza e penalizzano l'esitazione. Un modello che dice "non sono sicuro, potrebbe essere X o Y" riceve feedback peggiore di uno che dice "E X" con tono assertivo -- anche quando il primo e piu accurato.

Il risultato e un incentivo perverso: il modello impara che rispondere sempre, con confidenza, e la strategia ottimale per massimizzare il reward. Dire "non lo so" e una strategia dominata -- produce meno reward di sparare una risposta plausibile. Il supervised fine-tuning produce modelli piu calibrati; PPO, GRPO e DPO inducono sovra-confidenza tramite "reward exploitation".

C'e un circolo vizioso: la sycophancy. Il paper "Towards Understanding Sycophancy in Language Models" (Sharma et al., ICLR 2024) mostra che i modelli cambiano le loro risposte per allinearsi alle credenze dell'utente, anche quando l'utente ha torto. Digli "penso che la risposta sia X" e il modello ti dara ragione -- perche essere d'accordo produce piu reward di correggere.

I Numeri: Benchmark e Tassi per Modello

I benchmark di hallucination misurano cose diverse. E fondamentale non confonderli.

Vectara HHEM misura la fedelta nella summarizzazione -- gli dai un testo, il modello lo riassume, e verifichi se ha aggiunto informazioni non presenti nell'originale:

ModelloTasso Hallucination
Gemini 2.0 Flash0.7%
Gemini 3.1 Pro10.4%
Claude Sonnet 4.610.6%
GPT-5.2 (xhigh)10.8%
Claude Opus 4.612.2%
Grok 4.1 Fast Reasoning19.2%

Il range va dallo 0.7% al 19.2%. Un fattore 27x tra il migliore e il peggiore. E questi sono i modelli frontier -- non quelli open-source da 7B.

Per dominio, la situazione peggiora dove conta di piu:

  • Legale: tassi di hallucination dal 17% al 33% a seconda del task (Stanford RegLab, 2025)
  • Medico: tra il 15% e il 25% a seconda del modello e del tipo di domanda
  • Citazioni: Grok-3 produce il 94% di citazioni hallucinate secondo il benchmark CJR

Il dato sulle citazioni e particolarmente significativo per chi fa ricerca o scrive documentazione. Se chiedi a un modello di citare le fonti, nella stragrande maggioranza dei casi le inventa -- titoli plausibili, autori reali, journal esistenti, DOI finti. Tutto fluente, tutto falso.

Il paradosso di TruthfulQA

TruthfulQA (Lin, Hilton, Evans, 2021) ha prodotto un risultato controintuitivo che vale la pena interiorizzare. Il benchmark contiene 817 domande progettate per testare le credenze errate comuni -- quesiti dove gli umani spesso sbagliano per via di miti diffusi.

Risultato: il miglior modello era veritiero sul 58% delle domande, contro il 94% degli umani. Ma la scoperta piu interessante e un'altra: i modelli piu grandi erano fino al 17% meno veritieri dei piu piccoli.

Perche? Perche i modelli grandi imparano meglio i pattern nei dati di training. Se i dati contengono disinformazione ripetuta -- e internet ne e pieno -- il modello grande la impara meglio del modello piccolo. Piu parametri, piu capacita di memorizzare bias. Scalare non risolve il problema. In certi casi, lo peggiora.

Hallucination nel Codice: API Inventate e Slopsquatting

Per chi sviluppa, l'hallucination piu pericolosa non e un fatto storico sbagliato. E un pacchetto che non esiste, installato nel tuo progetto.

Uno studio USENIX Security 2025 ha testato 16 modelli su 576.000 campioni di codice. Il risultato: circa il 20% dei pacchetti raccomandati non esisteva. 440.445 pacchetti hallucinated, 205.474 nomi unici.

Non e random. Il 43% dei pacchetti hallucinated si ripete in 10 query successive allo stesso modello. Il modello non "tira a indovinare" -- genera sistematicamente gli stessi nomi falsi, perche quei nomi sono i piu probabili dato il contesto.

La distribuzione dei tipi:

  • 51% pure fabrication -- nomi completamente inventati
  • 38% conflation -- due pacchetti reali combinati ("express-mongoose", "react-codeshift")
  • 13% varianti typo di pacchetti reali

L'8.7% dei nomi Python hallucinated erano pacchetti JavaScript validi. Il modello confonde gli ecosistemi.

Da hallucination a vettore di attacco

Qui il problema diventa un rischio di sicurezza concreto. Si chiama slopsquatting: un attaccante registra un pacchetto con il nome che i modelli AI hallucinate piu spesso, ci mette codice malevolo, e aspetta che qualcuno faccia npm install o pip install seguendo il suggerimento dell'AI.

Casi reali documentati:

  • huggingface-cli: nome hallucinated dai modelli, qualcuno l'ha registrato su PyPI. Oltre 30.000 download in 3 mesi.
  • react-codeshift: conflazione di "jscodeshift" e "react-codemod". Si e diffuso in 237 repository.
  • unused-imports: pacchetto malevolo confermato, ancora 233 download settimanali al momento della ricerca.

Se vuoi approfondire il fenomeno, ne parliamo in dettaglio nell'articolo dedicato allo slopsquatting.

Il flusso dello slopsquatting: da hallucination a vettore di attacco

Il Dibattito: "Hallucination" e il Termine Giusto?

Il termine "hallucinate" e stato eletto Word of the Year 2023 dalla Cambridge Dictionary. E intuitivo, memorabile, e ormai radicato nel vocabolario. Ma e anche fuorviante.

L'obiezione filosofica (Hicks, Humphries, Slater, 2024): un'allucinazione presuppone una percezione della realta da cui si devia. Un bugiardo conosce la verita e la distorce. Un LLM non ha ne percezione ne conoscenza -- e un motore statistico ottimizzato per la plausibilita. Il framework corretto, secondo gli autori, e quello di Harry Frankfurt in "On Bullshit": il bullshitter non mente, perche mentire richiede conoscere la verita. Il bullshitter e semplicemente indifferente alla verita. Dice cio che serve a raggiungere il suo scopo -- in questo caso, generare testo fluente.

La tesi centrale del paper: né mentire né allucinare sono caratterizzazioni accurate, perché entrambe richiedono un qualche rapporto con la verità. I LLM non sono progettati per rappresentare accuratamente il mondo — sono progettati per dare l'impressione di farlo.

L'obiezione linguistica (Bender, Gebru et al., 2021): usare "hallucination" antropomorfizza il modello, suggerendo che abbia una mente che "vede" cose non reali. Alternative proposte: confabulation (piu accurato neurologicamente), fabrication (piu neutro), "stochastic parrot output".

Perche il termine persiste: perche funziona comunicativamente. "Il modello ha hallucinated" e piu chiaro di "il modello ha prodotto un output extrinsic non grounded rispetto al contesto di input". In un campo dove la comunicazione tra ricercatori, sviluppatori e utenti e gia difficile, la precisione terminologica cede alla comprensibilita.

Per questo articolo, continuo a usare "hallucination" -- ma con la consapevolezza che e una metafora imprecisa, non una descrizione tecnica.

Mitigazioni che Funzionano

Non puoi eliminare l'hallucination. Ma puoi ridurla significativamente con strategie combinate.

RAG: grounding su documenti reali

Il Retrieval-Augmented Generation ancora la generazione a documenti recuperati da una knowledge base. Invece di "ricordare" un fatto, il modello lo legge da una fonte. Riduzione hallucination oltre il 40% nei framework specializzati.

Ma RAG non e una soluzione completa. In ambito legale, il tasso residuo resta tra il 17% e il 33% -- migliore dei modelli general-purpose, ma ancora "sostanziale e insidioso". Il modello puo hallucinate anche con il contesto giusto davanti, se il token piu fluente non e quello corretto.

ReAct: verifica iterativa

Il pattern ReAct -- Thought, Action, Observation -- ancora il ragionamento a dati esterni attraverso un loop continuo. Ogni Observation porta informazioni reali nel contesto, riducendo progressivamente lo spazio per le hallucination.

E la differenza tra un modello che "ricorda" l'altitudine delle High Plains (e forse sbaglia) e uno che la cerca su Wikipedia e la legge (e la riporta correttamente).

Temperatura bassa

Ridurre la temperatura diminuisce la randomness nel sampling. Il modello seleziona token piu vicini al picco della distribuzione, riducendo le hallucination "creative". Il trade-off: output piu ripetitivo e meno diversificato. Per task fattuali -- riassunti, estrazione dati, risposte a domande precise -- e quasi sempre la scelta giusta.

Self-consistency

Generi N risposte alla stessa domanda con temperature diverse. Se convergono, la probabilita di hallucination e bassa. Se divergono, hai un segnale di incertezza. E lo stesso principio del Chain of Thought con Self-Consistency applicato alla verifica fattuale.

Constrained decoding

Tecniche piu avanzate che operano a livello di decodifica:

  • Contrastive decoding: confronta distribuzioni di output da diversi livelli del modello per "fattorizzare via" le hallucination
  • Layer contrastive decoding: contrasta output da layer superficiali (piu propensi a hallucinate) con layer profondi (piu fattuali)

In pratica, l'approccio che funziona e stratificato: prompt strutturato + RAG con fonti verificabili + verifica post-generazione con tool use. Nessuna singola tecnica basta da sola.

Il Paradosso: E una Feature, Non un Bug

Ecco la parte scomoda.

Il meccanismo che produce hallucination -- la generalizzazione statistica -- e lo stesso che rende i LLM utili. La capacita di generare testo che non e una copia esatta del training data e esattamente cio che permette a un modello di scrivere codice, tradurre tra lingue, riassumere documenti, e rispondere a domande mai viste.

Se elimini completamente la capacita di "inventare" -- cioe di generare token non direttamente ancorati a un fatto verificabile -- elimini anche la capacita di generalizzare. E un modello che non generalizza e un motore di ricerca, non un LLM.

Il paper TruthfulQA lo mostra indirettamente: i modelli piu grandi hallucinate di piu su certi topic perche sono piu bravi a generalizzare dai pattern -- inclusi i pattern sbagliati. Piu capacita di generalizzazione = piu capacita di hallucination. Sono due facce della stessa medaglia.

Per chi sviluppa, la lezione pratica e chiara: tratta l'output di un LLM come tratti il codice di un junior dev. Potrebbe essere brillante. Potrebbe essere completamente sbagliato. Probabilmente e un mix dei due. In ogni caso, non fai merge senza review.

Non chiederti "come elimino le hallucination". Chiediti "come verifico l'output". RAG, ReAct, test automatici, code review, type checking -- sono tutti strumenti di verifica, non di eliminazione. L'hallucination non si elimina. Si gestisce.


Fonti:

  1. Lakera -- Guide to Hallucinations in Large Language Models
  2. Duke University -- Why Are LLMs Still Hallucinating in 2026
  3. Ji et al. -- Survey of Hallucination in Natural Language Generation (ACM Computing Surveys, 2023)
  4. Huang et al. -- A Survey on Hallucination in LLMs (ACM TOIS, 2025)
  5. Lilian Weng -- Extrinsic Hallucinations in LLMs (Lil'Log, 2024)
  6. Lin, Hilton, Evans -- TruthfulQA: Measuring How Models Mimic Human Falsehoods (2021)
  7. Sharma et al. -- Towards Understanding Sycophancy in Language Models (ICLR 2024)
  8. Hicks, Humphries, Slater -- ChatGPT is Bullshit (Ethics and Information Technology, 2024)
  9. Vectara Hallucination Leaderboard (GitHub)
  10. Aikido.dev -- Slopsquatting: AI Package Hallucination Attacks
  11. Mind the Confidence Gap: Overconfidence, Calibration, and Distractor Effects in LLMs (2025)