ReAct Prompting (CS)

From Systems analysis Wiki
Jump to navigation Jump to search

ReAct (zkr. z Reason + Act, v překladu — „Uvažuj a Jednej") — paradigma navrhování dotazů (prompting) pro velké jazykové modely (LLM), která jim umožňuje řešit složité úlohy střídáním verbálních úvah (myšlenek) a akcí interagujících s vnějším prostředím[1]. Metoda byla navržena v roce 2022 výzkumníky z Google Research a Princetonské univerzity a stala se základním přístupem v rozvoji inteligentních agentů.

Klíčová inovace ReAct spočívá ve spojení logického uvažování, typického pro techniky jako Chain-of-Thought (CoT), s prováděním externích akcí, jako je vyhledávání informací nebo interakce s programovými rozhraními (API). To umožňuje modelu dynamicky upravovat svůj plán, ověřovat fakta a překonávat omezení vlastních, často zastaralých nebo neúplných znalostí[2].

Předpoklady a historie vzniku

Před vznikem ReAct existovaly dva hlavní, avšak oddělené přístupy k využití LLM pro řešení složitých úloh:

  • Řetězec úvah (Chain-of-Thought, CoT): Model generuje postupné logické úvahy k řešení úlohy, ale činí tak v „informačním vakuu", opíraje se výhradně o své vnitřní znalosti. To často vede k faktickým chybám a „halucinacím"[1].
  • Plánování akcí (Act-Only): Model generuje posloupnost akcí pro interakci s vnějším prostředím (například v textových hrách), avšak bez explicitního vysokoúrovňového plánování. Takové systémy si špatně poradí s chybami a nemohou přizpůsobit svou strategii při setkání s nepředvídanými okolnostmi.

ReAct byl vytvořen pro synergetické spojení silných stránek obou přístupů. Umožňuje modelu nejen uvažovat, ale také ukotvovat své úvahy na faktech z vnějšího světa a přizpůsobovat své akce na základě získané zpětné vazby.

Mechanismus fungování: cyklus „Myšlenka — Akce — Pozorování\"

ReAct funguje v rámci iterativního cyklu, který zahrnuje tři klíčové komponenty. Model postupně generuje trajektorii sestávající z kroků Thought, Action a Observation.

Příklad struktury promptu:

Otázka: Jaké hlavní město má město, ve kterém se narodil vynálezce proslavený střídavým proudem?

Thought 1: Potřebuji zjistit, kdo vynalezl střídavý proud. Poté najít místo jeho narození a ověřit, zda je toto město hlavním městem.

Action 1: Search[vynálezce střídavého proudu]

Observation 1: Střídavý proud (AC) byl vyvinut a prosazován Nikolou Teslou.

Thought 2: Nyní potřebuji zjistit, kde se Nikola Tesla narodil.

Action 2: Search[místo narození Nikoly Tesly]

Observation 2: Nikola Tesla se narodil ve vesnici Smiljan, Rakouské císařství (dnešní Chorvatsko).

Thought 3: Smiljan není hlavním městem. Otázka tedy nemá jednoznačnou odpověď v takové formulaci. Tesla však dlouho žil a pracoval v USA. Možná je míněno hlavní město země, kde učinil svá hlavní objevy. To je složitější otázka. Musím konstatovat fakta vycházející z místa narození. Město jeho narození není hlavním městem.

Final Answer: Vynálezce spojený se střídavým proudem, Nikola Tesla, se narodil ve Smiljanu (Chorvatsko), které není hlavním městem.

Myšlenka (Thought)

Model generuje vnitřní úvahu, ve které analyzuje úlohu, rozkládá ji na dílčí úlohy, vytváří nebo koriguje plán akcí a hodnotí aktuální stav. Tento krok neovlivňuje vnější prostředí, ale slouží k vnitřnímu plánování.

Akce (Action)

Na základě své úvahy model provede externí akci a obrátí se na jeden z dostupných nástrojů. Příklady akcí:

  • Search [dotaz] — pro vyhledávání informací ve znalostní bázi (například Wikipedie).
  • Click [prvek] — pro navigaci po webové stránce.
  • API_call [parametry] — pro volání externího API.

Pozorování (Observation)

Systém nebo externí nástroj provede akci a vrátí výsledek (pozorování). Může jít o fragment textu, odpověď API nebo chybové hlášení. Model toto pozorování využívá k formulování další myšlenky, čímž uzavírá smyčku zpětné vazby[2].

Experimentální výsledky a efektivita

Autoři ReAct otestovali metodu na širokém spektru úloh a prokázali její převahu nad přístupy CoT a Act-Only.

Výsledky ReAct v porovnání se základními metodami na klíčových benchmarcích[1]
Benchmark Úloha ReAct (úspěšnost/přesnost) Chain-of-Thought (úspěšnost/přesnost) Act-Only (úspěšnost/přesnost)
FEVER Ověřování faktů 87.6% 82.8% 70.1%
HotpotQA Otázky s více přechody 31.8% 36.3% 17.0%
ALFWorld Textová hra (plánování) 71% 10% 13%
WebShop Webová navigace 40% - 30.1%
  • V úlohách vyžadujících ověřování faktů (FEVER) ReAct výrazně překonává CoT, protože dokáže informace verifikovat.
  • V úlohách na interaktivní plánování (ALFWorld, WebShop) ReAct vykazuje obrovskou výhodu, protože se dokáže přizpůsobit měnícímu se prostředí.
  • V úlohách na čisté uvažování (HotpotQA) může CoT vykazovat srovnatelné nebo dokonce lepší výsledky. Hybridní přístup ReAct+CoT však ukázal nejlepší výkon a dosáhl 35 % v HotpotQA[1].

Kritika a omezení

Na přes svou efektivitu má ReAct řadu omezení a zranitelností.

  • „Křehkost" (Brittleness): Pozdější výzkumy ukázaly, že úspěch ReAct může být spojen nikoli s opravdovou synergií uvažování a akce, ale se syntaktickou podobností mezi příklady v promptu a aktuální úlohou. Model může následovat šablonu `Thought-Action-Observation`, aniž by plně rozuměl sémantice úvah[3].
  • Výpočetní náklady: Každý cyklus ReAct vyžaduje minimálně jedno volání LLM a jedno obrácení se na externí nástroj, což ho činí pomalým a nákladným ve srovnání se standardním promptingem.
  • Závislost na nástrojích: Efektivita agenta přímo závisí na kvalitě a spolehlivosti dostupných nástrojů. Nesprávná nebo zašuměná odpověď z API může uvést uvažování modelu na falešnou stopu.

Význam a další rozvoj

ReAct se stal důležitým milníkem v rozvoji umělé inteligence, znamenajíce přechod od generativních systémů k agentním systémům. Položil koncepční a praktický základ pro většinu moderních frameworků pro tvorbu agentů, jako jsou:

  • LangChain
  • LlamaIndex
  • AutoGen

Myšlenky ReAct posloužily jako výchozí bod pro složitější architektury uvažování, jako jsou Reflexion (přidává cyklus sebereflexe po neúspěších) a Tree of Thoughts (ToT) (zkoumá několik cest uvažování paralelně).

Odkazy

  • Oficiální stránka projektu ReAct
  • Popis ReAct v průvodci Learn Prompting
  • Google Research (2022). ReAct: Synergizing Reasoning and Acting in Language Models (blog post). Google Research Blog.

Literatura

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

Poznámky

  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]