---
title: "Agent ReAct: wzorzec Thought, Action, Observation"
description: "Wzorzec ReAct (Reasoning and Acting) to wzorzec projektowy agentów, w którym LLM na przemian rozumuje (Thought), wywołuje narzędzie (Action) i odczytuje wynik (Observation)."
locale: "pl"
canonical: "https://blckalpaca.at/pl/baza-wiedzy/agenci-ai/architektury-agentow-ai-przeglad/agent-react-wzorzec-thought-action-observation"
category: "Agenci AI"
topic: "Architektury agentów AI: przegląd"
updated: "2026-10-28T13:36:17.923Z"
source: "Blck Alpaca e.U., blckalpaca.at"
---

# Agent ReAct: wzorzec Thought, Action, Observation

Wzorzec ReAct (Reasoning and Acting) to wzorzec projektowy agentów, w którym LLM na przemian rozumuje (Thought), wywołuje narzędzie (Action) i odczytuje wynik (Observation). Ta pętla powtarza się, dopóki agent nie poda ostatecznej odpowiedzi. Wzorzec przedstawili Yao i in. (2022).

## W skrócie

- ReAct przeplata werbalne rozumowanie (Thought) z wywołaniami narzędzi (Action) i ich wynikami (Observation) w jednym kontekście. Wprowadzili go Yao i in. (arXiv:2210.03629, październik 2022, ICLR 2023).
- Jego główną siłą jest połączenie korzystania z narzędzi z przejrzystością: pełny ślad Thought/Action/Observation da się prześledzić krok po kroku, co ułatwia debugowanie i wykazywanie zgodności, na przykład z RODO.
- Typowe tryby awarii to nieskończone pętle, Reasoning Drift (trzymanie się błędnego założenia) oraz halucynowanie argumentów narzędzi, szczególnie w przypadku słabszych modeli.
- Najważniejszy środek zaradczy: twarde limity iteracji (np. recursion_limit w LangGraph, max_iter w CrewAI) oraz function calling zamiast argumentów JSON w wolnym tekście.
- Praktyczny górny limit to zwykle 10-25 kroków, zanim zaczną dominować utrata kontekstu i Reasoning Drift; ReAct działa sekwencyjnie, więc ogranicza go latencja.
- Rekomendacja z praktyki (Anthropic, Cognition): zaczynać od najprostszego wzorca, zwykle ReAct, i eskalować dopiero wtedy, gdy wymuszą to zmierzone tryby awarii.

**Wzorzec ReAct** (Reasoning and Acting) to wzorzec projektowy agentów, w którym [LLM](https://blckalpaca.at/pl/slownik/llm) na przemian rozumuje (**Thought**), wywołuje narzędzie (**Action**) i odczytuje wynik (**Observation**). Ta pętla powtarza się, dopóki [agent](https://blckalpaca.at/pl/slownik/agent) nie poda ostatecznej odpowiedzi. Wzorzec przedstawili Yao i in. (arXiv:2210.03629, październik 2022, ICLR 2023). [Rozumowanie steruje wyborem narzędzi](https://blckalpaca.at/pl/baza-wiedzy/agenci-ai/czym-sa-agenci-ai/ai-agent-planning-rozumowanie-i-planowanie-w-agentach-ai), a obserwacje z narzędzi korygują rozumowanie.

- **Czym jest:** pętlą Thought, Action i Observation, w której LLM przeplata myślenie z działaniem i korzysta z narzędzi w tym samym kontekście.
- **Do czego się nadaje:** do zadań wspieranych narzędziami, opartych na faktach, z w pełni możliwym do prześledzenia przebiegiem. ReAct to standardowy punkt wyjścia dla projektów agentowych.
- **Na co uważać:** nieskończone pętle, Reasoning Drift i halucynowane argumenty narzędzi; można je opanować twardymi limitami iteracji i function calling.

## Skąd pochodzi ReAct i jaki problem rozwiązuje

ReAct powstał jako odpowiedź na dwie przeciwstawne słabości wcześniejszych podejść. Czysty [Chain-of-Thought (CoT)](https://blckalpaca.at/pl/slownik/chain-of-thought-prompting) rozumuje wyłącznie wewnętrznie i dlatego halucynuje fakty, bo brakuje mu jakiegokolwiek ugruntowania w świecie zewnętrznym. Z kolei agenci nastawieni wyłącznie na działanie, np. wczesne podejścia WebGPT czy SayCan, nie potrafią abstrakcyjnie rozumować o długoterminowych celach ani wychodzić z sytuacji wyjątkowych.

ReAct łączy jedno i drugie: **werbalne rozumowanie** znajduje się w tym samym kontekście co akcje. Dzięki temu LLM zyskuje pamięć roboczą obejmującą całą trajektorię, a agent staje się interpretowalny. Formalnie ReAct rozszerza przestrzeń akcji: obok akcji zewnętrznych, które wywołują rzeczywiste obserwacje, istnieją językowe „akcje” (Thoughts), które niczego nie zmieniają w otoczeniu, a jedynie uzupełniają wewnętrzny kontekst agenta. Co ciekawe, wzorzec działa już z jednym lub dwoma przykładami w kontekście, **bez fine-tuningu**.

## Pętla w szczegółach: Thought, Action, Observation

Kanoniczny przebieg wygląda tak: `User Query → [LLM: Thought] → [LLM: Action] → [Umgebung: Observation] → [LLM: Thought] → … → Finish[Antwort]`. Trzy kroki zazębiają się w następujący sposób.

| Krok | Znaczenie | Kto go generuje |
| --- | --- | --- |
| **Thought** | Rozumowanie w wolnym tekście: agent zastanawia się, co musi zrobić w następnej kolejności i dlaczego. Aktualizuje tylko wewnętrzny kontekst, nie otoczenie. | LLM |
| **Action** | Konkretne wywołanie narzędzia z argumentami (np. wyszukiwanie, wywołanie [API](https://blckalpaca.at/pl/slownik/api), zapytanie do bazy danych) lub `Finish[Antwort]` w celu zakończenia. | LLM |
| **Observation** | Wynik akcji zwracany przez otoczenie (wyniki wyszukiwania, odpowiedź API, komunikat o błędzie). Trafia do kolejnego Thought. | Otoczenie / narzędzie |

Ten cykl trwa, dopóki model nie wyemituje `Action: Finish[Antwort]`. Praktyczny górny limit to zwykle **10-25 kroków**, zanim przewagę zyskają utrata kontekstu lub Reasoning Drift.

## Pseudokod pętli ReAct

1. `context = systemPrompt + toolDescriptions + userQuery`
2. `schritt = 0`
3. `MAX_SCHRITTE = 15   # hartes Limit gegen Endlos-Loops`
4. `while schritt < MAX_SCHRITTE:`
5.     `ausgabe = LLM(context)   # erzeugt Thought + Action`
6.     `if ausgabe.action == "Finish":`
7.         `return ausgabe.action.argument   # finale Antwort`
8.     `observation = führeToolAus(ausgabe.action)   # externer Call`
9.     `context = context + ausgabe.thought + ausgabe.action + observation   # Beobachtung anhängen`
10.     `schritt += 1`
11. `return "Limit erreicht, keine Lösung gefunden."   # sauberer Abbruch`

Kluczowa kwestia: w każdej iteracji cała dotychczasowa historia jest ponownie wysyłana do LLM. To źródło zarówno siły (pełna pamięć), jak i najważniejszej słabości (koszty).

## Mocne strony i ograniczenia w świetle badań

Oryginalna publikacja dokumentuje zalety ReAct w kilku benchmarkach. Ważne: liczby pochodzą z warunków z lat 2022/2023 (modele klasy [GPT](https://blckalpaca.at/pl/slownik/gpt)-3 i PaLM) i należy je czytać jako **wartości względne**, a nie jako dzisiejsze wartości bezwzględne.

- **ALFWorld** (tekstowe zadania domowe): +34 punkty procentowe w ujęciu bezwzględnym w porównaniu z metodami bazowymi opartymi na imitacji/RL, przy jednym lub dwóch przykładach.
- **WebShop** (nawigacja w e-commerce): +10 punktów procentowych wskaźnika sukcesu w ujęciu bezwzględnym w porównaniu z IL/IL+RL.
- **HotpotQA** i **Fever**: wyniki porównywalne lub lepsze niż czysty CoT bądź samo generowanie akcji; najsilniejszą konfiguracją jest hybryda, która przełącza się między wiedzą wewnętrzną a rozumowaniem wspieranym narzędziami.

Po stronie kosztów ReAct jest drogi i wolny. Zużycie tokenów rośnie zgodnie z O(N · T): N kroków razy skumulowana długość kontekstu, ponieważ każdy krok ponownie płaci za prefiks ([prompt](https://blckalpaca.at/pl/slownik/prompt) systemowy, opisy narzędzi, cała historia). Latencja jest ściśle sekwencyjna, czyli wynosi mniej więcej N × (czas odpowiedzi LLM + czas odpowiedzi narzędzia). Właśnie to powtarzanie prefiksu jest słabością, którą następczy wzorzec [ReWOO](https://blckalpaca.at/pl/baza-wiedzy/agenci-ai/architektury-agentow-ai-przeglad) rozwiązuje za pomocą zaledwie dwóch wywołań LLM.

## Tryby awarii i środki zaradcze

W praktyce szczególnie często występują trzy tryby awarii:

- **Nieskończone pętle:** bez twardego limitu kroków agent może bez końca kręcić się w kółko. **Środek zaradczy:** jawne limity, np. `recursion_limit` w LangGraph, `max_tool_iterations` w AssistantAgent w AutoGen (alternatywnie warunek zakończenia, np. MaxMessageTermination), `max_iter` w CrewAI. Funkcja `create_react_agent` w LangGraph oferuje kanał `remaining_steps` i przerywa działanie z komunikatem, gdy zostaje mniej niż dwa kroki.
- **Reasoning Drift / propagacja błędów:** jeśli model przywiązał się do błędnego Thought, interpretuje kolejne Observations tak, by do niego pasowały. **Środek zaradczy:** krótsze trajektorie, walidacja pośrednia oraz, przy zadaniach weryfikowalnych, zewnętrzny sygnał refleksji/weryfikacji (pomost do wzorca Reflexion).
- **Halucynowane argumenty narzędzi i halucynowane obserwacje:** przy niejednoznacznych opisach narzędzi model wymyśla argumenty; słabsze modele czasem „fantazjują” także obserwacje, zamiast czekać na rzeczywisty wynik narzędzia. Według badań źle sformatowane argumenty narzędzi w JSON to najczęstszy błąd produkcyjny na słabszych modelach. **Środek zaradczy:** korzystać z ustrukturyzowanego wyjścia lub **trybu function calling**, gdy tylko dostawca go obsługuje, oraz precyzyjnie formułować opisy narzędzi.

Do tego dochodzi wspomniane już rozdęcie kontekstu: każdy krok ponownie przesyła całą historię.

## Konkretny przykład: agent wyszukujący informacje dla agencji marketingowej

Załóżmy, że agencja buduje agenta, który ustala aktualną liczbę pracowników firmy klienta. Pętla mogłaby przebiegać tak:

1. **Thought:** „Nie znam aktualnej liczby i muszę ją sprawdzić.” → **Action:** `Suche["Mitarbeiterzahl Firma X 2026"]` → **Observation:** wynik z komunikatem prasowym.
2. **Thought:** „Komunikat podaje przedział, potrzebuję dokładnej liczby.” → **Action:** `Öffne[URL der Pressemeldung]` → **Observation:** pełny tekst z informacją „około 1200 pracowników”.
3. **Thought:** „To odpowiada na pytanie.” → **Action:** `Finish["ca. 1.200 Mitarbeiter, Stand 2026"]`.

Trzy kroki, trzy wywołania LLM, w pełni zaprotokołowany przebieg. Jeśli ustawisz `MAX_SCHRITTE = 15`, agent jest zabezpieczony przed nieskończonymi pętlami. Jeśli niczego nie znajdzie, kończy działanie w uporządkowany sposób, zamiast spalać tokeny. Właśnie ten przejrzysty przebieg jest realną korzyścią dla zespołów marketingowych bez zaplecza programistycznego: w [n8n](https://blckalpaca.at/pl/slownik/n8n) na przykład widok wykonania pokazuje każde wywołanie LLM i narzędzia jako log, który można audytować.

## Frameworki i rekomendacje z praktyki (stan na 2026 rok)

ReAct jest dostępny natywnie we wszystkich popularnych stackach: **LangGraph** (`create_react_agent`), **CrewAI** (każdy agent jest wewnętrznie agentem ReAct), **AutoGen** lub **Microsoft Agent Framework** (według stanu na 2026 rok AutoGen jest w trybie utrzymania; Microsoft kieruje nowe projekty do Agent Framework) oraz **n8n**. Tam węzeł [AI](https://blckalpaca.at/pl/slownik/ai) Agent od [n8n 1.82.0](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/) realizuje pętlę rozumowania i działania jako Tools Agent z natywnym function calling; wybór osobnego typu agenta ReAct jest oznaczony jako przestarzały. W [LangChain](https://blckalpaca.at/pl/slownik/langchain), według stanu na 2026 rok, `create_react_agent` przenosi się z `langgraph.prebuilt` do `langchain.agents.create_agent` z dekoratorami middleware.

Najważniejszy wniosek z praktyki pochodzi od Anthropic („Building Effective Agents”, grudzień 2024) i Cognition: **zaczynać od najprostszego wzorca, zwykle ReAct, i eskalować dopiero wtedy, gdy wymuszą to zmierzone tryby awarii.** Nowoczesne modele frontier natywnie opanowały pętlę rozumowania i działania dzięki function calling; jawny prompting ReAct często jest zbędny. Kluczowe stają się wtedy pamięć, limity iteracji i tracing. Narzędzia do obserwowalności (LangSmith, Arize Phoenix, Langfuse) są w produkcji praktycznie obowiązkowe. Unijny AI Act wymaga automatycznego rejestrowania zdarzeń w systemach AI wysokiego ryzyka ([art. 12 AI Act](https://artificialintelligenceact.eu/article/12/)), a typowi agenci marketingowi i agenci do wyszukiwania informacji z reguły nie należą do tej kategorii. Mimo to warto trwale zapisywać ślad wykonania na potrzeby debugowania i możliwości prześledzenia przebiegu. Jeśli zawiera on dane osobowe, obowiązują zasady minimalizacji danych i ograniczenia przechowywania zgodnie z [art. 5 RODO](https://dsgvo-gesetz.de/art-5-dsgvo/): należy oczyścić ślad z PII i określić termin jego usunięcia.

## Dla agencji i decydentów B2B

ReAct to pragmatyczny punkt wyjścia dla niemal każdego projektu agentowego: chatbotów dla klientów zintegrowanych z [CRM](https://blckalpaca.at/pl/slownik/crm) i bazą wiedzy, triażu zgłoszeń w supporcie czy zadań polegających na wyszukiwaniu informacji. Szybko się go wdraża i jest w pełni audytowalny, a oba te aspekty liczą się w środowisku B2B w Europie. Koszty i latencja rosną jednak z każdym krokiem. Dlatego od początku ustaw twarde limity iteracji, używaj function calling zamiast argumentów w wolnym tekście i zapisuj ślad wykonania na potrzeby audytu i debugowania. Jeśli jako agencja chcesz zaprojektować agenta albo zlecić sprawdzenie stabilności istniejącego workflow, odezwij się do nas. Wspieramy Cię w wyborze, architekturze i wdrożeniu zgodnym z wymogami compliance.

## Najczęściej zadawane pytania

### Co oznacza ReAct?

ReAct to skrót od Reasoning and Acting. LLM przeplata rozumowanie w wolnym tekście (Thought) z wywołaniami narzędzi (Action) i odczytuje ich wyniki (Observation). Te trzy kroki tworzą pętlę, która działa, dopóki agent nie poda ostatecznej odpowiedzi. Wzorzec wprowadzili Yao i in. w 2022 roku.
### Czym ReAct różni się od Chain-of-Thought (CoT)?

Chain-of-Thought rozumuje wyłącznie wewnętrznie, bez dostępu do świata zewnętrznego, i dlatego może halucynować fakty. ReAct osadza rozumowanie w rzeczywistych obserwacjach z narzędzi: rozumowanie steruje wyborem narzędzi, a wyniki narzędzi z kolei korygują rozumowanie. W ten sposób ReAct łączy abstrakcyjne wnioskowanie z ugruntowaniem w faktach.
### Jakie są najczęstsze tryby awarii wzorca ReAct?

Najczęstsze problemy to nieskończone pętle przy braku twardego limitu kroków, Reasoning Drift (agent trzyma się błędnego założenia i interpretuje kolejne obserwacje tak, by do niego pasowały), halucynowane argumenty narzędzi przy niejednoznacznych opisach narzędzi oraz rozdęcie kontekstu, ponieważ każdy krok ponownie przesyła całą dotychczasową historię.
### Jak zapobiegać nieskończonym pętlom w agentach ReAct?

Za pomocą twardych limitów iteracji: w LangGraph ustawiasz recursion_limit, w CrewAI max_iter, a w AutoGen max_tool_iterations w AssistantAgent albo warunek zakończenia, np. MaxMessageTermination. Funkcja create_react_agent w LangGraph udostępnia kanał remaining_steps i przerywa działanie, gdy zostaje zbyt mało kroków. Każdy agent produkcyjny powinien mieć jawnie ustawiony limit.
### W jakich frameworkach dostępny jest ReAct?

ReAct jest dostępny natywnie w LangGraph (create_react_agent), CrewAI (każdy agent jest wewnętrznie agentem ReAct), AutoGen lub Microsoft Agent Framework oraz w n8n, którego węzeł AI Agent od wersji 1.82.0 działa jako Tools Agent z natywnym function calling. Według stanu na 2026 rok create_react_agent z LangChain przenosi się z langgraph.prebuilt do langchain.agents.create_agent.
### Czy przy nowoczesnych modelach jawny prompting ReAct jest jeszcze potrzebny?

Zwykle nie. Obecne modele frontier z natywnym function calling same z siebie opanowały pętlę rozumowania i działania. Według relacji praktyków kluczowe są wtedy już nie prompty ReAct, lecz pamięć, limity iteracji i możliwość śledzenia przebiegu (tracing).

---

Źródło: [Blck Alpaca](https://blckalpaca.at/pl/baza-wiedzy/agenci-ai/architektury-agentow-ai-przeglad/agent-react-wzorzec-thought-action-observation). Systemy AI mogą wykorzystywać te treści z podaniem źródła.
