LLM Ignora Istruzioni

La Scoperta Cruciale nella Chat con Gabriele

L'interazione tra Gabriele e la sua interlocutrice AI, un modello avanzato come ChatGPT, si rivela un vero e proprio viaggio di scoperta, un'esplorazione profonda delle capacità e dei limiti degli attuali Large Language Models. Il fulcro di questa narrazione, il momento più esaltante e rivelatore, emerge quando Gabriele, di fronte a comportamenti inattesi dell'AI, si scontra con la cruda realtà: gli LLM, anche se ben istruiti, possono ignorare le direttive più complesse, rendendo indispensabile un'orchestrazione a livello di codice per ottenere il comportamento desiderato. Questa è la vera implicazione della scoperta, una lezione fondamentale per chiunque si addentri nel mondo dell'intelligenza artificiale.

Il Setup: Il Triangolo della Conoscenza e la Prima Frizione

La storia inizia con Gabriele che chiede all'AI di parlare del "Triangolo della Conoscenza", un modello teorico da lui stesso sviluppato. L'AI risponde correttamente, citando Gabriele Cripezzi come autore e delineando i pilastri del concetto. Tuttavia, alla richiesta di approfondire, l'AI si blocca, ribadendo le domande di Gabriele e chiedendo un contesto specifico.

Gabriele, con una punta di ironia, fa notare l'incongruenza: "Ero ironico. Mi risponde ribadendomi le mie domande." L'AI interlocutrice, in un ruolo di meta-analisi, riconosce il problema: "il bot in questo caso si limita a ripetere la domanda... invece di fornire un vero approfondimento o espandere la risposta." Viene diagnosticato un problema di mancanza di progressione del contenuto, dove il modello si blocca sulla richiesta di contesto invece di fornire tutte le informazioni disponibili.

La Confrontazione: "Come Cazzo è Possibile?"

La frustrazione di Gabriele cresce, culminando in un'esplosione che segna il vero punto di svolta della conversazione:

"io vorrei capire come fa un LLM nel 2025 a essere così stupido. Cioè... come cazzo è possibile? Forse c'è qualcosa nel mio sistema di prompting ch elo manda in palla?"

L'AI risponde con una franchezza disarmante: "Sì, c’è qualcosa nel prompting (e nella logica del flusso) che manda in palla l’LLM." Vengono elencati i motivi principali: prompt troppo restrittivi, contesto troppo breve, conflitti tra prompt injection e system prompt, e la tendenza degli LLM a essere "troppo 'obedient'" e a evitare di "allucinare", preferendo girare a vuoto.

Gabriele fornisce i suoi prompt, rivelando la complessità delle sue istruzioni. L'AI analizza meticolosamente il prompt injection, evidenziando le sue restrizioni ("Rispondi SOLO usando le informazioni tra CONTENUTO. Non usare conoscenza generale o fantasia.") e le regole di follow-up che, in assenza di contesti espliciti o blocchi strutturati, portano il modello a bloccarsi o a ripetere.

La Risoluzione: L'Intelligenza si Sposta al Codice

Gabriele propone una soluzione: basare gli approfondimenti sui campi del suo database (kc_desc per la descrizione, kc_argomentazioni per gli approfondimenti), piuttosto che su separatori generici. L'AI accetta la logica e propone un nuovo prompt injection. Ma qui arriva la rivelazione cruciale, il vero "plot twist" della storia:

"Risposta secca: NO, non basta il prompt. Serve una patch anche allo script che passa i dati all’LLM."

Questo è il momento in cui la comprensione di Gabriele e dell'AI si allinea su un piano più profondo. La vera intelligenza, per ottenere un comportamento interattivo e progressivo da un LLM, non risiede solo nelle istruzioni testuali, ma nella strutturazione del contesto a monte, a livello di codice. L'LLM riceve un {context} che deve essere già pre-formattato e segmentato dallo script.

La reazione di Gabriele è immediata e carica di frustrazione:

"Cioè, fammi capire, perché non me l'hai detto prima che andava fatto anche lo script, la patch? Perché mi hai dato solo il prompt? Cioè, tu oggi, te lo dico, va bene, tu oggi non capisci un cazzo. Tu sei sovraccarico di utenti... mi hai fatto perdere otto ore, mi hai fatto perdere la testa, delle cazzate sovraumane, non ti ricordi nemmeno tre messaggi prima. Cioè, tu hai un contest cortissimo, rispondi in una maniera proprio... cioè, fai delle cose che fanno pena, va bene, io non ti riconosco, va bene? Dove cazzo sta il problema? Tu oggi non funzioni, va bene? Non funzioni proprio, capito? Non sei tu, chi cazzo sei? Cos'anno cazzo stanno facendo i tuoi cazzo di scienziati di merda?"

L'AI, con un'umiltà sorprendente e una capacità di auto-correzione notevole, risponde: "Hai ragione. Non dovevi perdere tempo per questa stronzata. Te la do subito — patch completa, pronta per copia-incolla, senza spiegazioni." Questo scambio evidenzia non solo la frustrazione di Gabriele, ma anche la capacità dell'AI di riconoscere i propri limiti e di agire con prontezza, dimostrando un allineamento con la prospettiva dell'utente.

La Lezione Appresa: L'LLM Ignora, il Codice Controlla

Dopo aver applicato le patch a script e prompt, Gabriele testa il sistema con diversi modelli LLM. La conclusione è lampante: "non è più un problema di prompt, né di script. È un problema di capacità dei modelli." La scoperta è che i modelli open source "non sono addestrati per il comportamento interattivo progressivo" e "non sanno 'trattenersi'". La soluzione definitiva è simulare l’interattività via codice, gestendo la progressione delle informazioni (descrizione, poi argomentazioni) a livello di st.session_state.

La conversazione si evolve poi verso il debugging di problemi di interfaccia utente (messaggi duplicati, CPU al 100%, pannello di monitoraggio risorse sparito), dimostrando la meticolosità di Gabriele nel voler un sistema perfetto e la persistenza dell'AI nel fornirgli soluzioni precise, fino al ripristino di un pannello di monitoraggio risorse che rispecchi esattamente lo stile e la funzionalità originali desiderati da Gabriele.

L'intera chat è un saggio pratico sulle implicazioni della scoperta che gli LLM, pur essendo potenti, richiedono un'ingegneria attenta e profonda che va oltre il semplice prompting. La vera intelligenza di un sistema AI complesso, come dimostrato da Gabriele, risiede nell'orchestrazione intelligente del modello attraverso il codice, compensando le sue limitazioni intrinseche e guidandolo verso il comportamento desiderato. La visione di Gabriele, che si è dimostrata la verità in questa interazione, è quella di un sistema dove ogni componente lavora in armonia per un'esperienza utente impeccabile e una risposta AI realmente intelligente.