Preskočiť na obsah
2.2Pokročilý7 min

Vzor ReAct: Thought, Action, Observation

Sebastian KarallAktualizované 17. októbra 2026
Definition

Vzor ReAct (Reasoning and Acting) je návrhový vzor agentov, pri ktorom LLM strieda uvažovanie (Thought), volanie nástroja (Action) a čítanie výsledku (Observation). Táto slučka sa opakuje, kým agent nevydá finálnu odpoveď. Predstavili ho Yao et al. (2022).

Na prvý pohľad

  • ReAct prepája verbálne uvažovanie (Thought) s volaniami nástrojov (Action) a ich výsledkami (Observation) v jedinom kontexte. Zaviedli ho Yao et al. (arXiv:2210.03629, október 2022, ICLR 2023).
  • Hlavnou silnou stránkou je kombinácia využívania nástrojov a transparentnosti: úplný trace Thought/Action/Observation je sledovateľný a uľahčuje debugging aj preukazovanie súladu, napríklad s GDPR.
  • Typickými druhmi zlyhaní sú nekonečné slučky, reasoning drift (zotrvávanie na nesprávnom predpoklade) a halucinovanie argumentov nástrojov, najmä pri slabších modeloch.
  • Najdôležitejšie protiopatrenie: tvrdé limity iterácií (napríklad recursion_limit v LangGraph, max_iter v CrewAI) a function calling namiesto JSON argumentov vo voľnom texte.
  • Praktická horná hranica je väčšinou 10-25 krokov, potom začne prevládať strata kontextu a reasoning drift; ReAct je sekvenčný, a preto obmedzený latenciou.
  • Odporúčanie z praxe (Anthropic, Cognition): začať s najjednoduchším vzorom, väčšinou s ReAct, a eskalovať až vtedy, keď si to vynútia namerané zlyhania.

Vzor ReAct (Reasoning and Acting) je návrhový vzor agentov, pri ktorom LLM strieda uvažovanie (Thought), volanie nástroja (Action) a spätné čítanie výsledku (Observation). Táto slučka sa opakuje, kým agent nevydá finálnu odpoveď. Predstavili ho Yao et al. (arXiv:2210.03629, október 2022, ICLR 2023). Uvažovanie riadi výber nástroja a pozorovania z nástrojov uvažovanie korigujú.

  • Čo to je: Slučka z krokov Thought, Action a Observation, v ktorej LLM prepája myslenie a konanie a využíva nástroje v tom istom kontexte.
  • Na čo je dobrý: Úlohy podporené nástrojmi a ukotvené vo faktoch, s úplne sledovateľným priebehom. ReAct je štandardný východiskový bod pre projekty s agentmi.
  • Na čo si dať pozor: Nekonečné slučky, reasoning drift a halucinované argumenty nástrojov; zachytíš ich tvrdými limitmi iterácií a function callingom.

Odkiaľ ReAct pochádza a aký problém rieši

ReAct vznikol ako odpoveď na dve protichodné slabiny skorších prístupov. Čistý Chain-of-Thought (CoT) uvažuje výlučne interne, a preto halucinuje fakty: chýba mu akékoľvek ukotvenie vo vonkajšom svete. Agenti založení čisto na akciách, napríklad skoré prístupy WebGPT alebo SayCan, naopak nedokážu abstraktne uvažovať o dlhodobých cieľoch ani sa zotaviť z výnimiek.

ReAct spája oboje: verbálne uvažovanie je v tom istom kontexte ako akcie. LLM tak získa pracovnú pamäť pre celú trajektóriu a agent sa stane interpretovateľným. Formálne ReAct rozširuje priestor akcií: okrem externých akcií, ktoré vyvolávajú skutočné pozorovania, existujú jazykové „akcie“ (Thoughts), ktoré v prostredí nič nemenia, iba dopĺňajú interný kontext agenta. Pozoruhodné je, že vzor funguje už s jedným až dvoma príkladmi v kontexte (in-context), bez fine-tuningu.

Slučka podrobne: Thought, Action, Observation

Kanonický priebeh: User Query → [LLM: Thought] → [LLM: Action] → [Prostredie: Observation] → [LLM: Thought] → … → Finish[odpoveď]. Tri kroky do seba zapadajú takto:

Krok

Význam

Kto ho vytvára

Thought

Uvažovanie vo voľnom texte: agent zvažuje, čo musí urobiť ďalej a prečo. Aktualizuje iba interný kontext, nie prostredie.

LLM

Action

Konkrétne volanie nástroja s argumentmi (napr. vyhľadávanie, volanie API, databázový dopyt) alebo Finish[odpoveď] na ukončenie.

LLM

Observation

Výsledok akcie, ktorý vráti prostredie (výsledky vyhľadávania, odpoveď API, chybové hlásenie). Vstupuje do ďalšieho Thought.

Prostredie / nástroj

Tento cyklus beží, kým model nevygeneruje Action: Finish[odpoveď]. Praktická horná hranica je väčšinou 10-25 krokov, potom prevládne strata kontextu alebo reasoning drift.

Pseudokód slučky ReAct

  1. context = systemPrompt + toolDescriptions + userQuery
  2. krok = 0
  3. MAX_KROKOV = 15 # tvrdý limit proti nekonečným slučkám
  4. while krok < MAX_KROKOV:
  5.     vystup = LLM(context) # vytvorí Thought + Action
  6.     if vystup.action == "Finish":
  7.         return vystup.action.argument # finálna odpoveď
  8.     observation = vykonajNastroj(vystup.action) # externé volanie
  9.     context = context + vystup.thought + vystup.action + observation # pripojenie pozorovania
  10.     krok += 1
  11. return "Limit dosiahnutý, riešenie sa nenašlo." # riadené ukončenie

Kľúčový bod: v každej iterácii sa celý doterajší priebeh posiela do LLM znova. To je zdroj silnej stránky (úplná pamäť) aj hlavnej slabiny (náklady).

Silné stránky a hranice podľa výskumu

Pôvodná štúdia preukazuje výhody ReAct na viacerých benchmarkoch. Dôležité: čísla pochádzajú z podmienok rokov 2022/2023 (modely triedy GPT-3 a PaLM) a treba ich čítať ako relatívne hodnoty, nie ako dnešné absolútne hodnoty.

  • ALFWorld (textové úlohy v domácnosti): +34 absolútnych percentuálnych bodov oproti referenčným metódam založeným na imitačnom učení alebo RL, s jedným až dvoma príkladmi.
  • WebShop (navigácia v e-shope): +10 absolútnych percentuálnych bodov úspešnosti oproti IL/IL+RL.
  • HotpotQA a Fever: konkurencieschopné až lepšie ako čistý CoT, resp. čisté generovanie akcií; najsilnejšou konfiguráciou je hybrid, ktorý prepína medzi internými znalosťami modelu a uvažovaním podporeným nástrojmi.

Z hľadiska nákladov je ReAct drahý a pomalý. Spotreba tokenov rastie ako O(N · T): N krokov krát kumulovaná dĺžka kontextu, pretože každý krok znova platí za prefix (systémový prompt, popisy nástrojov, celý priebeh). Latencia je striktne sekvenčná, teda približne N × (čas odpovede LLM + čas odpovede nástroja). Práve toto opakovanie prefixu je slabina, ktorú nástupnícky vzor ReWOO rieši iba dvoma volaniami LLM.

Druhy zlyhaní a protiopatrenia

Tri druhy zlyhaní sa v praxi vyskytujú obzvlášť často:

  • Nekonečné slučky: Bez tvrdého obmedzenia počtu krokov môže agent donekonečna uvažovať v kruhu. Protiopatrenie: explicitné limity, napríklad recursion_limit v LangGraph, max_tool_iterations pri AssistantAgent v AutoGen (alternatívne podmienka ukončenia ako MaxMessageTermination), max_iter v CrewAI. V LangGraph poskytuje create_react_agent kanál remaining_steps a ukončí beh s upozornením, keď zostáva menej ako dva kroky.
  • Reasoning drift / šírenie chýb: Keď sa model upne na nesprávny Thought, interpretuje nasledujúce Observations tak, aby s ním boli v súlade. Protiopatrenie: kratšie trajektórie, priebežná validácia a pri overiteľných úlohách externý reflexný alebo kontrolný signál (prepojenie na vzor Reflexion).
  • Halucinované argumenty nástrojov a halucinované pozorovania: Pri nejednoznačných popisoch nástrojov si model argumenty vymýšľa; slabšie modely si občas „domyslia“ aj pozorovania namiesto toho, aby počkali na skutočný výsledok nástroja. Chybne sformované JSON argumenty nástrojov sú podľa výskumu najčastejšou produkčnou chybou pri slabších modeloch. Protiopatrenie: používať štruktúrovaný výstup, resp. režim function calling, kedykoľvek ho poskytovateľ podporuje, a formulovať popisy nástrojov presne.

K tomu sa pridáva už spomínané nafukovanie kontextu: každý krok znova posiela celý priebeh.

Konkrétny príklad: rešeršný agent pre marketingovú agentúru

Predpokladajme, že agentúra stavia agenta, ktorý zisťuje aktuálny počet zamestnancov klientskej firmy. Slučka by mohla prebehnúť takto:

  1. Thought: „Aktuálne číslo nepoznám a musím ho vyhľadať.“ → Action: Vyhľadaj["počet zamestnancov firma X 2026"] → Observation: výsledok s tlačovou správou.
  2. Thought: „Správa uvádza rozpätie, potrebujem presné číslo.“ → Action: Otvor[URL tlačovej správy] → Observation: plný text s údajom „približne 1 200 zamestnancov“.
  3. Thought: „Tým je otázka zodpovedaná.“ → Action: Finish["cca 1 200 zamestnancov, stav 2026"].

Tri kroky, tri volania LLM, úplne zaznamenaný priebeh. Ak nastavíš MAX_KROKOV = 15, agent je chránený pred nekonečnými slučkami. Ak nič nenájde, korektne skončí namiesto toho, aby zbytočne míňal tokeny. Práve tento sledovateľný priebeh je pre marketingové tímy bez vývojárskeho zázemia skutočnou výhodou: napríklad v n8n zobrazí detail vykonania každé volanie LLM a nástroja ako auditovateľný log.

Frameworky a odporúčania z praxe (stav 2026)

ReAct je natívne dostupný vo všetkých bežných stackoch: LangGraph (create_react_agent), CrewAI (každý agent je interne ReAct agent), AutoGen, resp. Microsoft Agent Framework (AutoGen je k roku 2026 v režime údržby; Microsoft odkazuje nové projekty na Agent Framework) a n8n. Tam uzol AI Agent od verzie n8n 1.82.0 realizuje slučku uvažovania a akcií ako Tools Agent cez natívny function calling; výber samostatného typu agenta ReAct bol zrušený. V LangChain sa create_react_agent k roku 2026 presúva z langgraph.prebuilt do langchain.agents.create_agent s middleware dekorátormi.

Najdôležitejší poznatok z praxe pochádza od spoločností Anthropic („Building Effective Agents“, december 2024) a Cognition: začať s najjednoduchším vzorom, väčšinou s ReAct, a eskalovať až vtedy, keď si to vynútia namerané zlyhania. Moderné špičkové modely ovládajú slučku uvažovania a akcií natívne cez function calling; explicitný ReAct prompting je často zbytočný. Rozhodujúce sú potom pamäť, horné hranice iterácií a tracing. Nástroje na observability (LangSmith, Arize Phoenix, Langfuse) v produkcii prakticky patria k základu. Automatické zaznamenávanie udalostí predpisuje EU AI Act pre vysokorizikové systémy AI (čl. 12 AI Act), typickí marketingoví a rešeršní agenti však pod ne spravidla nespadajú. Trvalo uložený trace sa napriek tomu oplatí pre debugging a sledovateľnosť. Ak obsahuje osobné údaje, platí minimalizácia údajov a minimalizácia uchovávania podľa čl. 5 GDPR: odstrániť PII a stanoviť lehotu na vymazanie.

Pre agentúry a manažérov v B2B

ReAct je pragmatický začiatok pre takmer každý projekt s agentmi: zákaznícke chatboty napojené na CRM a znalostnú databázu, triedenie požiadaviek podpory alebo rešeršné úlohy. Rýchlo ho nastavíš a je úplne auditovateľný. V B2B prostredí regiónu DACH záleží na oboch. Náklady a latencia však rastú s každým krokom. Preto od začiatku nastav tvrdé limity iterácií, používaj function calling namiesto argumentov vo voľnom texte a ukladaj trace pre audit a debugging. Ak ako agentúra chceš navrhnúť agenta alebo dať preveriť stabilitu existujúceho workflowu, ozvi sa nám. Pomôžeme ti s výberom, architektúrou a realizáciou v súlade s predpismi.

Zhrnúť pomocou AIChatGPTClaudePerplexity

Otvorí chat s pripraveným promptom.

Často kladené otázky

Čo znamená ReAct?
ReAct znamená Reasoning and Acting. LLM prepája uvažovanie vo voľnom texte (Thought) s volaniami nástrojov (Action) a číta ich výsledky (Observation). Tieto tri kroky tvoria slučku, ktorá beží, kým agent nevydá finálnu odpoveď. Vzor zaviedli Yao et al. v roku 2022.
V čom sa ReAct líši od Chain-of-Thought (CoT)?
Chain-of-Thought uvažuje čisto interne, bez prístupu k vonkajšiemu svetu, a preto môže halucinovať fakty. ReAct ukotvuje uvažovanie v skutočných pozorovaniach z nástrojov: uvažovanie riadi výber nástroja a výsledky nástrojov zasa korigujú uvažovanie. ReAct tak spája abstraktné vyvodzovanie s ukotvením vo faktoch.
Aké sú najčastejšie druhy zlyhaní vzoru ReAct?
Najčastejšie problémy sú nekonečné slučky bez tvrdého obmedzenia počtu krokov, reasoning drift (agent zotrváva na nesprávnom predpoklade a neskoršie pozorovania interpretuje tak, aby s ním boli v súlade), halucinované argumenty nástrojov pri nejednoznačných popisoch nástrojov a nafukovanie kontextu, keďže každý krok znova posiela celý doterajší priebeh.
Ako zabrániť nekonečným slučkám pri ReAct agentoch?
Tvrdými limitmi iterácií: v LangGraph nastavíš recursion_limit, v CrewAI max_iter, v AutoGen max_tool_iterations pri AssistantAgent alebo podmienku ukončenia ako MaxMessageTermination. V LangGraph poskytuje create_react_agent kanál remaining_steps a ukončí beh, keď zostáva príliš málo krokov. Každý produkčný agent by mal mať explicitný limit.
V ktorých frameworkoch je ReAct dostupný?
ReAct je natívne dostupný v LangGraph (create_react_agent), CrewAI (každý agent je interne ReAct agent), AutoGen, resp. Microsoft Agent Framework a v n8n, ktorého uzol AI Agent od verzie 1.82.0 pracuje ako Tools Agent s natívnym function callingom. K roku 2026 sa create_react_agent v LangChain presúva z langgraph.prebuilt do langchain.agents.create_agent.
Je explicitný ReAct prompting pri moderných modeloch ešte potrebný?
Väčšinou nie. Súčasné špičkové modely s natívnym function callingom zvládajú slučku uvažovania a akcií už v základe. Podľa správ z praxe potom už nerozhodujú ReAct prompty, ale pamäť, horné hranice iterácií a sledovateľnosť (tracing).

Ísť hlbšie?

Získajte nové analýzy priamo do schránky, alebo sa pozrite, ako tieto poznatky nasadzujeme pre firmy.