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.