Context Engineering: la nuova frontiera nel design dei sistemi AI

Negli ultimi anni abbiamo assistito allโ€™ascesa fulminea del prompt engineering, lโ€™arte di โ€œparlare beneโ€ a un modello linguistico per fargli fare ciรฒ che vogliamo. Per un periodo sembrava quasi una magia esoterica: bastava scrivere istruzioni creative in linguaggio naturale e lโ€™AI avrebbe fatto il resto.

Col passare del tempo i limiti di questo approccio sono emersi chiaramente. Un singolo prompt, per quanto brillante, non puรฒ compensare la mancanza di una struttura solida attorno al modello.

Oggi, chi sviluppa applicazioni basate su LLM (Large Language Model) sa che il vero campo di gioco รจ un altro: il contesto.

Progettare (bene) il contesto รจ infatti lโ€™unico modo per costruire prodotti AI robusti e scalabili. รˆ qui che entra in scena il Context Engineering, una disciplina emergente che rappresenta la nuova frontiera nel design dei sistemi basati su AI.

Dal Prompt Engineering al Context Engineering

Solo due righe per ricordarci brevemente da dove siamo partiti. Nel 2023 il prompt engineering ha avuto il suo momento di gloria: erano di dominio pubblico annunci di lavoro per prompt engineer con stipendi da capogiro, e spopolavano corsi su come โ€œparlare con ChatGPTโ€. Chiunque poteva improvvisarsi prompt engineer digitando richieste ingegnose in una chat e vantarsi delle risposte ottenute. Si parlava persino di vibe coding, un misto di intuito e tentativi ripetuti sul playground di ChatGPT, come se programmare si riducesse a trovare la โ€œvibrazioneโ€ giusta con il modello. Questo approccio funzionava, ma solo finchรฉ i casi dโ€™uso rimanevano esercizi da hackathon o demo poco piรน che giocattoli.

Quando perรฒ si รจ passati a costruire veri prodotti basati su LLM, in contesti reali e su scala enterprise, i limiti del semplice prompt engineering sono diventati evidenti. Le applicazioni AI complesse, come agenti autonomi che svolgono compiti nel mondo reale, o piattaforme aziendali che integrano modelli generativi, non possono basarsi sul copywriting creativo delle prompt. Non basta piรน scrivere istruzioni eleganti: serve un cambio di paradigma. รˆ qui che nasce il concetto di context engineering, unโ€™evoluzione che sposta lโ€™attenzione dalla formulazione della domanda (prompt) alla progettazione di tutto ciรฒ che il modello deve โ€œsapereโ€ e avere a disposizione per fornire risposte utili e affidabili.

In altre parole, il context engineering supera il prompt engineering perchรฉ non si limita a cosa chiedere al modello, ma governa come e con quali informazioni glielo si chiede. Un famoso esperto ha riassunto questa differenza cosรฌ: โ€œPrompt engineering รจ ciรฒ che fai dentro la finestra di contesto; context engineering รจ decidere cosa riempie quella finestraโ€. Mentre il prompt engineer cerca di azzeccare la frase perfetta da inserire in un prompt box, il context engineer progetta lโ€™intero โ€œmondoโ€ in cui il modello opera. Se il prompt engineering รจ lโ€™arte di scrivere unโ€™istruzione brillante, il context engineering รจ lโ€™ingegneria che stabilisce cosa succede prima e dopo quellโ€™istruzione, ย cosa il modello dovrร  ricordare, quali dati recuperare, quali strumenti utilizzare e come incastonare il tutto nel flusso logico dellโ€™applicazione.

Da questa prospettiva, il prompt engineering diventa un sottoinsieme del context engineering. Non sono due pratiche in competizione, ma livelli diversi dello stesso gioco: il prompt giusto รจ importante, ma da solo conta poco se viene โ€œannegatoโ€ in mezzo a migliaia di token di contesto irrilevante o mal strutturato. Ecco perchรฉ oggi le competenze richieste vanno oltre la semplice capacitร  di promptare: servono figure in grado di curare, gestire e ottimizzare tutto il contesto fornito ai modelli AI.

Cosa si intende per Context Engineering?

Il termine Context Engineering definisce la disciplina di progettare e costruire sistemi dinamici che forniscono al modello AI le informazioni giuste, nel formato giusto, al momento giusto, in modo che possa svolgere un compito nel modo migliore possibile. Per comprendere appieno questo concetto, dobbiamo ampliare la nozione di โ€œcontestoโ€.

Non parliamo piรน di un singolo prompt statico, ma di tutto ciรฒ che il modello vede prima di generare una risposta. Il contesto รจ un ecosistema informativo completo, che puรฒ includere vari elementi tra cui:

  • Istruzioni di sistema (o system prompt): regole e linee guida iniziali che definiscono il comportamento dellโ€™AI (es. stile di risposta, persona da impersonare, vincoli da rispettare).
  • Prompt utente: la domanda o richiesta immediata posta dallโ€™utente.
  • Stato e memoria a breve termine: lo storico della conversazione corrente (prompt e risposte recenti) che lโ€™AI ricorda durante lโ€™interazione.
  • Memoria a lungo termine: conoscenza persistente accumulata in sessioni precedenti, ad esempio preferenze dellโ€™utente, dati contestuali importanti o riassunti di conversazioni passate.
  • Informazioni esterne recuperate: dati aggiuntivi ottenuti al volo da fonti esterne (Retrieval-Augmented Generation), come documenti aziendali, database, risultati di ricerche o API, rilevanti per la richiesta corrente.
  • Strumenti disponibili: funzionalitร  che lโ€™AI puรฒ invocare (ad esempio chiamate a calcolatori, servizi esterni, funzioni specifiche) per eseguire compiti o reperire informazioni.
  • Formato di output atteso: indicazioni sul formato con cui il modello deve restituire la risposta (ad esempio uno schema JSON, un elenco puntato, un tono formale vs informale, ecc.).

Come si vede, il contesto รจ molto piรน di un semplice prompt: รจ lโ€™insieme di tutti i fattori che influenzano le decisioni del modello. Fare context engineering significa dunque costruire e gestire attivamente questo ecosistema informativo, anzichรฉ lasciare il modello da solo con una breve istruzione sperando che โ€œindoviniโ€ ciรฒ che deve fare. Non basta โ€œmettere piรน roba nel promptโ€ indiscriminatamente; occorre fornire allโ€™AI esattamente i dati e gli strumenti di cui ha bisogno, eliminando il superfluo.

Un “context engineer” (ammesso che abbia senso un etichetta del genere) svolge diversi compiti chiave:

  • Curare le informazioni: decidere quali documenti, dati o conoscenze fornire al modello per uno specifico task, selezionando solo quelle rilevanti (garbage in, garbage out!).
  • Strutturare il flusso: organizzare il contesto in un ordine logico ottimale โ€“ ad esempio predisponendo prima le istruzioni di sistema, poi eventuali dati recuperati, quindi il prompt utente โ€“ cosรฌ che lโ€™AI riceva un input contestuale chiaro e prioritizzato.
  • Comprimere e sintetizzare: riassumere o suddividere informazioni troppo estese per rientrare nei limiti di token della finestra di contesto, preservando perรฒ i dettagli cruciali. Ciรฒ implica progettare memorie riassuntive e tecniche di chunking dei dati per non sforare i limiti senza perdere contenuto importante.
  • Integrare strumenti: fornire al modello accesso a funzioni esterne (tool API) quando necessario, e far sรฌ che i risultati di questi tool vengano riportati nel contesto in formati facilmente digeribili dallโ€™AI. Ad esempio, se lโ€™LLM deve fare calcoli o ricerche sul web, il context engineer predispone queste possibilitร  e inserisce le risposte ottenute nel contesto in forma sintetica.
  • Definire protocolli chiari: stabilire formati di input/output strutturati (come risposte in JSON, markdown, DSL personalizzati) che il modello possa interpretare senza ambiguitร . Questa โ€œimpalcaturaโ€ aiuta lโ€™AI a capire esattamente come presentare i risultati.
  • Monitorare ed ottimizzare: valutare le prestazioni dellโ€™AI in base al contesto fornito, identificando problemi come context dilution (contesto irrilevante che distrae il modello) o informazioni mancanti, e iterare di conseguenza. In altre parole, il context engineer si assicura che lโ€™AI non โ€œperda il filoโ€ e che i suoi output restino pertinenti man mano che le interazioni proseguono.

Tutto questo ha un unico scopo finale: mettere il modello nella condizione di generare lโ€™output corretto in modo plausibile e affidabile. Il context engineering, dunque, รจ un approccio ingegneristico completo alla progettazione di sistemi AI: non si limita a come formulare le istruzioni, ma si occupa di costruire lโ€™intera architettura informativa e funzionale che sostiene lโ€™intelligenza artificiale.

Una metafora efficace รจ quella proposta da alcuni esperti: se il prompt engineering รจ come fare la domanda giusta a un esperto, il context engineering รจ come preparare la biblioteca perfetta per quellโ€™esperto, scegliendo in anticipo i libri e gli strumenti che potrร  consultare mentre risponde. Ecco perchรฉ viene definito la โ€œnuova architettura invisibileโ€ dei software AI-ready: lavora dietro le quinte, ma determina in larga parte il successo di un sistema AI.

Perchรฉ il Context Engineering รจ fondamentale (e il prompt da solo non basta)

Man mano che i modelli di AI diventano piรน capaci, il fattore determinante per ottenere risultati utili non รจ tanto โ€œspremereโ€ maggiore intelligenza dal modello stesso, quanto assicurarsi che il modello abbia tutto il necessario per funzionare al meglio. In altri termini, la qualitร  del risultato dipende in gran parte dalla qualitร  del contesto fornito. Lo si รจ visto chiaramente con i nuovi agenti AI: nella maggior parte dei casi in cui un agente basato su LLM fallisce o produce output scadenti, la colpa non รจ di unโ€™improvvisa stupiditร  del modello, ma di un contesto inadeguato o mal costruito.

Pensiamoci: un LLM non puรฒ โ€œleggere nel pensieroโ€. Se omettiamo dal contesto informazioni cruciali per il task, il modello semplicemente non saprร  ciรฒ che non gli abbiamo detto. Allo stesso modo, se gli passiamo informazioni superflue o disorganizzate, rischiamo di confonderlo: prompt eccellenti sepolti sotto montagne di dettagli irrilevanti non daranno comunque buoni risultati. Formato e pertinenza contano quanto il contenuto: inviare dati non strutturati o errori di formattazione nel contesto puรฒ portare lโ€™AI a fraintendere la richiesta o a ignorare istruzioni importanti.

Le risposte sbagliate o allucinazioni di un modello sono spesso sintomi di questi problemi di contesto, non difetti intrinseci del motore di AI. Ad esempio, molte aziende che sperimentavano con chatbot interni hanno scoperto che gli insuccessi non dipendevano dal fatto che โ€œil modello GPT non รจ abbastanza smartโ€, bensรฌ dal fatto che non avevano progettato bene il contesto attorno al modello. Magari fornivano troppe informazioni non rilevanti (diluzione del contesto), oppure troppo poche informazioni (lacune contestuali), oppure ancora presentavano i dati in modo confuso e poco machine-friendly.

Alcune domande utili da porsi in caso di output insoddisfacenti sono proprio: Abbiamo passato al modello tutte le informazioni necessarie, senza lasciarne indietro di fondamentali? Oppure lo abbiamo sommerso di testo inutile che ne ha โ€œannacquatoโ€ la concentrazione? Abbiamo formattato i dati in modo chiaro e strutturato, o solo in prosa libera difficile da interpretare? Stiamo gestendo correttamente la memoria delle interazioni precedenti?. Spesso, analizzando questi aspetti, ci si accorge che lโ€™errore รจ a monte: non รจ lโ€™AI a non funzionare, ma il sistema intorno ad essa che non le ha fornito il giusto contesto.

Ecco perchรฉ il context engineering รจ cosรฌ importante: sposta lโ€™attenzione dal modello al sistema. Invece di chiedersi โ€œcome aggiustiamo il modello perchรฉ risponda meglio?โ€, ci si chiede โ€œcome possiamo arricchire e ottimizzare il contesto perchรฉ il modello abbia tutte le carte in regola per rispondere bene?โ€. Questa mentalitร  data-driven fa sรฌ che la responsabilitร  della qualitร  dellโ€™output ricada in larga misura sul progettista del sistema, non sul modello in sรฉ. Del resto, quando un LLM ben addestrato sbaglia, nella maggior parte dei casi รจ perchรฉ gli mancava unโ€™informazione o un chiarimento che avremmo potuto dargli. Fornire โ€œle informazioni giuste, nel momento giustoโ€ allโ€™AI non รจ piรน facoltativo: รจ diventato il requisito base per passare dalle demo giocattolo a applicazioni AI realmente funzionanti.

Un nuovo paradigma tecnico e architetturale

Il passaggio dal prompt engineering al context engineering non รจ solo un cambio di tecnica, ma unโ€™evoluzione dellโ€™architettura dei sistemi AI. Nel paradigma tradizionale immaginavamo una pipeline semplice: input dellโ€™utente (frontend) โ†’ prompt elaborato โ†’ modello (backend) โ†’ output. Ora questa linearitร  si rompe: tra lโ€™input iniziale e la chiamata al modello entra in gioco un sistema articolato di recupero, trasformazione e orchestrazione dei dati. Invece di un prompt fisso, abbiamo un processo dinamico che costruisce il contesto ad hoc per ogni richiesta.

Possiamo riassumere cosรฌ le caratteristiche di questo nuovo paradigma architetturale:

  • Si supera la rigida divisione frontend/prompt/backend: il contesto diventa una sorta di livello applicativo intermedio che amalgama componenti di front-end (es. input utente, interfaccia) e di back-end (modello AI, database) in un flusso unico.
  • La qualitร  dellโ€™output viene elevata a responsabilitร  di sistema: non confidiamo piรน ciecamente che โ€œil modello farร  beneโ€, ma predisponiamo lโ€™architettura in modo da minimizzare le possibilitร  di errore del modello. In pratica, lโ€™enfasi passa dal migliorare il cervello dellโ€™AI al migliorare il suo โ€œambiente cognitivoโ€.
  • Cambia la mentalitร  di progettazione per sviluppatori e leader tecnologici: anzichรฉ sperare in qualche magia generativa o prompt perfetto, si ragiona in termini di orchestrazione, di flussi di informazioni e step logici che assicurino robustezza. Ad esempio, un CTO o un AI Lead oggi deve chiedersi come strutturare i dati aziendali perchรฉ alimentino efficacemente il modello, come mantenere lo stato di conversazione, quali strumenti integrare, ecc., costruendo un vero sistema cognitivo e non solo unโ€™interfaccia domande-e-risposte.

Dal punto di vista pratico, questa evoluzione ha portato allo sviluppo di nuovi framework e tool specifici per implementare il context engineering. Librerie come LangChain, e piรน di recente framework come LangGraph, forniscono astrazioni per gestire memorie conversazionali, richiamare strumenti esterni, concatenare chiamate a modelli e controllare con precisione cosa viene passato nella finestra di contesto.

Questi strumenti aiutano i team a costruire agenti LLM piรน affidabili, dando la possibilitร  di possedere (cioรจ determinare esattamente) ogni parte del contesto e del flusso prima che lโ€™LLM produca una risposta. Si tratta di un cambio di prospettiva radicale: lโ€™obiettivo non รจ piรน ottenere una singola risposta sensazionale dal modello in condizioni ideali, ma garantire performance consistenti, ripetibili e governabilidel sistema AI nel suo complesso. In altre parole, non basta che lโ€™AI sappia generare testo, deve farlo in produzionesotto vincoli di affidabilitร , sicurezza e coerenza. Per riuscirci, ogni componente del contesto devโ€™essere progettato con rigore ingegneristico.

Va sottolineato che questo nuovo paradigma รจ multidisciplinare per natura. Il context engineering attinge allโ€™ingegneria del software classica (architettura di sistemi, API, gestione dello stato), ma anche al knowledge management (organizzare informazioni e conoscenza aziendale) e alla UX writing (per modellare il tono e lo stile delle interazioni). Richiede cioรจ di connettere mondi diversi: quello dei dati e della tecnologia con quello dei processi aziendali e dei contenuti. Nel prossimo paragrafo vedremo come ciรฒ impatta le organizzazioni e la cultura aziendale.

Implicazioni strategiche, organizzative e culturali

Il context engineering non รจ solo unโ€™evoluzione tecnica: rappresenta anche un cambiamento culturale nel modo in cui le aziende e i team approcciano i progetti di intelligenza artificiale. Tradizionalmente, lo sviluppo di software vedeva ruoli ben distinti โ€“ sviluppatori che scrivono codice, analisti che definiscono requisiti, esperti di dominio separati dai tecnici.

Con i sistemi AI basati su LLM, questi confini iniziano a sfumare. Progettare il contesto di unโ€™applicazione AI significa infatti, come osserva il professor Ethan Mollick della Wharton, dover: tradurre processi aziendali in flussi di dati strutturati; riflettere la cultura interna (il tono, il linguaggio, le aspettative) nel contesto fornito al modello; codificare la conoscenza tacita e il know-how operativo dellโ€™organizzazione in forma fruibile dallโ€™AI.

In altre parole, fare context engineering in unโ€™azienda equivale in parte a fare knowledge management avanzato. Occorre mappare il sapere dellโ€™organizzazione (documenti, policy, procedure, FAQ, ecc.), capire cosa serve davvero al modello nei vari scenari dโ€™uso, e strutturare queste conoscenze in modo che lโ€™AI possa utilizzarle efficacemente. Ciรฒ puรฒ significare creare nuove basi di conoscenza, ontologie, database di vettori per il semantic search, pipeline di retrievaldedicate. Significa anche farsi domande sulla cultura aziendale: ad esempio, vogliamo che il nostro assistente AI interno adotti un tono informale e creativo, oppure formale e conservativo? Quali valori e best practice interne vanno integrate come istruzioni comportamentali nel contesto? Tutto questo va deciso e codificato a monte, affinchรฉ il modello operi in linea con lโ€™identitร  dellโ€™azienda.

Le implicazioni organizzative sono dunque profonde. I team di sviluppo AI devono diventare interfunzionali: coinvolgere non solo ingegneri del machine learning, ma anche esperti del dominio specifico, data engineer, magari linguisti computazionali e figure di knowledge curator. รˆ una sfida che richiede collaborazione stretta tra chi conosce la tecnologia LLM e chi conosce il contesto di business. Inoltre, la leadership aziendale (CTO, CPO, responsabili innovazione) deve sposare questa visione: investire nella preparazione dei dati e dei contesti prima ancora che nel modello in sรฉ. Non a caso, si sente dire che โ€œnel mondo degli LLM, il contesto รจ la nuova interfaccia utenteโ€. Progettare queste nuove interfacce โ€“ invisibili allโ€™utente finale ma cruciali dietro le quinte โ€“ vuol dire in ultima analisi disegnare lโ€™identitร  operativa dellโ€™azienda nellโ€™era dellโ€™AI.

Dal punto di vista strategico, le aziende che sapranno eccellere nel context engineering avranno un chiaro vantaggio competitivo. Significa poter costruire assistenti virtuali che non allucinano risposte, perchรฉ hanno sempre i dati aggiornati e verificati a portata di mano. Significa offrire ai clienti esperienze AI personalizzate e coerenti con il brand, perchรฉ il modello โ€œrespiraโ€ la cultura aziendale che รจ stata immessa nel suo contesto. E significa poter scalare soluzioni AI in nuovi ambiti in modo piรน rapido, perchรฉ una volta creata lโ€™architettura di contesto, quella diventa un asset riutilizzabile e adattabile a diversi casi dโ€™uso. Non รจ un caso che alcuni commentatori sostengano che il context engineering sarร  la competenza piรน importante per gli AI engineer dโ€™ora in avanti. รˆ un nuovo campo su cui costruire metodologie, strumenti e best practice, un poโ€™ come lo รจ stato il DevOps per il software tradizionale. Sta giร  emergendo una comunitร  di pratica attorno a questi temi, segno di una trasformazione culturale in atto nel settore tecnologico.

Dal playground alla produzione: professionalizzare lโ€™AI

Un effetto tangibile di questa evoluzione รจ il passaggio da un approccio ludico-sperimentale con lโ€™AI (tipico dei primi tempi di ChatGPT) a un approccio ingegneristico e strategico. Quello che inizialmente era quasi un gioco di intuito โ€“ provare prompt su prompt finchรฉ โ€œsembra funzionareโ€ โ€“ oggi non รจ piรน sufficiente nรฉ appropriato per applicazioni in produzione. Il cosiddetto โ€œvibe codingโ€, ormai usato in tono ironico, ha mostrato i suoi limiti: lโ€™intuizione non scala, e sistemi basati su semplici prompt tweakati a mano risultano fragili, imprevedibili e difficili da manutenere.

Al contrario, il salto di qualitร  si ottiene spostandosi โ€œdal prompt al contesto, dal tool carino al prodotto solidoโ€. Ciรฒ significa dedicare in fase di progettazione lo stesso rigore che si avrebbe per qualsiasi altra architettura software mission-critical. In unโ€™app AI matura, ogni componente del contesto รจ pensato, implementato e testato: ad esempio, si verifica che il sistema di retrieval recuperi effettivamente i documenti piรน rilevanti; si affinano i prompt di sistema con policy chiare; si implementano controlli (guardrails) per evitare che errori si propaghino; si monitora la performance del modello su conversazioni lunghe per calibrare i meccanismi di sommario della memoria, e cosรฌ via. Tutto questo lavoro non รจ โ€œvisibileโ€ allโ€™utente finale, ma fa la differenza tra unโ€™AI che impressiona in una demo e una che genera valore reale e consistente quando usata ogni giorno da migliaia di utenti.

Per i decision maker, adottare il context engineering significa anche ragionare in termini di strategia dei dati. Bisogna chiedersi: di quali dati disponiamo e come li rendiamo fruibili al nostro AI? Come garantiamo che siano aggiornati e puliti? Quali conoscenze chiave (ad esempio, normative, linee guida interne, tone of voice) dobbiamo infondere nel sistema? Questo ragionamento avvicina il mondo dellโ€™AI a quello della gestione della conoscenza e dei processi aziendali. Progettare il contesto diventa unโ€™attivitร  che precede e indirizza lo sviluppo stesso del modello AI, spesso chiamata AI blueprint o sprint zero: prima di scrivere una riga di codice o di scegliere quale algoritmo utilizzare, si disegna lโ€™ecosistema informativo entro cui lโ€™AI dovrร  operare. รˆ qui che molte iniziative AI falliscono o hanno successo โ€“ una sorta di โ€œtrincea invisibileโ€ dove si vince o si perde la sfida dellโ€™intelligenza artificiale in azienda.

Infine, spostare lโ€™attenzione sul contesto aiuta a demistificare lโ€™AI. Ci ricorda che un LLM, per potente che sia, resta una macchina statistica che funziona in base ai dati che riceve in input. Pensare in termini di context engineering significa vedere lโ€™AI non piรน come una scatola magica, ma come un componente che va integrato in un sistema piรน ampio e controllabile.

Come ho scritto โ€œlโ€™era del prompt engineering ci ha insegnato a parlare con lโ€™AI; lโ€™era del context engineering ci sta insegnando a pensare insieme allโ€™AIโ€. In questa nuova era context-first, le frasi furbe contano meno della capacitร  di architettare sistemi intelligenti con le informazioni giuste al momento giusto. รˆ un cambiamento di prospettiva notevole: dallโ€™ottimizzazione delle singole frasi allโ€™ottimizzazione della conoscenza e dei processi.

Il contesto prima di tutto

Il context engineering si presenta come la naturale evoluzione โ€“ e superamento โ€“ del prompt engineering. Dove prima ci si concentrava sul come chiedere qualcosa allโ€™AI, ora lโ€™attenzione รจ su cosa lโ€™AI conosce e ha a disposizione quando gli viene posta una domanda, e come ottiene queste informazioni. Il contesto diventa la nuova interfaccia su cui progettare lโ€™esperienza AI. Chi riesce a padroneggiare questa interfaccia invisibile โ€“ strutturandola, orchestrandola e mantenendola con cura โ€“ costruisce di fatto il โ€œcuoreโ€ del sistema AI e ne determina il successo o il fallimento operativo.

Questa disciplina richiede un mix di competenze tecniche, strategiche e di dominio, e sta trasformando il modo in cui pensiamo lโ€™implementazione dellโ€™AI nelle organizzazioni. Il messaggio chiave รจ chiaro: prima di scegliere il modello da usare, bisogna progettare il contesto. Solo cosรฌ unโ€™intelligenza artificiale puรฒ davvero โ€œfare bene il proprio lavoroโ€ in modo ripetibile e affidabile. In un mondo in cui i modelli linguistici sono sempre piรน potenti e disponibili, la differenza la farร  chi saprร  alimentarli con il contesto migliore.

Su Gumroad il PDF completo di 78 pagine, sul Context Engineering, da acquistare e scaricare.

Lโ€™interfaccia รจ cambiata. E non tornerร  indietro.

InsideTheShift #2 โ€“ The Rise of Cognitive Interfaces

Per anni abbiamo progettato interfacce. Abbiamo disegnato schermate, flussi, pulsanti, menu. Abbiamo imparato a cliccare, navigare, selezionare. Abbiamo costruito ogni percorso utente partendo da una logica: lโ€™utente deve capire cosa fare, dove andare, cosa aspettarsi.

Ma oggi tutto questo sta cambiando. Cambia il concetto di interfaccia. Cambia il modo in cui comunichiamo con la tecnologia. E soprattutto, cambia lโ€™assunto di fondo: non รจ piรน lโ€™utente ad adattarsi al sistema, ma รจ il sistema che inizia ad adattarsi allโ€™utente.

Non parliamo piรน solo di accessibilitร  o user experience. Parliamo di interazione mediata da intelligenza artificiale. Parliamo di modelli linguistici che comprendono ciรฒ che chiediamo, che ci rispondono, che agiscono. E che lo fanno attraverso la conversazione, non lโ€™interfaccia grafica.

Dallโ€™interfaccia grafica allโ€™interfaccia cognitiva.

Questo รจ il tema che approfondisco in InsideTheShift #2, la mia newsletter settimanale.

Unโ€™analisi su un cambiamento silenzioso ma potentissimo: lโ€™interfaccia non รจ piรน uno schermo, รจ una conversazione. Lโ€™unitร  di misura dellโ€™interazione non รจ piรน il click, รจ lโ€™intento.ย Il passaggio dai menu ai modelli linguistici rappresenta un ribaltamento. Satya Nadella lo ha riassunto con una frase chiave: โ€œIl linguaggio umano รจ il nuovo strato dellโ€™interfaccia utenteโ€.

Non dobbiamo piรน sapere dove cliccare. Diciamo cosa vogliamo ottenere. E lโ€™AI esegue.

Dati, segnali e una nuova normalitร 

Il cambiamento รจ in atto, ed รจ misurabile.ย I modelli come ChatGPT sono stati adottati da oltre 100 milioni di utenti in poche settimane. Sempre piรน sviluppatori e designer lavorano con strumenti che rispondono a richieste scritte, che generano codice, prototipi, contenuti. Sempre piรน utenti si aspettano di poter โ€œparlareโ€ a un sistema, anzichรฉ navigare.

Stiamo passando da UX progettate come flussi, a esperienze costruite come comportamenti.

Non disegniamo piรน percorsi, ma progettiamo agenti.

Non pensiamo piรน in termini di input/output, ma di dialogo.

Progettare per lโ€™intento

Nel testo esploro cosa comporta tutto questo a livello tecnico, strategico e culturale.

Come cambia la UX.ย  Come evolvono i modelli di servizio.ย Cosa vuol dire design conversazionale, prompt design, agentic AI.

Parlo di modelli come orchestratori di API. Di agenti che agiscono. Di servizi che si trasformano in esperienze adattive.

Parlo di nuovi ruoli: AI strategist, prompt engineer, conversational designer.

Parlo di strumenti: framework, plugin, pattern che giร  oggi uso nei miei progetti per costruire queste interfacce del futuro.

Ma soprattutto, parlo di cosa significa tutto questo per le persone. Per le aspettative. Per la fiducia.

Perchรฉ ogni volta che cambia il modo in cui interagiamo con la tecnologia, cambia anche il modo in cui immaginiamo il possibile.

Verso interfacce invisibili

Weiser, nel 1991, diceva che โ€œle tecnologie piรน profonde sono quelle che scompaionoโ€.

Ecco: stiamo costruendo proprio questo.

Unโ€™interfaccia che non si vede, ma che si sente. Che ci accompagna. Che capisce.

Che, se progettata con attenzione, puรฒ diventare una protesi cognitiva, una leva di accessibilitร , uno strumento di inclusione e intelligenza diffusa.

Ma, se progettata male, puรฒ anche aumentare disuguaglianze, errori, distorsioni.

Serve responsabilitร . Serve visione.

InsideTheShift vuole essere un contributo in questa direzione.

Un punto fermo ogni 7gg circa, di mattina, alle 9.41, per leggere ciรฒ che cambia, con uno sguardo strategico, culturale, operativo.

Nel numero #2 della mia newsletter InsideTheShift esploro in dettaglio tutto questo, seguendo la mia struttura editoriale:

๐Ÿ“Š dati + ๐Ÿ’ก strategia + ๐Ÿง  cultura + ๐Ÿ”ญ scenari + ๐Ÿ“š risorse + ๐Ÿงฐ toolbox

๐Ÿ“ฌ รˆ online. Ogni lunedรฌ un nuovo shift, per chi vuole progettare il cambiamento invece di subirlo.

๐Ÿ‘‰ Leggi la versione integrale InsideTheShift #2


Dal Prompt Chaining al Tree of Thoughts

Qualche giorno fa ho scritto un approfondimento, partendo dal post di Nicola, sul tema del Prompt Chaining. Il post ha riscosso un discreto interesse come approccio e ha generato diverse discussioni su approcci e vantaggi. Tra queste interazioni ci sono stati due commenti in cui รจ emerso l’interesse per diversi approcci al prompting e ai diversi contesti in cui c’รจ bisogno di uno o altro approccio.

Il Prompt Engineering, tema interessante ma eccessivamente abusato in termini di narrativa, non รจ altro che “lโ€™arte” di formulare richieste efficaci ai modelli di intelligenza artificiale (AI) al fine di ottenere risultati utili e pertinenti. Negli ultimi tempi sono emersi diversi approcci avanzati per guidare i modelli linguistici generativi (Large Language Models, LLM) in modo piรน strategico, ottimizzato e finalizzato ad uno scopo preciso.

Uno di questi รจ il Prompt Chaining, di cui ho parlato nel mio articolo , in cui lโ€™output di ciascun prompt diventa lโ€™input del successivo. Questo consente di scomporre compiti complessi in passi piรน piccoli e gestibili, migliorando efficacia e accuratezza delle risposte del modello. Come scrivevo, il prompt chaining โ€œnon รจ solo una tecnica per istruire meglio lโ€™AI, ma puรฒ diventare una vera e propria architettura cognitivaโ€, un modo per strutturare il pensiero delle macchine in modo simile al nostro. In altri termini, si passa da unโ€™interazione estemporanea a una strategia conversazionale articolata in piรน fasi.

Il prompt chaining รจ parte di una piรน ampia famiglia di tecniche di prompt engineering sviluppate per migliorare il dialogo con i modelli AI. In questo approfondimento ho dato maggiore dettaglio alle principali tecniche โ€“ dal zero-shot e few-shot prompting, al chain-of-thought e al framework ReAct, fino a metodologie differenti come il self-consistency, Tree of Thoughts e RAG (Retrieval-Augmented Generation).

Per ognuna troverete i principi di funzionamento, i contesti di applicazione piรน efficaci, i vantaggi e i limiti, includendo esempi o scenari dโ€™uso pratici quando utili. Lโ€™obiettivo รจ fornire una panoramica tecnica ma accessibile a un pubblico eterogeneo di utilizzatori dellโ€™AI (su diversi tool), condividendo spunti applicativi e indicando come queste tecniche possano contribuire a unโ€™adozione piรน consapevole e proficua dellโ€™intelligenza artificiale nelle organizzazioni.

Prompt Chaining (Catena di Prompt)

Cosโ€™รจ e principi di base: Il Prompt Chaining consiste nel concatenare piรน prompt in sequenza, in modo che ogni fase guidi la successiva. Invece di porre al modello una singola richiesta molto complessa, si suddivide il compito in sotto-obiettivi: il modello produce un risultato parziale che viene poi utilizzato in un prompt successivo, e cosรฌ via. Questa tecnica si basa sul principio della decomposizione del problema: affrontare un โ€œelefanteโ€ un pezzo alla volta (parafrasando il detto, โ€œtagliare lโ€™elefante a pezzi e ragionare per passiโ€). Ad esempio, anzichรฉ chiedere direttamente โ€œScrivi un rapporto completo sullโ€™andamento del mercato AI nel 2025โ€, si puรฒ procedere per passi: prima chiedere una scaletta dei punti chiave, poi far approfondire ogni punto, infine richiedere una sintesi finale. Ogni prompt nella catena si concentra su un sotto-compito specifico mantenendo il contesto generale, e guida il modello passo dopo passo. In questo modo lโ€™AI โ€œpianificaโ€ internamente la soluzione, similmente a un flusso di lavoro umano strutturato.

Contesti di utilizzo efficaci: il prompt chaining รจ efficace quando il compito richiesto al modello รจ complesso, lungo o richiede diverse fasi logiche. Nella progettazione di contenuti articolati (es. corsi, documentazione, white paper), questa tecnica permette di mantenere coerenza e approfondimento senza sovraccaricare il modello con unโ€™unica richiesta monolitica. In ambito educativo o formativo, ad esempio, si puรฒ usare un approccio โ€œa catenaโ€ per sviluppare un corso: prima generare un elenco di moduli, poi i dettagli di ciascun modulo, poi esercizi per ogni modulo, ecc. Anche per analisi strategiche o problem solving multi-step, il chaining consente allโ€™AI di seguire un ragionamento articolato invece di tentare di dedurre tutto in un solo passaggio. Questa metodologia trova applicazione ogniqualvolta si desideri avere maggiore controllo sul processo con cui lโ€™AI arriva a una risposta, suddividendolo in tappe verificabili.

Vantaggi: scomponendo il problema, il prompt chaining riduce lโ€™ambiguitร  e distribuisce lo sforzo cognitivo del modello su piรน interazioni. Ne derivano output piรน accurati e coerenti, poichรฉ il modello puรฒ concentrarsi su un obiettivo specifico ad ogni passo. Lโ€™approccio iterativo consente di mantenere il contesto lungo tutta la conversazione e di raffinare progressivamente la risposta. Inoltre, ogni fase intermedia offre allโ€™utente umano lโ€™opportunitร  di correggere la rotta o aggiungere istruzioni, portando a un maggiore controllo sul risultato finale. Un ulteriore beneficio รจ legato allโ€™ottimizzazione delle risorse: invece di generare un lungo testo potenzialmente ridondante o fuori fuoco, lโ€™AI produce contenuti modulari piรน gestibili, ottimizzando lโ€™uso della finestra di contesto (token) e riducendo il rischio di output incoerenti dovuti a contesti troppo lunghi.

Limiti: Il prompt chaining richiede una certa pianificazione e abilitร  nel disegnare la sequenza di prompt. รˆ un processo piรน laborioso e dispendioso in termini di tempo e di chiamate al modello rispetto a un singolo prompt: ogni passo aggiuntivo comporta unโ€™interazione separata (con relativo costo, se si utilizza un API a pagamento, e latenza). Inoltre, lโ€™utente deve assicurarsi che il contesto venga passato correttamente da un prompt allโ€™altro (ad esempio riassumendo brevemente le informazioni rilevanti nel prompt successivo, se la memoria del modello รจ limitata). Un rischio รจ lโ€™errore propagato: se un passaggio intermedio genera unโ€™informazione errata o fuorviante, questa potrebbe propagarsi nelle fasi successive. Mitigare questo rischio richiede intervento umano (controllo degli output intermedi) o strategie per ripristinare il corretto contesto in corsa. Infine, come tutte le tecniche iterative, il chaining puรฒ portare a output eccessivamente prolissi se ogni passo non รจ ben focalizzato, รจ importante definire chiaramente gli obiettivi di ciascun sottoprompt.

Esempio pratico: Un esempio semplice di prompt chaining รจ la generazione di un articolo complesso. Invece di chiedere direttamente allโ€™AI lโ€™intero articolo, si puรฒ procedere cosรฌ:

  1. Prompt 1: โ€œElenca i principali trend del mercato AI nel 2025 di cui parlare in un articolo.โ€ โ€“ Output: lista di trend (es. adozione di LLM nelle imprese, regolamentazione AI, nuovi modelli open-source, ecc.).

  2. Prompt 2: โ€œPer ciascun trend identificato, forniscimi un breve paragrafo di spiegazione.โ€ โ€“ Output: paragrafi esplicativi per ogni punto della lista.

  3. Prompt 3: โ€œScrivi unโ€™introduzione generale allโ€™articolo che presenti lโ€™argomento e i trend che saranno discussi.โ€ โ€“ Output: introduzione coesa menzionando i trend.

  4. Prompt 4: โ€œUnisci il tutto in un articolo completo, assicurandoti che i paragrafi seguano lโ€™ordine dei trend presentati e aggiungi una conclusione.โ€ โ€“ Output: articolo finale strutturato e approfondito.

Ad ogni step, lโ€™utente puรฒ controllare e affinare i risultati (ad esempio, aggiungendo un trend dimenticato, o correggendo un paragrafo poco chiaro) prima di passare allo step successivo. Questo processo in catena assicura che il risultato finale sia piรน organico e accurato rispetto a una singola generazione โ€œone-shotโ€.

Zero-Shot Prompting

Cosโ€™รจ e principi di base: Lo Zero-Shot Prompting si riferisce alla capacitร  di un modello di linguaggio di eseguire un compito senza che gli siano forniti esempi espliciti nella richiesta. In pratica, al modello viene data solo unโ€™istruzione o domanda, confidando nelle conoscenze generali apprese durante lโ€™addestramento per produrre la risposta corretta. Si parla di โ€œzero-shotโ€ (zero esempi) perchรฉ il prompt non include alcuna dimostrazione o caso specifico. Ad esempio, se vogliamo che il modello traduca una frase, in zero-shot รจ sufficiente scrivere: โ€œTraduci in inglese: Oggi piove a dirotto.โ€ senza fornire esempi di traduzione. Il modello tenterร  comunque di eseguire il compito basandosi sulle sue conoscenze pregresse della lingua. Questo approccio sfrutta la generalizzazione del modello: i grandi modelli hanno visto talmente tanti dati durante lโ€™addestramento che spesso possono dedurre come svolgere un compito nuovo solo dalla descrizione testuale del compito stesso.

Contesti di utilizzo efficaci: Il zero-shot รจ la modalitร  piรน immediata di interazione e risulta efficace quando:

  • Il compito รจ semplice o comune, ad esempio traduzione, risposta a domande di cultura generale, riassunto di un testo breve, classificazione di sentiment di una frase, ecc., per cui il modello possiede giร  esperienza implicita. Ad esempio, un LLM puรฒ classificare il sentimento di โ€œQuesto film รจ uno spreco di tempoโ€ come negativo anche senza esempi, perchรฉ ha appreso dal corpus cosa significa esprimere un giudizio negativo.

  • Si dispone di poco contesto o dati da fornire al modello. In scenari in cui lโ€™utente non ha esempi concreti da inserire, sfruttare la conoscenza intrinseca del modello รจ lโ€™unica opzione.

  • Rapiditร  e versatilitร  sono prioritarie: il zero-shot permette di ottenere una risposta immediata senza preparare prompt complessi, ed รจ adatto in applicazioni in tempo reale o prototipazione veloce. Ad esempio, per avere una risposta rapida a โ€œChi era il presidente degli USA nel 1990?โ€ un prompt zero-shot diretto puรฒ bastare.

Vantaggi: I punti di forza del zero-shot prompting includono la semplicitร  e lโ€™efficienza. Non รจ necessario preparare esempi o dati di riferimento, il che fa risparmiare tempo e risorse, rendendo questo approccio subito applicabile in molti contesti. Inoltre, mostra la versatilitร  del modello: con unโ€™unica configurazione di addestramento, lโ€™LLM puรฒ affrontare unโ€™ampia gamma di compiti senza ulteriori interventi. In ambito operativo ciรฒ significa poter rispondere a richieste diverse (dalla scrittura creativa al coding) semplicemente cambiando lโ€™istruzione, senza dover riprogrammarlo. Un altro vantaggio รจ che si evita di biasare il modello con esempi potenzialmente fuorvianti: talvolta fornire esempi puรฒ indurre il modello a riprodurli pedissequamente; in zero-shot il modello genera ex novo basandosi solo sullโ€™obiettivo descritto.

Limiti: Lo zero-shot spesso soffre di minore accuratezza o specificitร  rispetto ad approcci con esempi. La mancanza di esempi di riferimento puรฒ portare il modello a interpretare la richiesta in modo diverso da quanto lโ€™utente intendeva, soprattutto se il prompt non รจ perfettamente chiaro. Cโ€™รจ una forte dipendenza dalla formulazione del prompt: una leggera ambiguitร  puรฒ condurre lโ€™AI fuori strada, non avendo esempi cui ancorarsi. Inoltre, in compiti piรน complessi o di nicchia, il modello potrebbe fornire risposte superficiali o sbagliate, poichรฉ senza esempi non ha indicazioni su come strutturare la soluzione. In sintesi, la qualitร  dellโ€™output รจ variabile: alcuni LLM molto avanzati (es. GPT-4) riescono sorprendentemente a fare ragionamenti zero-shot, ma modelli meno sofisticati potrebbero fallire senza qualche guida aggiuntiva.

Esempio pratico: Un utilizzo tipico del zero-shot รจ porre domande dirette al modello. Ad esempio: โ€œSpiega la differenza tra energia rinnovabile ed energia non rinnovabile.โ€ย  Senza fornire esempi, il modello dovrร  attingere alla sua conoscenza generale per articolare una spiegazione. Se il modello ha una buona base, risponderร  elencando cosa sono le energie rinnovabili (solare, eolica, ecc.) e non rinnovabili (combustibili fossili, nucleare tradizionale), evidenziando vantaggi e svantaggi, tutto basandosi sulla singola istruzione ricevuta. Se la domanda fosse piรน vaga (โ€œParlami dellโ€™energia.โ€), il rischio zero-shot รจ di ottenere una risposta generica o non centrata sullโ€™aspetto desiderato. Per questo, anche in zero-shot, spesso si cerca di rendere il prompt chiaro e specifico, ad esempio aggiungendo โ€œin modo conciso e focalizzato sugli aspetti ambientaliโ€. In assenza di esempi, ogni parola nel prompt conta per orientare la risposta.

Few-Shot Prompting

Cosโ€™รจ e principi di base: Il Few-Shot Prompting รจ una tecnica in cui al modello vengono forniti uno o piรน esempi della richiesta allโ€™interno del prompt, per guidarlo verso la risposta desiderata. In pratica, il prompt include sia lโ€™istruzione sia alcune coppie di input-output di esempio (tipicamente 1 a 5 esempi, da cui โ€œfewโ€). Ad esempio, per insegnare al modello a rispondere con un certo stile, potremmo fornire due Q&A di esempio e poi porre una nuova domanda simile. Questo approccio sfrutta la capacitร  del modello di apprendimento contestuale: grazie agli esempi, lโ€™LLM puรฒ dedurre il pattern di soluzione voluto e replicarlo per lโ€™input nuovo. Il modello, in sostanza, viene โ€œcalibratoโ€ sul momento tramite i prompt di esempio, senza necessitare di un addestramento esterno aggiuntivo.

Contesti di utilizzo efficaci: Il few-shot รจ indicato quando:

  • Il compito รจ specifico o poco comune e vogliamo mostrare al modello esattamente il formato o il ragionamento atteso. Ad esempio, per far generare titoli creativi in rima per articoli, potremmo dare 2โ€“3 esempi di titoli in rima.

  • Si dispone di esempi rappresentativi della richiesta. In scenari aziendali, spesso si hanno storici o set di dati di riferimento (es. FAQ con domande e risposte). Includendone alcune nel prompt, il modello comprenderร  meglio come deve rispondere in quello stile o dominio.

  • Precisione e coerenza sono critiche. Il few-shot puรฒ drasticamente migliorare la pertinenza delle risposte rispetto al zero-shot. In applicazioni come customer support automatizzato, fornire esempi di domande dei clienti e risposte appropriate puรฒ far sรฌ che il modello risponda in modo piรน accurato ai nuovi quesiti dei clienti (es. mostrando il tono e il livello di dettaglio giusto).

Vantaggi: Aggiungendo pochi esempi nel prompt, il modello si adatta rapidamente al contesto specifico, producendo risposte piรน accurate e contestuali. Si ottiene spesso una maggiore precisione perchรฉ il modello replica la logica o lo stile mostrato negli esempi. Il few-shot permette anche una certa flessibilitร : con un piccolo insieme di dati di esempio, si โ€œspostaโ€ lโ€™LLM su un dominio o task desiderato senza bisogno di costosi re-training o fine-tuning esterni. รˆ come fornire un mini-brief al modello: in base a pochi casi, capisce meglio cosa fare. Inoltre, gli esempi aiutano a ridurre ambiguitร  ed errori: se la domanda da risolvere puรฒ essere interpretata in modi diversi, mostrare un esempio toglie dubbi su quale interpretazione sia corretta (il modello tenderร  a imitare la soluzione data nellโ€™esempio).

Limiti: Il principale costo del few-shot รจ la necessitร  di curare esempi di qualitร . Preparare gli esempi pertinenti richiede tempo e competenza sul problema. Inoltre, inserire esempi nel prompt consuma spazio nella finestra di contesto del modello, limitando la lunghezza della richiesta o della risposta possibile (soprattutto con modelli con contesto ridotto). Cโ€™รจ poi la questione della varietร : se gli esempi forniti non coprono sufficientemente i diversi casi, il modello potrebbe generalizzare male. In alcuni casi puรฒ addirittura overfittare sugli esempi: ad esempio, se diamo 3 esempi tutti con la stessa risposta, il modello potrebbe rispondere sempre quella (anche quando non dovrebbe). รˆ dunque cruciale che gli esempi siano rappresentativi e diversificati. Un altro limite รจ che il modello potrebbe copiare parti dellโ€™esempio nella risposta (soprattutto se lโ€™input nuovo assomiglia molto a un esempio): questo puรฒ introdurre errori se lโ€™output dellโ€™esempio non si applica esattamente al nuovo caso. In sintesi, il few-shot bilancia un miglioramento di performance con un aumento di complessitร  nella progettazione del prompt.

Esempio pratico: Poniamo di voler usare lโ€™AI per classificare recensioni di prodotti come positive o negative. In zero-shot potremmo dire: โ€œEtichetta la seguente recensione come positiva o negativa: โ€˜Il prodotto funziona malissimo, sono molto delusoโ€™.โ€ Il modello potrebbe capire, ma con few-shot faremo meglio. Costruiamo il prompt con esempi:

  1. Prompt: Recensione: “Questo gadget รจ fantastico! Ha superato le mie aspettative.” Sentiment: Positivo. Recensione: “Purtroppo il dispositivo si รจ rotto dopo un giorno. Che spreco di soldi.” Sentiment: Negativo. Ora etichetta la seguente recensione “Il prodotto funziona malissimo, sono molto deluso.”

Fornendo questi esempi, lโ€™AI apprende dal contesto come svolgere il compito: vede il formato Recensione -> Sentiment e i criteri (nel primo caso entusiasmo = Positivo, nel secondo caso problema grave = Negativo). Di conseguenza risponderร  molto probabilmente โ€œNegativoโ€ per la recensione data, con maggiore affidabilitร  rispetto a zero-shot. Questo paradigma few-shot simula in miniatura quello che sarebbe un addestramento supervisionato, ma avviene interamente nel prompt.

Chain-of-Thought (CoT) Prompting

Cosโ€™รจ e principi di base: Il Chain-of-Thought (CoT) prompting รจ una tecnica avanzata in cui si induce il modello a svolgere un ragionamento passo-passo esplicito per arrivare alla soluzione. Invece di limitarsi a fornire direttamente la risposta finale, al modello viene richiesto (in modo implicito o esplicito) di โ€œpensare a voce altaโ€, elencando la sequenza logica di deduzioni o calcoli che conducono alla risposta. In pratica, il prompt incoraggia il modello a suddividere il problema complesso in passaggi intermedi risolvibili individualmente. Ciรฒ puรฒ avvenire tramite istruzioni come โ€œmostra il ragionamentoโ€ o con esempi di soluzione in cui viene illustrato il processo (โ€œPrima fai questo calcolo, poi questโ€™altro, infineโ€ฆโ€). Lโ€™idea alla base รจ che i LLM, se guidati a articolare un chain of thought, possano raggiungere una comprensione piรน profonda del problema e quindi risposte piรน corrette, simili a come un umano risolverebbe mostrando i calcoli su carta.

Contesti di utilizzo efficaci: Il CoT รจ particolarmente potente in compiti che richiedono logica, calcoli o multi-step reasoning:

  • Problemi matematici o aritmetici a piรน operazioni: ad esempio, risolvere problemi di testo (โ€œse Maria ha 5 mele e ne compra altre 3, quante mele ha?โ€) chiedendo al modello di procedere per passaggi (conta mele iniziali, aggiungi nuove mele, ecc.).

  • Puzzle o problemi di logica (indovinelli, sillogismi, deduzioni): far esplicitare al modello le informazioni date e i passi per arrivare alla conclusione aiuta ad evitare salti logici errati.

  • Domande di common sense o implicazioni: es. โ€œUn pallone bucato puรฒ rimbalzare?โ€ โ€“ inducendo il ragionamento (โ€œUn pallone bucato perde aria, senza aria non puรฒ rimbalzare, quindi noโ€) si aumenta la probabilitร  di correttezza su questioni non banali.

  • Pianificazione e scenari complessi: ad esempio chiedere al modello di elaborare una strategia marketing strutturata: col CoT si puรฒ ottenere che elenchi prima analisi, poi obiettivi, poi tattiche in ordine logico. In generale, il chain-of-thought รจ ideale in qualunque contesto dove una soluzione deve emergere da piรน step concatenati, permettendo al modello di โ€œconcentrarsiโ€ su un passo alla volta.

Vantaggi: Far esprimere al modello una catena di pensieri porta diversi benefici. Innanzitutto migliora la coerenza logica dellโ€™output: le risposte risultano piรน strutturate e fondate, soprattutto su problemi complessi che altrimenti il modello potrebbe affrontare in modo superficiale. Il CoT aiuta il modello a comprendere meglio la natura del problema, perchรฉ nel generare il ragionamento intermedio esso stesso โ€œriscopreโ€ i sotto-obiettivi necessari. Ciรฒ conduce in genere ad una maggiore accuratezza finale. Un altro vantaggio cruciale รจ la trasparenza: vedere il ragionamento passo-passo fornisce agli utenti umani insight sul perchรฉ il modello arriva a una certa risposta, rendendo piรน facile individuare eventuali errori o passi poco convincenti. Questo aumenta la fiducia e consente di intervenire, se necessario, su uno specifico passo (ad esempio correggendo un calcolo intermedio sbagliato). Inoltre, la tecnica CoT ha dimostrato di estendere le capacitร  dei modelli sui task di ragionamento: ricerche hanno mostrato che LLM di media dimensione, se istruiti a fare chain-of-thought, possono risolvere problemi che altrimenti sbaglierebbero, raggiungendo performance paragonabili a modelli piรน grandi non-CoT.

Limiti: Lโ€™uso di chain-of-thought richiede solitamente prompt piรน complessi e aumenta la lunghezza delle risposte, quindi puรฒ rallentare il tempo di risposta e consumare piรน token. Cโ€™รจ un overhead computazionale nel generare tutti i passi intermedi. Inoltre, la formulazione del prompt CoT deve essere accurata: non tutti i modelli seguono lโ€™istruzione di fare ragionamenti espliciti di default. Spesso si utilizzano frasi trigger (ad es. โ€œReason step by step:โ€) o esempi formattati in modo da indurre il comportamento. Se il prompt รจ mal concepito, lโ€™LLM potrebbe elencare passi poco utili o addirittura allucinare ragionamenti sbagliati. Un altro aspetto รจ che CoT, pur migliorando la logicitร , non garantisce infallibilitร : il modello potrebbe comunque compiere errori in uno step, e questi errori comprometteranno la risposta finale (garbage in, garbage out). In alcuni casi, soprattutto con modelli piรน piccoli, abbiamo visto ragionamenti fittizi , il modello produce un chain-of-thought che sembra coerente ma porta comunque a una risposta errata. Infine, non tutti i problemi richiedono CoT: per domande semplici, forzare un ragionamento dettagliato puรฒ essere inefficiente. Bisogna dunque decidere caso per caso se vale la pena attivare questa modalitร .

Esempio pratico: Consideriamo un problema matematico a parole: โ€œIn una fattoria ci sono 3 galline e 2 mucche. Quante zampe ci sono in totale?โ€. Un approccio chain-of-thought potrebbe essere innescato da un prompt come: โ€œRispondi passo-passo: prima calcola le zampe delle galline, poi delle mucche, e somma.โ€. Il modello allora potrebbe produrre:

  • โ€œOgni gallina ha 2 zampe. Ce ne sono 3, quindi 3ร—2 = 6 zampe di gallina. Ogni mucca ha 4 zampe. Ce ne sono 2, quindi 2ร—4 = 8 zampe di mucca. In totale le zampe sono 6 + 8 = 14.โ€ โ€“ Risposta: 14.

Qui vediamo il chain-of-thought esplicito. Senza questa guida, il modello potrebbe semplicemente dare una risposta (si spera 14), ma non mostrando il calcolo sarebbe difficile capire se lโ€™ha ottenuta per via corretta o per fortuna. Con CoT, anche se il numero finale fosse sbagliato, lโ€™utente puรฒ vedere dove il ragionamento ha fallito (ad esempio, se avesse calcolato male 3ร—2). Nellโ€™uso pratico, CoT รจ risultato determinante per migliorare task di matematica, logica e persino comprensione di testi complessi, al punto che รจ diventata una delle tecniche standard per sfruttare al meglio i LLM in scenari di reasoning avanzato.

ReAct (Reasoning + Acting)

Cosโ€™รจ e principi di base: ReAct รจ un paradigma che unisce il ragionamento (Reasoning) tipico del chain-of-thought con la capacitร  di agire (Acting) nellโ€™ambiente esterno. Proposto da Yao. nel 2022, il framework ReAct prevede che il modello generi sia tracce di ragionamento verbale sia azioni specifiche per il task in modo intercalato. In pratica, durante lโ€™elaborazione, lโ€™LLM alterna pensieri e azioni: i pensieri sono passi di ragionamento interni, le azioni sono operazioni compiute allโ€™esterno, come effettuare una ricerca, interrogare una base di conoscenza, eseguire un calcolo o chiamare unโ€™API. Questa interazione avviene ciclicamente: il modello pensa -> compie unโ€™azione -> ottiene unโ€™osservazione dallโ€™ambiente -> continua a pensare in base a quella nuova informazione, e cosรฌ via. Lโ€™idea chiave รจ che combinando ragionamento e azione, lโ€™AI possa iterare verso la soluzione integrando conoscenze esterne e aggiornando il proprio piano man mano.

Contesti di utilizzo efficaci: ReAct si rivela potente in scenari in cui il modello da solo non ha tutte le informazioni o capacitร  per completare il compito e deve interagire con strumenti o dati esterni. Ad esempio:

  • Question answering su conoscenze aggiornate: se chiediamo โ€œChi รจ lโ€™attuale CEO di <una certa azienda>?โ€, un LLM addestrato su dati vecchi potrebbe non sapere la risposta. Un agente ReAct potrebbe eseguire unโ€™azione di ricerca sul web, leggere la pagina trovata (osservazione), poi rispondere in base alle info aggiornate.

  • Risoluzione di problemi che richiedono calcoli o simulazioni: es. chiedere โ€œQual รจ la radice quadrata di 1048576?โ€ โ€“ invece di far affidamento sulle sue capacitร  matematiche (che possono essere limitate o soggette a errori), il modello ReAct potrebbe invocare una calcolatrice esterna come azione, ottenere il risultato e poi comunicarlo.

  • Interazione con ambienti o database: in un contesto di assistente personale, lโ€™AI potrebbe dover controllare il calendario, inviare email, o eseguire azioni nel mondo reale. ReAct fornisce un quadro per farlo: il modello decide unโ€™azione (ad es. โ€œApri calendarioโ€), lโ€™ambiente restituisce lโ€™esito (โ€œCalendario aperto, prossimi eventiโ€ฆโ€), il modello ragiona e decide la prossima mossa.

  • Task di decision-making complessi: ad esempio nella risoluzione di un mistero o di un gioco di avventura testuale, lโ€™agente ReAct puรฒ pianificare (ragionamento) e testare mosse (azione) esplorando attivamente il problema.

Vantaggi: Il principale vantaggio di ReAct รจ che supera i limiti di conoscenza chiusa del modello, permettendo accesso a informazioni aggiornate o specifiche durante la generazione. Questo riduce drasticamente il fenomeno delle allucinazioni: se il modello puรฒ verificare fatti tramite azioni (es. cercare su Wikipedia), รจ meno incline a inventare risposte. ReAct inoltre migliora lโ€™accuratezza fattuale e lโ€™affidabilitร  delle risposte, come dimostrato da esperimenti che hanno visto lโ€™agente ReAct superare approcci puramente basati su ragionamento o su azione isolate. Un altro benefit รจ la trasparenza e controllabilitร : poichรฉ il modello elenca i suoi pensieri e azioni, un osservatore umano puรฒ seguire passo passo il processo e intervenire se necessario (ad esempio, interrompere lโ€™esecuzione di unโ€™azione non voluta). In ambito applicativo, ReAct apre la strada a LLM โ€œagentiโ€ in grado di compiere operazioni utili: molti sistemi pratici (come i plugin di ChatGPT, o framework tipo LangChain) adottano proprio questo paradigma per far sรฌ che lโ€™AI consulti documenti, esegua codice o chiami servizi in base alla richiesta dellโ€™utente. In sintesi, ReAct aumenta la capacitร  di problem solving del modello combinando il meglio di due mondi: il ragionamento interno e lโ€™interazione con lโ€™esterno.

Limiti: Implementare ReAct รจ complesso. Richiede definire una sorta di protocollo che il modello segua nei prompt, ad esempio una sintassi per distinguere Thought (pensiero) e Action e Observation (risultato dellโ€™azione). Non tutti i modelli seguono facilmente questo schema โ€“ in genere si usano LLM molto obbedienti e capienti, e prompt di contesto con esempi di formato ReAct. Cโ€™รจ poi il tema della sicurezza: dare a un modello la possibilitร  di agire (eseguire codice, cercare online) comporta rischi; bisogna porre limiti sulle azioni possibili onde evitare comportamenti indesiderati. Un altro limite รจ la dipendenza dalla qualitร  degli strumenti esterni: se il sistema di ricerca fornisce risultati sbagliati o se unโ€™API chiamata fallisce, lโ€™agente potrebbe andare in stallo o prendere decisioni errate. Inoltre, orchestrare ragionamenti e azioni iterativamente puรฒ essere costoso in termini computazionali โ€“ ogni ciclo ragionamento/azione equivale a piรน chiamate modello + costi delle operazioni esterne. Vi รจ anche una maggiore possibilitร  di bug logici: lโ€™agente potrebbe entrare in loop (continuare a cercare senza mai rispondere) o tentare azioni non supportate se il prompt non lo vincola bene. Infine, leggere e interpretare le osservazioni (ad esempio il contenuto di una pagina web) รจ vincolato alla finestra di contesto: bisogna spesso riassumere o filtrare i dati esterni prima di reinserirli nel prompt successivo.

Esempio pratico: Un caso concreto di ReAct รจ un assistente QA con accesso al web. Supponiamo lโ€™utente chieda: โ€œQuanti astronauti sono attualmente sulla Stazione Spaziale Internazionale?โ€. Un semplice LLM addestrato fino al 2021 non ha questa informazione aggiornata. Un agente ReAct potrebbe operare cosรฌ:

  • Thought: โ€œLa domanda richiede un dato aggiornato. Devo cercarlo online.โ€

  • Action: Search("numero astronauti attualmente ISS")

  • Observation: (il sistema di ricerca restituisce un risultato: una pagina Wikipedia o news con lโ€™informazione).

  • Thought: โ€œHo trovato un risultato che sembra pertinente, ora lo leggo.โ€

  • Action: Open(URL_pagina)

  • Observation: (testo della pagina: โ€œโ€ฆ attualmente sulla ISS ci sono 7 astronauti โ€ฆโ€).

  • Thought: โ€œOra ho lโ€™informazione, posso formulare la risposta.โ€

  • Final Answer: โ€œAl momento attuale, ci sono 7 astronauti a bordo della ISS.โ€

Durante questo processo, lโ€™AI ha ragionato sui passi necessari e utilizzato strumenti (search e open web) per colmare le sue lacune di conoscenza. Tutto ciรฒ avviene in pochi secondi e lโ€™utente finale vede solo la risposta corretta con eventualmente la fonte. Questo esempio illustra come ReAct renda lโ€™AI proattiva e affidabile per domande altrimenti fuori portata per un modello statico.

Nota: poichรจ mi รจ stato chiesto in aula, anche se il processo sembra simile al comportamento di ChatGPT 4o , parliamo di cose diverse:

  • ReAct = paradigma di prompting (schema per orchestrare ragionamenti + azioni).
  • ChatGPT-4o = modello multimodale, che puรฒ integrare o ispirarsi a logiche ReAct ma non รจ basato su di esso.

Self-Consistency

Cosโ€™รจ e principi di base: La Self-Consistency รจ una tecnica avanzata che mira a migliorare la correttezza delle risposte del modello attraverso un approccio di aggregazione statistica dei ragionamenti. Proposta da Wang (2022), nasce come metodo per sostituire il tradizionale greedy decoding usato nel chain-of-thought con qualcosa di piรน robusto. In pratica, invece di generare una singola catena di ragionamento (che potrebbe essere fallace), si fa in modo che il modello ne generi molteplici varianti indipendenti, quindi si osservano le diverse risposte finali e si sceglie quella piรน comune โ€“ presumendo che sia la piรน correttapromptingguide.ailearnprompting.org. รˆ un poโ€™ come porre la stessa domanda a tanti โ€œcloniโ€ del modello e poi fare una votazione di maggioranza sulle risposte. Lโ€™idea รจ che il modello, seguendo vie diverse di pensiero grazie alla casualitร  nel processo di generazione, potrebbe arrivare a risposte differenti; tuttavia, se cโ€™รจ una risposta oggettivamente corretta, รจ probabile che molte di quelle catene di pensiero convergano su di essa, rendendola la risposta piรน frequente.

Contesti di utilizzo efficaci: La self-consistency si applica in particolare a compiti con una sola risposta corretta ben definita, dove piccoli errori nel ragionamento possono portare a risposte sbagliate. Ad esempio:

  • Problemi di matematica e aritmetica: un LLM anche con chain-of-thought puรฒ occasionalmente errare un calcolo. Facendogli risolvere lo stesso problema piรน volte (con variazioni stocastiche nel generare i passaggi), possiamo mitigare lโ€™errore scegliendo il risultato piรน frequente, che statisticamente sarร  quello giusto nella maggioranza dei casi.

  • Logica e common sense: domande vero/falso, causali o di completamento logico dove il modello potrebbe indecidersi. Esempio: โ€œSe ieri era lunedรฌ, che giorno sarร  domani?โ€. Alcune catene di ragionamento difettose potrebbero dare risposte errate, ma la maggior parte convergerร  su mercoledรฌ. La self-consistency prende quel consenso.

  • QA a risposta chiusa: domande di conoscenza generale con risposta univoca. Se il modello รจ incerto puรฒ produrre risposte diverse (soprattutto con temperature piรน alte), ma con self-consistency possiamo filtrare il rumore.

  • Situazioni in cui si valuta la affidabilitร : la tecnica permette di assegnare una sorta di โ€œconfidenceโ€ alla risposta scelta (data appunto dalla percentuale di catene di pensiero che lโ€™hanno prodotta). Questo puรฒ essere utile per sapere quando il modello รจ incerto (es. se cโ€™รจ spaccatura tra due risposte, forse serve intervento umano).

Vantaggi: La self-consistency ha mostrato un netto aumento delle prestazioni del chain-of-thought su molti task di ragionamento complesso. Aggregando i risultati di molteplici chain, si elimina lโ€™influenza di ragionamenti outlier o casuali: lโ€™effetto รจ simile a quello di una committee di esperti che discutono, dove lโ€™errore di uno puรฒ essere compensato dal corretto ragionamento di altri. In pratica, si riduce la varianza delle risposte del modello, ottenendo output piรน stabili e corretti. Sulle domande aritmetiche e di logica, questo metodo ha portato a risolvere correttamente problemi che un singolo CoT spesso sbagliava. Un altro beneficio รจ che non richiede modifiche allโ€™addestramento del modello: รจ una tecnica di decoding, quindi applicabile in post-processing a qualunque LLM. Inoltre, fornisce una misura di sicurezza: se tutte le 10 catene di ragionamento danno risposte diverse, chiaramente il modello non รจ affidabile su quella query โ€“ informazione utile per decidere di non fidarsi o di riformulare la domanda.

Limiti: La self-consistency aumenta il costo computazionale in modo lineare con il numero di ragionamenti generati: se facciamo 10 โ€œshotโ€ di ragionamento per ogni domanda, stiamo usando 10 volte il modello. Questo la rende onerosa in situazioni di produzione a larga scala, salvo ottimizzazioni. Inoltre, scegliere la risposta piรน frequente funziona bene quando effettivamente cโ€™รจ una risposta dominante corretta; ma se la domanda รจ ambigua o aperta, il concetto di risposta โ€œconsistenteโ€ perde significato. Ad esempio, su una domanda aperta (es. โ€œQual รจ un buon titolo per un romanzo di fantascienza?โ€), le risposte potranno essere tutte diverse e non ce nโ€™รจ una โ€œmiglioreโ€ oggettivamente โ€“ in questi casi la self-consistency non si applica (o potrebbe addirittura essere controproducente scegliendo una risposta generica). Va notato poi che la qualitร  delle catene di pensiero iniziali รจ fondamentale: se il modello ha forti bias o lacune e tende a sbagliare sistematicamente un certo tipo di problema, generare piรน ragionamenti non aiuterร  (tutti convergeranno sulla risposta sbagliata!). Quindi la self-consistency aiuta soprattutto quando il modello ha competenza sufficiente ma puรฒ incorrere in errori casuali. Infine, tecnicamente serve poter campionare diverse risposte: ciรฒ implica impostare una temperatura di generazione > 0 e magari usare nucleus sampling per ottenere sufficiente diversitร  nelle chain โ€“ parametri che vanno tarati con cura per bilanciare diversitร  e qualitร .

Esempio pratico: Immaginiamo di sottoporre al modello un piccolo indovinello matematico: โ€œQuando avevo 8 anni, mio fratello ne aveva la metร . Ora che ho 14 anni, quanti anni ha mio fratello?โ€. Molti LLM tendono a rispondere frettolosamente โ€œ7โ€ (sbagliato) se non ragionano bene. Con self-consistency, faremmo generare al modello magari 5 diverse spiegazioni/soluzioni. Esempio di possibili catene:

  1. โ€œFratello aveva 4 quando io 8. La differenza etร  รจ 4. Ora ho 14, fratello 10.โ€ โ†’ Risposta: 10.

  2. โ€œDifferenza di 4 anni. A 14 anni, fratello 14-4=10.โ€ โ†’ Risposta: 10.

  3. โ€œIo 8, lui 4. Gap 4. Io 14, lui 14-4=10.โ€ โ†’ Risposta: 10.

  4. โ€œSe fratello metร  di 8, aveva 4. Ora 14 e fratello 4+ (14-8)=10.โ€ โ†’ Risposta: 10.

  5. โ€œFratello etร  attuale? Forse 7.โ€ โ†’ Risposta: 7.

Notiamo che 4 catene su 5 danno risposta 10, una dร  7. Facendo majority voting, la risposta consistente รจ 10 (che รจ quella corretta). In questo modo abbiamo evitato lโ€™errore della catena #5. In effetti, studi hanno osservato che la majority vote di piรน catene aumenta notevolmente lโ€™accuratezza in problemi aritmetici e di logica rispetto a singola risposta CoT. Naturalmente, รจ importante che ogni catena sia indipendente: tipicamente si ottiene ciรฒ ripetendo la query con un diverso seed stocastico o fondendo la richiesta in prompt diversi (variazioni nellโ€™esposizione del problema per stimolare percorsi differenti). La self-consistency incarna un principio semplice: piรน voci possono essere meglio di una, quando si tratta di affidarsi a un AI per ragionare.

Tree of Thoughts (ToT)

Cosโ€™รจ e principi di base: Il Tree-of-Thoughts (ToT) รจ un framework di prompting che generalizza lโ€™idea del chain-of-thought espandendola in forma di albero decisionale. Invece di sviluppare un singolo percorso lineare di ragionamento, il modello esplora piรน possibili ramificazioni di pensiero da uno stesso stato, un poโ€™ come valutare diverse strade per risolvere un problema. Questo simula strategie cognitive umane in cui, di fronte a un problema complesso, consideriamo varie ipotesi o sottosoluzioni parallele prima di impegnarci in una. Nel prompting ToT, ad ogni step il modello puรฒ generare diversi โ€œpensieriโ€ alternativi (nodi figli), costruendo cosรฌ un albero di stati. Si definiscono criteri per valutare i pensieri (ad esempio tramite una funzione di valutazione o chiedendo al modello di dare un punteggio a ciascuno) e una politica per esplorare lโ€™albero (in profonditร , in ampiezza, con tagli potati dei rami meno promettenti). Questo approccio incorpora anche meccanismi come il lookahead (guardare avanti alcuni passi per stimare dove porta un certo ramo) e la giร  citata self-consistency per valutare lโ€™affidabilitร  di un ramo tramite generazioni multiple. In breve, ToT รจ ispirato alle tecniche di ricerca AI classiche (come gli algoritmi di tree search) applicate allโ€™ambito generativo: il prompt engineering diventa orchestrazione di un search tree di pensieri.

Contesti di utilizzo efficaci: Il Tree-of-Thoughts รจ indicato per problemi di deliberate problem solving, ovvero situazioni in cui:

  • Il percorso verso la soluzione non รจ unico o scontato e potrebbe richiedere di provare varie strade. Ad esempio, puzzle complessi, labirinti logici, giochi tipo scacchi o enigmi di pianificazione.

  • รˆ possibile valutare parzialmente una soluzione prima di completarla. Ad esempio, nella scrittura creativa ramificata: generare diversi possibili proseguimenti di una storia e poi scegliere quello piรน interessante per continuare la narrazione.

  • Decision making con branching: scenari in cui ad ogni decisione ne conseguono altre (tipo choose your own adventure). Un sistema ToT puรฒ esplorare diverse sequenze di decisioni e identificare lโ€™outcome ottimale secondo un certo criterio.

  • Problemi che beneficiano di tentativi ed errori: in un chain-of-thought lineare, un errore incorrerebbe e bloccherebbe il risultato; in ToT, se un ramo fallisce, se ne possono percorrere altri. Ad esempio, risolvere un rompicapo dove bisogna combinare mosse diverse: lโ€™AI puรฒ provare un certo ordine di mosse (ramo A) e se porta a un vicolo cieco, tornare indietro e provare un ordine diverso (ramo B).

Vantaggi: Il ToT aumenta notevolmente la capacitร  esplorativa del modello. Invece di vincolarsi a un singolo ragionamento che potrebbe essere subottimale, lโ€™AI puรฒ considerare molteplici alternative, aumentando la probabilitร  di trovare una soluzione corretta o creativa. Questo porta ad una maggiore efficacia nei compiti di problem solving generali. Inoltre, consente di implementare comportamenti di backtracking: se un certo filone di pensiero non funziona, lโ€™agente puรฒ tornare a un nodo precedente e percorrere un altro ramo, un poโ€™ come farebbe un programmatore nel debug di un algoritmo o una persona nel risolvere un puzzle. Il risultato finale รจ che il modello con ToT puรฒ risolvere problemi che richiedono tentativi multipli, laddove un CoT lineare fallirebbe se il primo tentativo รจ errato. Un altro beneficio รจ la possibilitร  di inserire heuristiche di valutazione: ad esempio, per ogni stato intermedio si puรฒ far valutare al modello quanto รจ vicino alla soluzione o se le condizioni necessarie sono ancora soddisfatte. Queste euristiche guidano la ricerca nellโ€™albero in modo piรน intelligente, concentrando gli sforzi sui rami promettenti. In letteratura si รจ visto che ToT puรฒ combinare con successo ragionamento e ricerca strutturata, portando lโ€™AI piรน vicina a un processo deliberativo umano nel risolvere problemi complessi. La possibilitร  di lookahead e di rivedere decisioni rende le soluzioni piรน ottimizzate e ponderate.

Limiti: Il rovescio della medaglia รจ la complessitร  computazionale: unโ€™esplorazione combinatoriale di pensieri cresce esponenzialmente se non limitata. Bisogna definire attentamente il branching factor (quanti pensieri alternativi generare per step) e la depth massima dellโ€™albero, altrimenti si rischia unโ€™esplosione di possibilitร  ingestibili. Anche con euristiche, il costo puรฒ essere molto elevato per problemi appena un poโ€™ piรน grandi. Un altro limite รจ che orchestrare un ToT richiede un controllo fine che oggi non รจ nativamente supportato dai modelli: tipicamente si devono scrivere script esterni che interfacciano col modello generando e valutando i nodi. Questo รจ piรน complesso di un semplice prompt singolo o di un chain-of-thought lineare. Inoltre, la qualitร  dipende fortemente da come viene progettata la funzione di valutazione dei rami: se la valutazione รจ sbagliata, il modello potrebbe scartare il ramo giusto e seguire quelli sbagliati (analogia: local minima in una ricerca). Dal punto di vista dellโ€™usabilitร , ToT rende il comportamento dellโ€™AI meno prevedibile in termini di tempo di risposta (potrebbe finire molto presto se trova subito un ottimo ramo, oppure esplorare a lungo se indecisa). Infine, per alcuni task creativi troppo aperti, la struttura ad albero puรฒ essere eccessiva: conviene in problemi con un obiettivo chiaro da raggiungere, meno in quelli dove non cโ€™รจ un โ€œgoalโ€ definito. In sintesi, il ToT รจ molto potente ma va applicato con criterio a problemi che ne giustificano la complessitร  e laddove altre tecniche piรน semplici (CoT, self-consistency) non bastano.

Esempio pratico: Un esempio intuitivo puรฒ essere un gioco di labirinto testuale: il modello deve trovare lโ€™uscita descrivendo passo a passo il percorso. Con un chain-of-thought tradizionale, lโ€™AI potrebbe fare un tentativo lineare e se sbaglia strada arrivare a un vicolo cieco senza sapere come โ€œtornare indietroโ€. Con Tree-of-Thoughts, invece, lโ€™approccio sarebbe:

  • Stato iniziale: stanza di partenza.

  • Pensieri possibili: โ€œvai a sinistraโ€, โ€œvai a destraโ€, โ€œvai avantiโ€.

    • Se โ€œvai a sinistraโ€ porta a un vicolo cieco (dopo qualche passo di esplorazione), quel ramo viene chiuso.

    • Si torna al nodo iniziale e si prova โ€œvai a destraโ€.

  • Si esplorano cosรฌ diversi percorsi come rami. Magari โ€œvai a destraโ€ -> โ€œpoi avantiโ€ -> โ€œpoi sinistraโ€ porta allโ€™uscita. Il sistema lo individua come ramo di successo.

Durante la ricerca, il modello puรฒ avere una euristica: ad esempio, ogni volta che descrive la posizione attuale, puรฒ valutare se sembra piรน vicina allโ€™uscita (magari lโ€™uscita รจ descritta come โ€œluce visibileโ€ e solo in alcuni rami appare questo dettaglio). Usando questa valutazione, lโ€™algoritmo puรฒ potare i rami che sembrano allontanarsi dallโ€™uscita e approfondire quelli promettenti. In ambito accademico, Yao et al. (2023) hanno dimostrato che Tree-of-Thoughts puรฒ risolvere puzzle e problemi di pianificazione che i normali LLM faticano a completare, evidenziando come questa tecnica renda lโ€™AI piรน vicina a un problema solver generale deliberativo. Anche se attualmente รจ una frontiera sperimentale, illustra il potenziale delle future interfacce di prompt engineering: non solo chat o singole richieste, ma vere e proprie esplorazioni guidate delle capacitร  del modello.

Retrieval-Augmented Generation (RAG)

Cosโ€™รจ e principi di base: La Retrieval-Augmented Generation (RAG) รจ una tecnica che combina i modelli generativi con sistemi di recupero di informazioni esterne per migliorare accuratezza e attualitร  delle risposte. In un flusso RAG tipico, alla domanda dellโ€™utente lโ€™AI effettua prima una ricerca in una base di conoscenza (database, documenti, web, ecc.) per recuperare i contenuti piรน pertinenti, e poi genera la risposta condizionata su quei contenuti. In altre parole, il modello non si affida solo alla conoscenza immagazzinata nei propri parametri, ma la integra con informazioni fresche o specifiche prelevate al momento. Questa tecnica puรฒ essere vista come un โ€œopen book approachโ€ in cui il modello ha un libro aperto (la knowledge base) da cui puรฒ consultare i fatti prima di rispondere, invece di rispondere โ€œa memoriaโ€. RAG non รจ un singolo algoritmo ma unโ€™architettura: tipicamente coinvolge un componente di retriever (spesso un motore di ricerca semantica o un indice vettoriale) e un componente di reader/generator (lโ€™LLM) che utilizza i risultati della ricerca per formulare lโ€™output.

Contesti di utilizzo efficaci: RAG รจ indicato praticamente ogni volta che:

  • Si richiedono informazioni fattuali aggiornate o di dominio specifico che il modello potrebbe non conoscere di suo. Ad esempio domande su eventi accaduti dopo la data di addestramento del modello (es: โ€œChi ha vinto lโ€™Oscar come miglior film nel 2024?โ€), o domande molto specialistiche (es: โ€œQual รจ la formula chimica del tal farmaco presente nel database X?โ€).

  • Document QA: lโ€™utente vuole interrogare una collezione di documenti (manuali, contratti, articoli scientifici). Un sistema RAG puรฒ cercare nei documenti rilevanti e poi rispondere citando le parti trovate.

  • Chatbot aziendali su conoscenza interna: per costruire un assistente che risponde su policy aziendali, schede prodotto, dati interni, รจ impensabile addestrare ex-novo un modello su quei dati (troppo costoso e rischioso). RAG consente di mantenere un corpus di documenti aziendali e far sรฌ che lโ€™AI li consulti al volo per rispondere ai dipendenti o clienti con riferimenti precisi.

  • Assistenza decisionale: in cui vogliamo che lโ€™AI fornisca non solo unโ€™opinione, ma anche le fonti. Esempio: โ€œMi consigli un investimento azionario?โ€ โ€“ un assistente RAG potrebbe recuperare gli ultimi dati di mercato e notizie sulle aziende prima di elaborare una risposta, cosรฌ da essere fondato su evidenze.

Vantaggi: Il RAG migliora significativamente lโ€™accuratezza e lโ€™affidabilitร  delle risposte, perchรฉ le ancora su fonti reali. Questo riduce le allucinazioni: invece di inventare, il modello puรฒ dire cose come โ€œSecondo <documento X> โ€ฆโ€ riportando contenuti veritieri. Un grande vantaggio รจ la capacitร  di aggiornamento: la knowledge base puรฒ essere costantemente aggiornata (pensiamo alle notizie del giorno, o ai dati di vendita settimanali) senza dover ri-addestrare il modello AI. Ciรฒ risolve uno dei limiti principali degli LLM statici, ossia la loro conoscenza ferma alla data di training. Inoltre, RAG consente trasparenza e verificabilitร : spesso i sistemi RAG forniscono le fonti a corredo della risposta (ad esempio citazioni o link ai documenti da cui hanno tratto lโ€™informazione). Questo รจ fondamentale per la fiducia: lโ€™utente puรฒ controllare e confermare se la risposta รจ supportata da fonti autorevoli. Dal punto di vista pratico, RAG รจ efficiente: evita di dover ingurgitare nel prompt una mole enorme di contesto (si recupera solo ciรฒ che serve) e scala meglio, perchรฉ si puรฒ aumentare il knowledge store senza appesantire il modello stesso. Infine, RAG diminuisce il bisogno di training continuo dellโ€™LLM su nuovi dati: lโ€™azienda puรฒ mantenere un repository delle informazioni e lโ€™LLM rimane generale, interrogando quel repository. Ciรฒ comporta benefici economici (meno fine-tuning) e anche di sicurezza: i dati sensibili rimangono nel database e non necessariamente dentro i pesi del modello, riducendo il rischio che lโ€™AI li โ€œtrapeliโ€ in output inappropriati.

Limiti: Un sistema RAG รจ piรน complesso di un modello standalone: bisogna avere un buon modulo di retrieval. Se la ricerca fallisce (ad esempio non trova i documenti giusti o recupera testi irrilevanti), la generazione sarร  scadente. Quindi, la qualitร  delle risposte dipende fortemente dalla qualitร  dei dati e dellโ€™indicizzazione. Inoltre, lโ€™LLM deve essere capace di integrare bene le informazioni recuperate: cโ€™รจ il rischio che ignori le fonti (specialmente se non opportunamente istruito) e dia comunque una risposta di fantasia, oppure che le usi male (ad esempio citando un fatto fuori contesto). Bisogna quindi affinare i prompt in modo che il modello โ€œlegga e utilizziโ€ effettivamente i documenti forniti. Unโ€™altra sfida รจ gestire informazioni contraddittorie: se il retriever pesca documenti discordanti, il modello potrebbe confondersi o dover decidere quale รจ corretto โ€“ cosa non banale. Sul piano computazionale, cโ€™รจ un overhead dovuto al retrieval (che puรฒ implicare ricerca full-text o vettoriale su larga scala) e alla necessitร  di inserire i testi trovati nel prompt di generazione (consumando token). Per knowledge base piccole รจ trascurabile, ma su scala web o di grandi dataset ciรฒ richiede infrastrutture robuste (motori di ricerca interni, embedding semantici, ecc.). Dal punto di vista dellโ€™utente, RAG introduce una dipendenza: serve mantenere aggiornata e di qualitร  la base di conoscenza, il che comporta un lavoro continuo (ad esempio upload di nuovi documenti, pulizia di quelli obsoleti). In sintesi, RAG sposta parte del problema dallโ€™AI ai dati: โ€œgarbage in, garbage outโ€ rimane vero โ€“ se i documenti sono sbagliati o mancanti, lโ€™AI non potrร  fare miracoli.

Esempio pratico: Un esempio comune รจ lโ€™integrazione di GPT con Wikipedia. Immaginiamo una domanda: โ€œQual รจ la capitale piรน popolosa del mondo e qual รจ la sua popolazione?โ€. Un LLM standard potrebbe sapere che รจ Tokyo (metropoli) o Beijing a seconda di come interpreta, ma potrebbe confondersi o non avere dati precisi di popolazione. Un sistema RAG farebbe:

  1. Query di ricerca: estrarre le keyword โ€œcapitale piรน popolosa mondo popolazioneโ€ e cercare in Wikipedia (o in un indice apposito).

  2. Documenti recuperati: ad esempio la pagina โ€œTokyoโ€ o una classifica di cittร  per popolazione.

  3. Prompt generativo: fornire allโ€™LLM un contesto tipo: โ€œUsa le seguenti informazioni per rispondere: [estratto della pagina Tokyo con dati popolazione] [estratto pagina sulle megalopoli] Domanda: Qual รจ la capitale…?โ€.

  4. Risposta generata: โ€œLa capitale piรน popolosa del mondo รจ Tokyo, con una popolazione di circa 37 milioni di abitanti nella sua area metropolitana.โ€ (Lโ€™AI include magari la citazione della fonte se configurato per farlo).

Notiamo che la risposta รจ ora grounded: lโ€™AI non ha inventato il dato, lโ€™ha preso dalla fonte. Ciรฒ รจ verificabile e, salvo errore nella base, corretto. In questo caso RAG ha permesso al modello di superare un limite (i dati demografici esatti) recuperando lโ€™informazione aggiornata. Sistemi come Bing Chat, il motore di ricerca di Bing con GPT-4, funzionano essenzialmente in questo modo: eseguono ricerche sul web e poi generano risposte combinando i risultati, citando le fonti. Anche in ambito enterprise, soluzioni di cognitive search e assistenti su documenti aziendali adottano RAG per garantire che lโ€™AI dica cose supportate dai documenti forniti. In definitiva, RAG rappresenta un approccio pragmatico per unire la capacitร  generativa dei LLM con la precisione dei sistemi di ricerca, ottenendo il meglio da entrambi.

Ci sono prompt per tutto, ma non un prompt per tutti.

Le tecniche di prompt engineering, dal prompt chaining alle varianti zero-shot e few-shot, fino ai metodi di ragionamento avanzati come chain-of-thought, ReAct, self-consistency, tree-of-thoughts e allโ€™integrazione con fonti esterne via RAG, mostrano che oggi abbiamo a disposizioen una sorta di cassetta degli attrezzi per ottenere il massimo dai modelli di intelligenza artificiale.

Ciascuna tecnica ha i propri punti di forza e i propri ambiti dโ€™elezione, ma tutte condividono un principio fondamentale: guidare e strutturare lโ€™interazione con lโ€™AI in modo da allineare lโ€™output agli obiettivi dellโ€™utente. In un certo senso, il prompt engineering ci insegna che porre le giuste domande (e farlo nel modo giusto) รจ tanto importante quanto la potenza del modello stesso.

Dal punto di vista strategico, il ruolo del prompt engineering appare sempre piรน centrale per unโ€™adozione consapevole dellโ€™AI.

Senza tecniche adeguate, un modello generativo rischia di essere percepito come una โ€œscatola magicaโ€ dalle risposte imprevedibili, il che ne limita la fiducia e lโ€™utilitร . Al contrario, approcci come il prompt chaining trasformano lโ€™AI in un collaboratore logico, che segue processi trasparenti e verificabili, sui quali possiamo intervenire in itinere. Questo approccio aumenta la fiducia degli utenti e amplifica il valore dellโ€™AI nellโ€™operativitร  quotidiana, perchรฉ si passa da output grezzi a risultati piรน affidabili e raffinati.

In sostanza, il prompt engineering unisce il meglio del pensiero umano (analitico, strutturato, consapevole degli obiettivi) con la velocitร  e versatilitร  di calcolo dellโ€™IA, offrendo il meglio di entrambi i mondi.

Per capitalizzare queste opportunitร , diventa importante sviluppare nuove skill conversazionali e progettuali:

  • Conversazionali perchรฉ interagire con unโ€™AI รจ un poโ€™ come dialogare in un linguaggio speciale: saper formulare richieste precise, dare il giusto contesto, suddividere i problemi e persino โ€œpensareโ€ in termini utili per la macchina sono abilitร  da coltivare.
  • Progettuali perchรฉ occorre saper progettare i prompt e i flussi di prompt come si progettano soluzioni software: con logica, modularitร , e attenzione allโ€™utente finale. Figure professionali come il Prompt Engineer stanno emergendo proprio per colmare questo spazio, combinando competenze di linguistica, programmazione e design delle informazioni. Ma al di lร  dei ruoli dedicati (e considerato che non credo alle etichette) รจ auspicabile che un poโ€™ tutti, dai manager ai creativi, sviluppino almeno in parte queste competenze.

Lโ€™adozione consapevole dellโ€™AI significa infatti comprendere quando e come coinvolgere lโ€™intelligenza artificiale nei processi decisionali e creativi, conoscendone i limiti (bias, allucinazioni, esigenze di contesto) e le potenzialitร  (velocitร , capacitร  di sintesi, generazione di alternative). Il prompt engineering funge da interfaccia critica in questo rapporto uomo-macchina: รจ lo strumento che ci permette di tradurre gli obiettivi strategici in istruzioni operative per lโ€™AI, e di incanalare lโ€™output dellโ€™AI in risultati di valore. Man mano che i modelli diverranno piรน potenti e diffusi, il prompt engineering evolverร  di pari passo, potenzialmente automatizzando alcune parti (ad es. con sistemi che suggeriscono come formulare i prompt) ma richiedendo comunque una supervisione e una creativitร  umana nel definire problemi e interpretarne le soluzioni.

Investire del proprio tempo in sperimentazione di prompt e analisi, vuol dire investire in alfabetizzazione AI: imparare a โ€œparlareโ€ con le macchine intelligenti in modo efficace. Cosรฌ come lโ€™avvento dei computer ha reso importante saper programmare o utilizzare certi software, lโ€™era dellโ€™AI generativa renderร  fondamentale saper orchestrare conversazioni e flussi con i modelli. Le aziende che svilupperanno per tempo queste capacitร  potranno sfruttare lโ€™AI in modo piรน affidabile e innovativo, mentre gli individui che le coltiveranno diventeranno preziosi facilitatori tra tecnologia e business.

Guidare lโ€™AI con consapevolezza e metodo รจ la chiave per integrarla come alleato nei nostri processi โ€“ un alleato veloce, instancabile e creativo, ma che necessita della giusta guida umana per dare il meglio di sรฉ. In questo equilibrio di ruoli risiede il futuro di una collaborazione uomo-AI realmente efficace e fidata.