ReAct Prompting (RO)

From Systems analysis Wiki
Jump to navigation Jump to search

ReAct (abrev. din Reason + Act, în traducere din engleză — «Raționează și Acționează») — este o paradigmă de proiectare a prompturilor (prompting) pentru modele lingvistice mari (LLM), care le permite să rezolve sarcini complexe prin alternarea raționamentelor verbale (gânduri) cu acțiuni ce interacționează cu mediul extern[1]. Metoda a fost propusă în 2022 de cercetători de la Google Research și Universitatea Princeton și a devenit o abordare fundamentală în dezvoltarea agenților inteligenți.

Inovația cheie a ReAct constă în combinarea raționamentelor logice, caracteristice tehnicilor de tip Chain-of-Thought (CoT), cu executarea unor acțiuni externe, precum căutarea de informații sau interacțiunea cu interfețe de programare a aplicațiilor (API). Aceasta permite modelului să își corecteze dinamic planul, să verifice fapte și să depășească limitele propriilor cunoștințe, adesea depășite sau incomplete[2].

Premise și istoricul creării

Înainte de apariția ReAct, existau două abordări principale, dar separate, pentru utilizarea LLM în rezolvarea sarcinilor complexe:

  • Lanțul de raționamente (Chain-of-Thought, CoT): Modelul generează raționamente logice pas cu pas pentru rezolvarea unei sarcini, dar face acest lucru într-un «vid informațional», bazându-se exclusiv pe cunoștințele sale interne. Aceasta duce adesea la erori factuale și «halucinații»[1].
  • Planificarea acțiunilor (Act-Only): Modelul generează o secvență de acțiuni pentru interacțiunea cu mediul extern (de exemplu, în jocuri text), dar fără o planificare explicită de nivel înalt. Astfel de sisteme gestionează prost erorile și nu pot să își adapteze strategia în fața unor circumstanțe neprevăzute.

ReAct a fost creat pentru a combina sinergic punctele forte ale ambelor abordări. Acesta permite modelului nu doar să raționeze, ci și să ancoreze raționamentele sale în fapte din lumea exterioară, precum și să își adapteze acțiunile pe baza feedback-ului primit.

Mecanismul de funcționare: ciclul «Gând — Acțiune — Observație»

ReAct funcționează în cadrul unui ciclu iterativ care include trei componente cheie. Modelul generează secvențial o traiectorie formată din pașii Thought, Action și Observation.

Exemplu de structură a promptului:

Întrebare: Care este capitala orașului în care s-a născut inventatorul cunoscut datorită curentului alternativ?

Thought 1: Trebuie să aflu cine a inventat curentul alternativ. Apoi să găsesc locul său de naștere și să verific dacă acel oraș este o capitală.

Action 1: Search[inventatorul curentului alternativ]

Observation 1: Curentul alternativ (AC) a fost dezvoltat și promovat de Nikola Tesla.

Thought 2: Acum trebuie să aflu unde s-a născut Nikola Tesla.

Action 2: Search[locul nașterii lui Nikola Tesla]

Observation 2: Nikola Tesla s-a născut în satul Smiljan, Imperiul Austriac (actuala Croație).

Thought 3: Smiljan nu este o capitală. Astfel, întrebarea nu are un răspuns univoc în această formulare. Totuși, Tesla a trăit și a lucrat mult timp în SUA. Poate că se referă la capitala țării în care și-a făcut principalele descoperiri. Aceasta este o întrebare mai complexă. Trebuie să constat faptul bazat pe locul nașterii. Orașul nașterii sale nu este o capitală.

Final Answer: Inventatorul asociat cu curentul alternativ, Nikola Tesla, s-a născut în Smiljan (Croația), care nu este o capitală.

Gândul (Thought)

Modelul generează un raționament intern în care analizează sarcina, o descompune în subsarcini, formulează sau corectează planul de acțiune și evaluează starea curentă. Acest pas nu influențează mediul extern, dar servește pentru planificarea internă.

Acțiunea (Action)

Pe baza raționamentului său, modelul execută o acțiune externă, apelând la unul dintre instrumentele disponibile. Exemple de acțiuni:

  • Search [interogare] — pentru căutarea de informații într-o bază de cunoștințe (de exemplu, Wikipedia).
  • Click [element] — pentru navigarea pe o pagină web.
  • API_call [parametri] — pentru apelarea unui API extern.

Observația (Observation)

Sistemul sau instrumentul extern execută acțiunea și returnează rezultatul (observația). Aceasta poate fi un fragment de text, un răspuns API sau un mesaj de eroare. Modelul utilizează această observație pentru a formula următorul gând, închizând bucla de feedback[2].

Rezultate experimentale și eficiență

Autorii ReAct au testat metoda pe un spectru larg de sarcini, demonstrând superioritatea sa față de abordările CoT și Act-Only.

Rezultatele ReAct comparativ cu metodele de bază pe benchmark-uri cheie[1]
Benchmark Sarcina ReAct (succes/acuratețe) Chain-of-Thought (succes/acuratețe) Act-Only (succes/acuratețe)
FEVER Verificarea faptelor 87.6% 82.8% 70.1%
HotpotQA Întrebări cu mai mulți pași 31.8% 36.3% 17.0%
ALFWorld Joc text (planificare) 71% 10% 13%
WebShop Navigare web 40% - 30.1%
  • În sarcinile care necesită verificarea faptelor (FEVER), ReAct depășește semnificativ CoT, deoarece poate verifica informațiile.
  • În sarcinile de planificare interactivă (ALFWorld, WebShop), ReAct demonstrează un avantaj imens, deoarece se poate adapta la un mediu în schimbare.
  • În sarcinile de raționament pur (HotpotQA), CoT poate arăta rezultate comparabile sau chiar mai bune. Totuși, abordarea hibridă ReAct+CoT a arătat cea mai bună performanță, atingând 35% în HotpotQA[1].

Critici și limitări

În ciuda eficienței sale, ReAct prezintă o serie de limitări și vulnerabilități.

  • «Fragilitatea» (Brittleness): Cercetările ulterioare au arătat că succesul ReAct poate fi legat nu atât de o sinergie autentică între raționament și acțiune, cât de similitudinea sintactică dintre exemplele din prompt și sarcina curentă. Modelul poate urma șablonul `Thought-Action-Observation` fără a înțelege pe deplin semantica raționamentelor[3].
  • Costurile computaționale: Fiecare ciclu ReAct necesită cel puțin un apel LLM și o solicitare către un instrument extern, ceea ce îl face lent și costisitor comparativ cu prompting-ul standard.
  • Dependența de instrumente: Eficiența agentului depinde în mod direct de calitatea și fiabilitatea instrumentelor disponibile. Un răspuns incorect sau zgomotos de la un API poate dirija raționamentele modelului pe o cale greșită.

Semnificație și dezvoltare ulterioară

ReAct a devenit o etapă importantă în dezvoltarea IA, marcând tranziția de la sistemele generative la sistemele agentice. A pus bazele conceptuale și practice pentru majoritatea framework-urilor moderne de creare a agenților, precum:

  • LangChain
  • LlamaIndex
  • AutoGen

Ideile ReAct au servit ca punct de plecare pentru arhitecturi de raționament mai complexe, precum Reflexion (adaugă un ciclu de auto-reflecție după eșecuri) și Tree of Thoughts (ToT) (explorează mai multe căi de raționament în paralel).

Referințe

  • Pagina oficială a proiectului ReAct
  • Descrierea ReAct în ghidul Learn Prompting
  • Google Research (2022). ReAct: Synergizing Reasoning and Acting in Language Models (blog post). Google Research Blog.

Bibliografie

  • 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]