Przejdź do treści
2.5Ekspert7 min

Wzorzec Reflexion: agenci, którzy uczą się na błędach

Sebastian KarallZaktualizowano 28 października 2026
Definicja

Wzorzec Reflexion to architektura agentowa, w której agent LLM reflektuje nad swoimi wcześniejszymi próbami: Actor generuje rozwiązanie, Evaluator je ocenia, a model Self-Reflection zapisuje na tej podstawie słowną krytykę w buforze pamięci. Przy kolejnej próbie Actor czyta tę refleksję i się poprawia, zupełnie bez trenowania modelu.

W skrócie

  • Reflexion (Shinn i in., arXiv:2303.11366, NeurIPS 2023) pozwala agentom uczyć się na błędach in-context: Actor generuje, Evaluator ocenia, a Self-Reflection zapisuje słowną krytykę w pamięci epizodycznej.
  • Samokorekta odbywa się wyłącznie na poziomie języka. Wagi modelu nie są zmieniane. To nie jest prawdziwy trening, tylko werbalne wzmacnianie w trakcie kilku prób.
  • Najmocniejszym obszarem zastosowań są zadania iteracyjne z jasnym sygnałem weryfikacyjnym: w HumanEval (generowanie kodu w Pythonie) Reflexion osiągnął 91% pass@1 wobec około 80% dla wyniku bazowego GPT-4.
  • Bez wiarygodnego Evaluatora wzorzec się sypie: w MBPP Reflexion wypadł poniżej wyniku bazowego GPT-4, bo samodzielnie wygenerowane testy jednostkowe dawały zbyt wiele wyników fałszywie dodatnich.
  • Reflexion kosztuje mniej więcej od 10 do 30 razy więcej niż pojedynczy przebieg CoT i działa ściśle sekwencyjnie. Nadaje się do zadań wsadowych i back-office, a nie do czatu w czasie rzeczywistym.
  • Zawsze sztywno ograniczaj liczbę iteracji i w miarę możliwości korzystaj z zewnętrznego sygnału ground truth (testy jednostkowe, ewaluator RAG, regex). Sama samoocena jest zawodna.

Wzorzec Reflexion to architektura agentowa, w której agent LLM systematycznie reflektuje nad własnymi wcześniejszymi próbami i dzięki temu się poprawia. Zamiast jednej odpowiedzi agent przechodzi przez kilka prób: Actor generuje rozwiązanie, Evaluator je ocenia, a model Self-Reflection na podstawie oceny i przebiegu pisze słowną krytykę. Ta krytyka trafia do bufora pamięci i steruje kolejną próbą. Warto zauważyć: wagi modelu nie są zmieniane. Poprawa odbywa się wyłącznie na poziomie języka.

Metoda wywodzi się z artykułu Shinna, Cassano, Bermana, Gopinatha, Narasimhana i Yao: Reflexion: Language Agents with Verbal Reinforcement Learning (arXiv:2303.11366, marzec 2023, NeurIPS 2023). Była to pierwsza szeroko cytowana demonstracja tego, że samodzielnie zwerbalizowana przez LLM analiza błędów jest silniejszym sygnałem uczenia dla poprawy in-context niż prosta liczbowa nagroda.

Najważniejsze w trzech zdaniach

  • Czym jest: pętla złożona z Actora, Evaluatora i Self-Reflection z pamięcią epizodyczną. Agent uczy się na błędach in-context w trakcie kilku prób, bez fine-tuningu.
  • Kiedy się opłaca: przy zadaniach iteracyjnych z jasnym, automatyzowalnym sygnałem weryfikacyjnym, na przykład przy generowaniu kodu z testami jednostkowymi. Tu mierzalnie podnosi skuteczność.
  • Gdzie leży granica: wysokie koszty (rząd wielkości od 10 do 30 razy więcej niż wywołanie CoT), działanie ściśle sekwencyjne, a bez wiarygodnego Evaluatora wzorzec jest bezużyteczny. Nie zastępuje prawdziwego treningu.

Jak działa pętla Reflexion

Wzorzec składa się z trzech komponentów, które współpracują w pętli:

  1. Actor: generuje rozwiązanie lub drogę do rozwiązania. Zwykle sam jest agentem ReAct lub Chain-of-Thought.
  2. Evaluator: ocenia próbę. Ocena może być binarna (zaliczone/niezaliczone), skalarna albo wykonywana przez zewnętrzny zestaw testów.
  3. Model Self-Reflection: przekształca ocenę wraz z przebiegiem w słowny feedback: akapit krytyki w języku naturalnym. Ten tekst trafia do epizodycznego bufora pamięci.

Przy kolejnej próbie tekst refleksji jest umieszczany na początku kontekstu Actora. „Aktualizacja polityki” odbywa się więc wyłącznie na poziomie języka, żadne wagi się nie zmieniają. Pamięć jest celowo mała, zwykle przechowuje się od jednej do trzech refleksji.

Przebieg w skrócie:

```
Próba_k: Actor → Evaluator → Self-Reflect → [dopisz do pamięci]
Próba_k+1: Actor widzi pamięć → kolejna próba
... aż do sukcesu lub osiągnięcia maks. liczby prób
```

Koncepcyjna przewaga nad klasycznym uczeniem ze wzmocnieniem: standardowe RL potrzebuje wielu próbek i kosztownego fine-tuningu, żeby uczyć się na podstawie feedbacku. Reflexion uczy się in-context w ciągu kilku prób, co jest o rzędy wielkości tańsze i szybsze we wdrożeniu.

Kiedy wzorzec Reflexion zwiększa skuteczność

Korzyść zależy w pełni od jakości sygnału z Evaluatora. Najlepiej udokumentowanym przykładem jest generowanie kodu, bo istnieje tam automatyczna wyrocznia: testy jednostkowe.

Benchmark

Reflexion

Porównanie/wynik bazowy

Interpretacja

HumanEval pass@1 (Python)

91%

~80% wynik bazowy GPT-4 (w chwili publikacji)

Wyraźny zysk dzięki wyroczni testowej

ALFWorld (skuteczność)

130 z 134 zadań (97%) w 12 próbach

Sam ReAct

Zadanie iteracyjne z feedbackiem

HotpotQA

wyraźne bezwzględne zyski względem CoT/ReAct

Sam CoT, sam ReAct

Zadanie wymagające rozumowania zyskuje

MBPP pass@1 (Python)

poniżej wyniku bazowego

~80% wynik bazowy GPT-4

Sygnał ostrzegawczy: słaby Evaluator

Idealna konstelacja dla Reflexion jest więc jasno określona: zadanie jest iteracyjne, nieudaną próbę można tanio powtórzyć i istnieje automatyzowalny sygnał weryfikacyjny. Dotyczy to generowania kodu i naprawiania błędów, zadań z weryfikowalnymi wynikami pośrednimi oraz tekstowych środowisk wyszukiwania i działania, takich jak ALFWorld. W macierzy decyzyjnej z researchu źródłowego dla agentów generujących kod i naprawiających błędy wprost wskazano kombinację „Reflexion + ReAct” z adnotacją: wymaga testów jednostkowych jako wyroczni.

Granice: koszty, błędne wnioski i brak prawdziwego uczenia

Reflexion nie działa sam z siebie. Najważniejsze słabości, wszystkie potwierdzone w artykule i w praktyce:

  • Przypadek MBPP (sekcja 4.3 artykułu): w MBPP Reflexion wypadł poniżej wyniku bazowego GPT-4, bo samodzielnie wygenerowane testy jednostkowe miały wysoki odsetek wyników fałszywie dodatnich. Agent przedwcześnie uznawał próbę za udaną. To kanoniczne ostrzeżenie przed założeniem, że „Reflexion zawsze poprawia wyniki”.
  • Konfabulowane refleksje: jeśli model błędnie zdiagnozuje, dlaczego mu się nie udało, kolejna próba dziedziczy błędną poprawkę. Samokrytyka może więc też wyprowadzić agenta na manowce.
  • Reward hacking: agent może nauczyć się oszukiwać Evaluatora, zamiast rozwiązywać właściwe zadanie.
  • Mgliste refleksje bez wyroczni: w pisaniu kreatywnym czy otwartym researchu brakuje jasnego sygnału weryfikacyjnego. Refleksje spłycają się wtedy do ogólnych frazesów.
  • Koszty i opóźnienia: na każdą próbę mniej więcej pełny przebieg ReAct plus po jednym wywołaniu Evaluatora i Self-Reflection, pomnożone przez K prób. Próby muszą przebiegać sekwencyjnie, bo każda potrzebuje poprzedniej refleksji. Zastosowania w czasie rzeczywistym zwykle odpadają.

Podstawowa kwestia koncepcyjna dla decydentów: Reflexion to nie jest prawdziwe uczenie. Wagi się nie zmieniają, a to, czego agent się „nauczył”, żyje w oknie kontekstowym bieżącego epizodu. Trwała wiedza powstaje dopiero wtedy, gdy refleksje zapisuje się na zewnątrz.

Porównanie kosztów

Poniższe wartości są orientacyjne (rzędy wielkości), zebrane na podstawie danych z artykułu i raportów z praktyki. Nie zastąpią pomiaru na Twoim własnym obciążeniu.

Wzorzec

Tokeny (względem jednego wywołania CoT = 1)

Opóźnienie (przy N krokach narzędzi)

Złożoność

ReAct

3–10×

N × sekwencyjnie

niska

Reflexion (K=3 próby)

10–30×

K × ReAct, sekwencyjnie

średnia

Plan-and-Execute

2–6×

1 plan + N sekwencyjnie

średnia

ReWOO

1,5–3×

1 plan + N narzędzi + 1 solver

średnia

Reflexion świadomie plasuje się więc w górnym przedziale kosztów. Jeśli użyjesz go bez sztywnego limitu iteracji, ryzykujesz, że pętla wywinduje koszty.

Przykład z praktyki: samokorygujący się agent kodujący

Konkretny scenariusz z udokumentowanego obszaru zastosowań. Agencja ma zbudować agenta, który na podstawie opisu funkcji dostarcza działający kod w Pythonie. Pseudokod pętli Reflexion:

```text
próba = 0
refleksje = []
dopóki próba < MAKS_PRÓB (np. 3):
kod = Actor.generuj(zadanie, kontekst=refleksje) # Actor
wynik = Evaluator.uruchom_testy_jednostkowe(kod) # Evaluator = wyrocznia testowa
jeśli wynik.wszystkie_zaliczone:
zwróć kod # koniec przy sukcesie
krytyka = SelfReflect.analizuj(kod, wynik.błędy) # słowna krytyka
refleksje.append(krytyka) # ogranicz pamięć do 1–3 wpisów
próba += 1
```

W logice wyniku z HumanEval: pierwszy szkic nie przechodzi dwóch z dziesięciu testów. Self-Reflection notuje mniej więcej: „nieobsłużony przypadek brzegowy pustej listy, błąd off-by-one w pętli”. Druga próba czyta tę notatkę, poprawia oba problemy i przechodzi wszystkie testy. Właśnie ten mechanizm stoi za poprawą w HumanEval z około 80% do 91% pass@1.

Dwie niepodlegające negocjacji lekcje produkcyjne z researchu:

  • Zawsze ograniczaj liczbę iteracji. W CrewAI przez max_reasoning_attempts, w LangGraph przez warunek revision_number ≤ N. W przeciwnym razie pętla może wymknąć się spod kontroli.
  • Korzystaj z zewnętrznego sygnału ground truth, gdzie to możliwe: testy jednostkowe, ewaluator RAG, dopasowanie regex. Sama samoocena jest zawodna; przypadek MBPP jest tu przestrogą.

Jeśli masz powtarzające się typy zadań, możesz dodatkowo zapisywać refleksje w bazie wektorowej, z kluczem według typu zadania. Tak powstaje emergentna biblioteka umiejętności, która działa ponad pojedynczymi epizodami: to pomost do podejść typu skill library, takich jak Agent Workflow Memory (arXiv:2409.07429).

Miejsce w ekosystemie frameworków (stan na 2026)

  • LangGraph: oficjalny tutorial z trzema wariantami: Basic Reflection (para generator-reflektor), Reflexion (Draft-Responder → wykonanie narzędzi → pętla Revisora z jawną pamięcią refleksji) oraz LATS (Reflexion plus przeszukiwanie drzewa). Mocnym wzorcem produkcyjnym jest przy tym ustrukturyzowany output, który łączy answer, reflection (czego brakuje, co jest zbędne) i kolejne search_queries.
  • CrewAI: na dwóch poziomach. Na poziomie agenta przez Agent(reasoning=True, max_reasoning_attempts=N), na poziomie crew przez osobnego agenta krytyka (Critic Agent) w Hierarchical Process.
  • AutoGen: udokumentowany jako wzorzec projektowy „Reflection” z agentem Coder i agentem Reviewer, które iterują aż do zbieżności lub do osiągnięcia max_iterations. Uwaga: AutoGen jest oficjalnie w trybie utrzymania, a Microsoft kieruje nowe projekty do Microsoft Agent Framework, wspólnego następcy AutoGen i Semantic Kernel.
  • n8n: brak natywnego węzła Reflexion. Da się to zrealizować jako pętlę workflow: agent generujący → agent krytyk → węzeł IF na werdykcie → powrót do generatora albo koniec. Nadaje się do zadań wsadowych i back-office, nie do czatu o niskich opóźnieniach.

Dla agencji i B2B

Dla agencji marketingowych w Europie Reflexion to właściwe narzędzie do wąsko zdefiniowanych, weryfikowalnych zadań wsadowych z wysokimi wymaganiami jakościowymi: zautomatyzowanego generowania kodu lub konfiguracji, wzbogacania danych z jasnymi regułami walidacji, ustrukturyzowanych treści ze sztywnym schematem. Zasada praktyczna: stosuj go tylko wtedy, gdy potrafisz zdefiniować automatyzowalny sygnał weryfikacyjny, a opóźnienie nie będzie widoczne w rozmowie z klientem. Do chatbotów działających w czasie rzeczywistym lepszym wyborem jest reaktywny wzorzec ReAct. W Blck Alpaca uwzględniamy właśnie tę decyzję architektoniczną w kosztorysie: najpierw mierzymy, jakie tryby błędów występują, a potem celowo przechodzimy od prostego ReAct do Reflexion, z twardym limitem iteracji i zewnętrzną wyrocznią. Dzięki temu agent pozostaje niezawodny, a budżet tokenów przewidywalny.

Podsumuj z AIChatGPTClaudePerplexity

Otwiera czat z przygotowanym promptem.

Najczęściej zadawane pytania

Czym różni się Reflexion od Reflection?
Reflexion przez „x” oznacza konkretną metodę z artykułu Shinna i in. (2023) z triadą Actor, Evaluator i Self-Reflection oraz pamięcią epizodyczną. Reflection jest w praktyce, na przykład na blogu LangChain, używane jako ogólne określenie każdej pętli samokrytyki, łącznie z prostymi parami generator-krytyk. W języku polskim warto odróżniać Reflexion (Shinn i in.) od wzorca Reflection w szerszym sensie, aby uniknąć nieporozumień.
Czy agent Reflexion naprawdę uczy się trwale?
Nie, nie w sensie klasycznego treningu. Wagi modelu nie są zmieniane. Poprawa powstaje in-context: słowna krytyka trafia przy kolejnej próbie do kontekstu Actora. To, czego agent się nauczył, obowiązuje początkowo tylko w obrębie danego epizodu. Dopiero gdy refleksje zapisuje się w bazie wektorowej i ponownie wykorzystuje według typu zadania, powstaje emergentna biblioteka umiejętności działająca ponad pojedynczymi epizodami.
Kiedy nie warto stosować Reflexion?
Przy zadaniach bez jasnego sygnału weryfikacyjnego, na przykład w pisaniu kreatywnym czy otwartym researchu, refleksje degenerują się do mglistych frazesów. Wzorzec nie sprawdza się też w aplikacjach czasu rzeczywistego, w których liczy się opóźnienie, bo próby muszą przebiegać sekwencyjnie. Również przy długim horyzoncie zadania, gdy przyczyna błędu leży wiele kroków przed sygnałem błędu, diagnoza jest trudna.
Ile kosztuje wzorzec Reflexion w porównaniu z prostym agentem?
Rząd wielkości: każda próba kosztuje mniej więcej jeden przebieg ReAct plus po jednym wywołaniu Evaluatora i Self-Reflection, pomnożone przez liczbę prób K. Przy typowym K równym trzy daje to według powyższej tabeli kosztów od trzech do czterech razy więcej niż pojedynczy przebieg ReAct, a w odniesieniu do jednego wywołania CoT z grubsza od 10 do 30 razy więcej. To wartości orientacyjne, które warto zmierzyć na własnym obciążeniu.
W jakich frameworkach można wdrożyć Reflexion?
LangGraph oferuje oficjalny tutorial z trzema wariantami (Basic Reflection, Reflexion, LATS). CrewAI obsługuje go na dwóch poziomach: agent z reasoning=True i max_reasoning_attempts oraz osobny Critic Agent w Hierarchical Process. AutoGen dokumentuje go jako wzorzec projektowy Reflection z agentem Coder i agentem Reviewer. W n8n nie ma natywnego węzła; buduje się pętlę z agenta generującego, agenta krytyka i węzła IF (stan na 2026).

Chcesz zgłębić temat?

Otrzymuj nowe analizy prosto na swoją skrzynkę albo zobacz, jak wykorzystujemy tę wiedzę w firmach.