ReAct Prompting (IT)

From Systems analysis Wiki
Jump to navigation Jump to search

ReAct (abbreviazione di Reason + Act, in italiano — «Ragiona e Agisci») è un paradigma di progettazione dei prompt (prompting) per i grandi modelli linguistici (LLM), che consente loro di risolvere compiti complessi alternando ragionamenti verbali (pensieri) e azioni che interagiscono con l'ambiente esterno[1]. Il metodo è stato proposto nel 2022 da ricercatori di Google Research e dell'Università di Princeton ed è diventato un approccio fondamentale nello sviluppo degli agenti intelligenti.

L'innovazione chiave di ReAct consiste nell'unione del ragionamento logico, tipico delle tecniche come Chain-of-Thought (CoT), con l'esecuzione di azioni esterne, come la ricerca di informazioni o l'interazione con interfacce di programmazione (API). Ciò consente al modello di correggere dinamicamente il proprio piano, verificare i fatti e superare i limiti delle proprie conoscenze, spesso obsolete o incomplete[2].

Premesse e storia della creazione

Prima dell'avvento di ReAct esistevano due approcci principali, ma separati, all'utilizzo degli LLM per la risoluzione di compiti complessi:

  • Catena di ragionamento (Chain-of-Thought, CoT): Il modello genera ragionamenti logici passo per passo per risolvere un compito, ma lo fa in un «vuoto informativo», basandosi esclusivamente sulle proprie conoscenze interne. Questo porta spesso a errori fattuali e «allucinazioni»[1].
  • Pianificazione delle azioni (Act-Only): Il modello genera una sequenza di azioni per interagire con l'ambiente esterno (ad esempio, nei giochi testuali), ma senza una pianificazione esplicita di alto livello. Tali sistemi gestiscono male gli errori e non riescono ad adattare la propria strategia di fronte a circostanze impreviste.

ReAct è stato creato per combinare sinergicamente i punti di forza di entrambi gli approcci. Consente al modello non solo di ragionare, ma anche di ancorare i propri ragionamenti a fatti del mondo esterno e di adattare le proprie azioni in base al feedback ricevuto.

Meccanismo di funzionamento: il ciclo «Pensiero — Azione — Osservazione»

ReAct opera nell'ambito di un ciclo iterativo che include tre componenti chiave. Il modello genera sequenzialmente una traiettoria composta da passi Thought, Action e Observation.

Esempio di struttura del prompt:

Domanda: Qual è la capitale della città in cui è nato l'inventore noto per la corrente alternata?

Thought 1: Devo scoprire chi ha inventato la corrente alternata. Poi trovare il luogo di nascita e verificare se quella città è una capitale.

Action 1: Search[inventore della corrente alternata]

Observation 1: La corrente alternata (AC) è stata sviluppata e promossa da Nikola Tesla.

Thought 2: Ora devo scoprire dove è nato Nikola Tesla.

Action 2: Search[luogo di nascita di Nikola Tesla]

Observation 2: Nikola Tesla è nato nel villaggio di Smiljan, Impero Austriaco (odierna Croazia).

Thought 3: Smiljan non è una capitale. Pertanto, la domanda non ha una risposta univoca nella formulazione proposta. Tuttavia, Tesla visse e lavorò a lungo negli USA. Forse si intende la capitale del paese in cui compì le sue principali scoperte. Si tratta di una questione più complessa. Devo constatare il fatto basandomi sul luogo di nascita. La città in cui è nato non è una capitale.

Final Answer: L'inventore associato alla corrente alternata, Nikola Tesla, è nato a Smiljan (Croazia), che non è una capitale.

Pensiero (Thought)

Il modello genera un ragionamento interno in cui analizza il compito, lo scompone in sottocompiti, formula o corregge il piano d'azione e valuta lo stato attuale. Questo passaggio non influisce sull'ambiente esterno, ma serve per la pianificazione interna.

Azione (Action)

Sulla base del proprio ragionamento, il modello esegue un'azione esterna, ricorrendo a uno degli strumenti disponibili. Esempi di azioni:

  • Search [query] — per cercare informazioni in una base di conoscenza (ad esempio, Wikipedia).
  • Click [elemento] — per navigare in una pagina web.
  • API_call [parametri] — per invocare un'API esterna.

Osservazione (Observation)

Il sistema o lo strumento esterno esegue l'azione e restituisce un risultato (osservazione). Può trattarsi di un frammento di testo, di una risposta API o di un messaggio di errore. Il modello utilizza questa osservazione per formulare il pensiero successivo, chiudendo il ciclo di feedback[2].

Risultati sperimentali ed efficacia

Gli autori di ReAct hanno testato il metodo su un'ampia gamma di compiti, dimostrando la sua superiorità rispetto agli approcci CoT e Act-Only.

Risultati di ReAct rispetto ai metodi di riferimento sui benchmark principali[1]
Benchmark Compito ReAct (successo/precisione) Chain-of-Thought (successo/precisione) Act-Only (successo/precisione)
FEVER Verifica dei fatti 87.6% 82.8% 70.1%
HotpotQA Domande multi-hop 31.8% 36.3% 17.0%
ALFWorld Gioco testuale (pianificazione) 71% 10% 13%
WebShop Navigazione web 40% - 30.1%
  • Nei compiti che richiedono la verifica dei fatti (FEVER), ReAct supera significativamente CoT, poiché è in grado di verificare le informazioni.
  • Nei compiti di pianificazione interattiva (ALFWorld, WebShop), ReAct dimostra un enorme vantaggio, grazie alla capacità di adattarsi a un ambiente in continuo cambiamento.
  • Nei compiti di ragionamento puro (HotpotQA), CoT può mostrare risultati comparabili o persino migliori. Tuttavia, l'approccio ibrido ReAct+CoT ha mostrato le migliori prestazioni, raggiungendo il 35% su HotpotQA[1].

Critiche e limitazioni

Nonostante la sua efficacia, ReAct presenta alcune limitazioni e vulnerabilità.

  • «Fragilità» (Brittleness): Ricerche successive hanno dimostrato che il successo di ReAct potrebbe essere legato non tanto alla vera sinergia tra ragionamento e azione, quanto alla somiglianza sintattica tra gli esempi nel prompt e il compito corrente. Il modello può seguire il modello `Thought-Action-Observation` senza comprendere pienamente la semantica dei ragionamenti[3].
  • Costi computazionali: Ogni ciclo di ReAct richiede almeno una chiamata all'LLM e un accesso a uno strumento esterno, il che lo rende lento e costoso rispetto al prompting standard.
  • Dipendenza dagli strumenti: L'efficacia dell'agente dipende direttamente dalla qualità e dall'affidabilità degli strumenti disponibili. Una risposta errata o rumorosa da parte di un'API può indirizzare il ragionamento del modello su un percorso errato.

Importanza e sviluppi futuri

ReAct è diventato una pietra miliare nello sviluppo dell'IA, segnando il passaggio dai sistemi generativi ai sistemi agentivi. Ha posto le basi concettuali e pratiche per la maggior parte dei framework moderni per la creazione di agenti, come:

  • LangChain
  • LlamaIndex
  • AutoGen

Le idee di ReAct hanno costituito il punto di partenza per architetture di ragionamento più sofisticate, come Reflexion (aggiunge un ciclo di auto-riflessione dopo i fallimenti) e Tree of Thoughts (ToT) (esplora più percorsi di ragionamento in parallelo).

Riferimenti

  • Pagina ufficiale del progetto ReAct
  • Descrizione di ReAct nella guida Learn Prompting
  • Google Research (2022). ReAct: Synergizing Reasoning and Acting in Language Models (blog post). Google Research Blog.

Bibliografia

  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
  • Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
  • Shinn, N. et al. (2023). Reflexion: Language Agents with Verbal Reinforcement Learning. arXiv:2303.11366.
  • Verma, V. et al. (2024). On the Brittle Foundations of ReAct Prompting for Agentic Large Language Models. arXiv:2405.13966.
  • Yao, S. et al. (2022). WebShop: Towards Scalable Real-World Web Interaction with Grounded Language Agents. arXiv:2207.01206.
  • Shridhar, M. et al. (2020). ALFWorld: Aligning Text and Embodied Environments for Interactive Learning. arXiv:2010.03768.
  • Qin, L. et al. (2023). AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Collaboration. arXiv:2308.08155.
  • Thorne, J. et al. (2018). FEVER: A Large-Scale Dataset for Fact Extraction and Verification. arXiv:1803.05355.
  • Yang, Z. et al. (2018). HotpotQA: A Dataset for Diverse, Explainable Multi-hop Question Answering. arXiv:1809.09600.

Note

  1. 1.0 1.1 1.2 1.3 Yao, S., Zhao, J., Yu, D., et al. (2022). «ReAct: Synergizing Reasoning and Acting in Language Models». arXiv preprint arXiv:2210.03629. [1]
  2. 2.0 2.1 «ReAct: Synergizing Reasoning and Acting in Language Models». Google Research Blog. [2]
  3. Verma, V., et al. (2024). «On the Brittle Foundations of ReAct Prompting for Agentic Large Language Models». arXiv preprint arXiv:2405.13966. [3]