ReAct Prompting (PL)

From Systems analysis Wiki
Jump to navigation Jump to search

ReAct (skrót od Reason + Act, z ang. — „Rozumuj i Działaj") — paradygmat projektowania zapytań (promptingu) dla dużych modeli językowych (LLM), pozwalający im rozwiązywać złożone zadania poprzez naprzemienne stosowanie werbalnych rozumowań (myśli) i działań wchodzących w interakcję ze środowiskiem zewnętrznym[1]. Metoda została zaproponowana w 2022 roku przez badaczy z Google Research i Uniwersytetu Princeton i stała się fundamentalnym podejściem w rozwoju inteligentnych agentów.

Kluczową innowacją ReAct jest połączenie rozumowania logicznego, charakterystycznego dla technik takich jak Chain-of-Thought (CoT), z wykonywaniem zewnętrznych działań, takich jak wyszukiwanie informacji czy interakcja z interfejsami programistycznymi (API). Pozwala to modelowi dynamicznie korygować swój plan, weryfikować fakty i przezwyciężać ograniczenia własnej, często przestarzałej lub niepełnej wiedzy[2].

Przesłanki i historia powstania

Przed pojawieniem się ReAct istniały dwa główne, lecz rozłączne podejścia do wykorzystania LLM do rozwiązywania złożonych zadań:

  • Łańcuch rozumowania (Chain-of-Thought, CoT): Model generuje stopniowe rozumowanie logiczne w celu rozwiązania zadania, lecz czyni to w „próżni informacyjnej", opierając się wyłącznie na swojej wewnętrznej wiedzy. Prowadzi to często do błędów faktycznych i „halucynacji"[1].
  • Planowanie działań (Act-Only): Model generuje sekwencję działań do interakcji ze środowiskiem zewnętrznym (np. w grach tekstowych), lecz bez jawnego wysokopoziomowego planowania. Takie systemy słabo radzą sobie z błędami i nie potrafią dostosować swojej strategii w obliczu nieprzewidzianych okoliczności.

ReAct powstał w celu synergicznego połączenia mocnych stron obu podejść. Pozwala modelowi nie tylko rozumować, lecz także zakorzenić swoje rozumowania w faktach ze świata zewnętrznego, a także dostosowywać swoje działania na podstawie otrzymanej informacji zwrotnej.

Mechanizm działania: cykl „Myśl — Działanie — Obserwacja"

ReAct działa w ramach iteracyjnego cyklu, który obejmuje trzy kluczowe komponenty. Model sekwencyjnie generuje trajektorię składającą się z kroków Thought, Action i Observation.

Przykładowa struktura promptu:

Pytanie: Jaką stolicą jest miasto, w którym urodził się wynalazca znany dzięki prądowi przemiennemu?

Thought 1: Muszę ustalić, kto wynalazł prąd przemienny. Następnie znaleźć miejsce jego urodzenia i sprawdzić, czy to miasto jest stolicą.

Action 1: Search[wynalazca prądu przemiennego]

Observation 1: Prąd przemienny (AC) został opracowany i rozpropagowany przez Nikolę Teslę.

Thought 2: Teraz muszę dowiedzieć się, gdzie urodził się Nikola Tesla.

Action 2: Search[miejsce urodzenia Nikoli Tesli]

Observation 2: Nikola Tesla urodził się we wsi Smiljan, Cesarstwo Austriackie (dzisiejsza Chorwacja).

Thought 3: Smiljan nie jest stolicą. Zatem pytanie nie ma jednoznacznej odpowiedzi w takiej formie. Tesla długo jednak mieszkał i pracował w USA. Być może chodzi o stolicę kraju, w którym dokonał swoich głównych odkryć. To bardziej złożone pytanie. Powinienem stwierdzić fakt oparty na miejscu urodzenia. Miasto jego urodzenia nie jest stolicą.

Final Answer: Wynalazca związany z prądem przemiennym, Nikola Tesla, urodził się w Smiljanie (Chorwacja), które nie jest stolicą.

Myśl (Thought)

Model generuje wewnętrzne rozumowanie, w którym analizuje zadanie, dekompozuje je na podzadania, formuje lub koryguje plan działania oraz ocenia bieżący stan. Ten krok nie wpływa na środowisko zewnętrzne, lecz służy wewnętrznemu planowaniu.

Działanie (Action)

Na podstawie swojego rozumowania model wykonuje zewnętrzne działanie, odwołując się do jednego z dostępnych narzędzi. Przykłady działań:

  • Search [zapytanie] — do wyszukiwania informacji w bazie wiedzy (np. Wikipedii).
  • Click [element] — do nawigacji po stronie internetowej.
  • API_call [parametry] — do wywołania zewnętrznego API.

Obserwacja (Observation)

System lub zewnętrzne narzędzie wykonuje działanie i zwraca wynik (obserwację). Może to być fragment tekstu, odpowiedź API lub komunikat o błędzie. Model wykorzystuje tę obserwację do sformułowania kolejnej myśli, zamykając pętlę informacji zwrotnej[2].

Wyniki eksperymentalne i skuteczność

Autorzy ReAct przetestowali metodę na szerokim spektrum zadań, demonstrując jej przewagę nad podejściami CoT i Act-Only.

Wyniki ReAct w porównaniu z metodami bazowymi na kluczowych benchmarkach[1]
Benchmark Zadanie ReAct (sukces/dokładność) Chain-of-Thought (sukces/dokładność) Act-Only (sukces/dokładność)
FEVER Weryfikacja faktów 87.6% 82.8% 70.1%
HotpotQA Pytania wieloetapowe 31.8% 36.3% 17.0%
ALFWorld Gra tekstowa (planowanie) 71% 10% 13%
WebShop Nawigacja internetowa 40% - 30.1%
  • W zadaniach wymagających weryfikacji faktów (FEVER) ReAct znacząco przewyższa CoT, ponieważ może weryfikować informacje.
  • W zadaniach interaktywnego planowania (ALFWorld, WebShop) ReAct wykazuje ogromną przewagę, gdyż potrafi dostosować się do zmieniającego się środowiska.
  • W zadaniach opartych na czystym rozumowaniu (HotpotQA) CoT może osiągać porównywalne lub nawet lepsze wyniki. Jednak podejście hybrydowe ReAct+CoT wykazało najlepszą wydajność, osiągając 35% w HotpotQA[1].

Krytyka i ograniczenia

Pomimo swojej skuteczności ReAct posiada szereg ograniczeń i słabości.

  • „Kruchość" (Brittleness): Późniejsze badania wykazały, że sukces ReAct może być związany nie tyle z autentyczną synergią rozumowania i działania, co z podobieństwem składniowym między przykładami w prompcie a bieżącym zadaniem. Model może podążać za szablonem `Thought-Action-Observation`, nie rozumiejąc w pełni semantyki rozumowań[3].
  • Koszty obliczeniowe: Każdy cykl ReAct wymaga co najmniej jednego wywołania LLM i jednego odwołania do zewnętrznego narzędzia, co czyni go wolnym i kosztownym w porównaniu ze standardowym promptingiem.
  • Zależność od narzędzi: Skuteczność agenta zależy bezpośrednio od jakości i niezawodności dostępnych narzędzi. Nieprawidłowa lub zaszumiona odpowiedź z API może skierować rozumowanie modelu na błędną ścieżkę.

Znaczenie i dalszy rozwój

ReAct stał się ważnym kamieniem milowym w rozwoju AI, oznaczając przejście od systemów generatywnych do systemów agentowych. Położył konceptualne i praktyczne fundamenty dla większości współczesnych frameworków do tworzenia agentów, takich jak:

  • LangChain
  • LlamaIndex
  • AutoGen

Idee ReAct posłużyły za punkt wyjścia dla bardziej złożonych architektur rozumowania, takich jak Reflexion (dodaje cykl autorefleksji po niepowodzeniach) i Tree of Thoughts (ToT) (eksploruje równolegle wiele ścieżek rozumowania).

Linki

  • Oficjalna strona projektu ReAct
  • Opis ReAct w przewodniku 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.

Przypisy

  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]