Koncepcje LangGraph w prostym języku: stan, pamięć i orkiestracja
Koncepcje LangGraph w prostym języku przed pierwszym agentem: orkiestracja, czas wykonywania, stan, pamięć krótkoterminowa i długoterminowa, system wielu agentów oraz udział człowieka w procesie.
Źródła: What I Learned Before Building My First LangGraph Agent
Oficjalne definicje LangGraph są dosyć złożone. Sam slogan projektu opisuje framework niskiego poziomu wraz z środowiskiem wykonawczym do zarządzania agentami, które działają przez długi czas i przechowują stan. Może to być dokładne, ale nie jest łatwe do zrozumienia przy pierwszym przeczytaniu. To właśnie te podstawy w prostym języku warto omówić przed napisaniem jakiegokolwiek kodu LangGraph, a one stanowią fundament planowanego drugiego projektu w ramach ścieżki nauki.
Dlaczego przenieść się na LangGraph właśnie teraz?
Załóżmy, że pierwszy projekt nauczył podstaw: wywoływania narzędzi, MCP, narzędzi zdalnych oraz prostego mechanizmu sterowania agentem. Dzięki temu masz jasny cykl: model, narzędzie, wynik, ponownie model.
Tool calling
MCP
Remote tools
A small agent harness
To, czego to nie wyjaśnia, to to, co się dzieje, gdy proces pracy przestaje być zwykłym pętlą.
What if the workflow is not just a loop?
What if it branches?
What if it must remember the conversation?
What if different steps should have different jobs?
To właśnie do rozwiązania takich pytań służy LangGraph. Celem nie jest kolejna demonstracja chatbota – to projekt, który celowo wymusza użycie stanu, routingu oraz orkiestracji.
Rozbieranie definicji
Trzy słowa stanowią istotę: orkiestracja, czas wykonywania i stanowy charakter.
Orkiestracja
Prościej mówiąc, orkiestracja oznacza koordynację kroków, które muszą nastąpić w określonej kolejności, a czasami też rozgałęziać się. Pomyśl o kelnerze w restauracji.
Customer orders
↓
Waiter takes the order
↓
Kitchen cooks
↓
Waiter brings food
↓
Cashier takes payment
Kelner to nie kuchnia, a kuchnia to nie kasjer, ale ktoś musi koordynować przepływ zadań. W procesie pracy z wsparciem AI ta koordynacja wygląda w ten sposób:
User asks a question
↓
Understand / classify the request
↓
Maybe ask for clarification
↓
Search documentation
↓
Write an answer
LangGraph przydaje się, gdy chcesz, aby ta koordynacja była wyraźna i przedstawiona w formie grafu, a nie ukryta w jednej ogromnej funkcji.
Czas wykonywania
Czas wykonywania to to, co faktycznie uruchamia proces pracy. Przydatnym porównaniem jest scenariusz filmu w porównaniu z produkcją, która go kręci. Graf to scenariusz: pokazuje, jakie sceny istnieją i co następuje po każdej z nich. Czas wykonywania to sprzęt i procesy produkcyjne: realizują one kolejne sceny, śledzą postęp prac i kontynuują je aż do końca.
You define nodes and edges
↓
You compile the graph
↓
You invoke it with a user message
↓
The runtime walks START → … → END
Agenty z pamięcią stanu
Agent z pamięcią stanu przechowuje wystarczająco dużo kontekstu, aby móc kontynuować rozmowę. Agent bez pamięci stanu traktuje każdą wiadomość tak, jakby wszedł obcy.
Przykład agenta bez pamięci stanu:
User → “I teach at ABC School.”
Agent → answers, then forgets
User → “How do I enter grades?”
Agent → has no idea who you are
I w ten sposób z stanem:
User → “I teach at ABC School.”
↓
State remembers role / history
↓
User → “How do I enter grades?”
↓
Agent can use prior context
Zarezerwowanie lotu to dobry przykład. Jeśli agent zapomni o twoim celu podróży pomiędzy wiadomościami, musisz zaczynać od nowa za każdym razem. Rozmowy z obsługą klienta wyglądają dokładnie tak samo. Stan to sposób, w jaki system przechowuje informacje o bieżącej rozmowie.
Harness versus graph
W przypadku harnessu pętla jest widoczna, co jest celem jego tworzenia. LangGraph stawia inne pytanie: czy proces pracy mógłby być zamodelowany jako graf, z oznaczonymi krokami, rozgałęzieniami i utrzymywanym stanem, zamiast jako powtarzająca się pętla generowania? Nie każdy projekt tego wymaga. Ale warto się tego nauczyć, zanim będziemy twierdzić, że rozumiemy procesy pracy agentów.
Pamięć agenta, podzielona na dwie części
Kuszące jest traktowanie pamięci jako jednej całości. Tak jednak nie jest.
Pamięć krótkoterminowa
To pamięć przeznaczona do przechowywania informacji z bieżącej rozmowy lub wątku.
User: I am a teacher at ABC School.
…
User: How do I enter grades?
Dlatego druga tura nadal wie, że doszła do pierwszej tury. W terminologii LangGraph zazwyczaj znajduje się w stanie grafu, szczególnie w liście wiadomości, i może przetrwać między turami za pomocą wskaźnika stanu oraz identyfikatora wątku.
Short-term memory ≈ working memory for this conversation
Porównanie z pamięcią roboczą jest przydatne, o ile pamiętasz, że jest to jedynie analogia.
Pamięć długoterminowa
Obejmuje ona informacje, które powinny przetrwać dłużej niż jeden wątek rozmowy. Typowymi przykładami są preferencje użytkownika, profil szkolny, trwałe dane dotyczące roli danej osoby oraz notatki z wcześniejszych zgłoszeń.
Short-term ≈ RAM for this session
Long-term ≈ persistent storage across sessions
Najważniejsza różnica: historia rozmowy nie jest automatycznie pamięcią długoterminową. Transkrypcja znajdująca się w bieżącym wątku nadal stanowi pamięć sesji. Pamięć długoterminowa to odrębna decyzja projektowa dotycząca tego, co przechowywać, jak długo i jak to później odzyskać. W pierwszej wersji wystarczy pamięć wątkowa, a pełne przechowywanie profili długoterminowych zostanie dodane później.
Orkiestracja wielu agentów bez nadmiernego haju
Jeden ogólny agent może być trudniejszy do zrozumienia niż garstka specjalistów. Dobrym przykładem jest budowa domu.
Electrician
Plumber
Painter
Inspector
Nikt nie prosi malarza o prace elektryczne, ponieważ są to różne zadania. W przypadku asystenta wspierającego pracę w szkole można sobie wyobrazić taki przebieg działań:
User
↓
Intake (who is speaking? teacher / admin?)
↓
Classify / route
↓
Knowledge (find the right docs)
↓
Support (write the reply)
Rozdzielenie obowiązków przynosi rzeczywiste korzyści: każdy krok jest łatwiejszy do przetestowania, łatwiej odróżnić awarię routingu od awarii wyszukiwania dokumentów, a model mentalny procesu pracy staje się jaśniejszy. Należy jednak być szczerymi co do ograniczeń. Wielu agentów jest przydatnych, gdy obowiązki rzeczywiście się różnią. Nie są cenni tylko dlatego, że ich nazwa brzmi zaawansowanie.
Człowiek w procesie
Czasami sztuczna inteligencja powinna się zatrzymać i poczekać na osobę, zanim będzie mogła kontynuować.
User request
↓
AI prepares an action
↓
Sensitive?
↓
Pause → human approval → continue
Typowymi przypadkami są usuwanie rekordów uczniów, zmiana ocen po ich opublikowaniu, zwroty lub płatności oraz przeniesienie zgłoszenia do rzeczywistego administratora. Można to postrzegać jako element zapewniający bezpieczeństwo i zaufanie: agenci mogą podejmować decyzje i działać, ale niektóre z nich pozostają pod kontrolą człowieka. Koncepcja ta jest tu już rozumiana i może zostać dodana później. Jedna uwaga: zadawanie pytania wyjaśniającego, na przykład o tym, o jaką część produktu chodzi, jest pomocne, ale nie jest to to samo co zatwierdzenie takiej czynności przez człowieka.
Jak wszystko się łączy
Zanim napisano kod, ogólny obraz wyglądał w ten sposób:
Orchestration → who does what, and in what order?
Runtime → what executes that plan?
State → what do we remember while running?
Short-term mem → how does a multi-turn chat continue?
Long-term mem → what should survive across sessions? (later)
Multi-agent → when should steps be specialized?
HITL → when must a human approve? (later)
Tools → how does the agent reach outside knowledge?
LangGraph jest atrakcyjny, ponieważ sprawia, że kilka z tych elementów staje się widocznych w grafie, a nie jest ukrytych wyłącznie w instrukcjach.
Projekt ćwiczeniowy: agent wsparcia szkolnego
W ramach ćwiczeń przykładem jest agent wsparcia dla LEPA – systemu zarządzania szkołą używanego przez nauczycieli i administratorów. Typowe pytania pochodzą od użytkowników, którzy nie mogą uzyskać dostępu do swoich kont, osób rejestrujących nowych uczniów, nauczycieli wpisujących oceny i zastanawiających się, dlaczego one nie pojawiają się, pracowników prowadzących rejestr obecności oraz administratorów tworzących raporty.
Ćwiczenie dotyczy przepływu pomiędzy poszczególnymi krokami, a do jego przedstawienia nie potrzeba żadnego zaawansowanego modelu. Budowa odbywa się krok po kroku:
- Opis wraz z małym grafem, który prowadzi od
STARTprzez jeden węzeł doEND - Przyjmowanie zapytań, klasyfikacja i warunkowe kierowanie
- Prawdziwy narzędzie wiedzy zamiast dokumentów w formacie Markdown
- API z pamięcią rozmów wykorzystującym punkty kontrolne
- Wizualizacja grafów i przejrzysta dokumentacja
- Opcjonalna optymalizacja za pomocą LLM nad pobranymi dokumentami
Wniosek
Definicja LangGraph wydaje się skomplikowana, dopóki nie zostanie dokładnie wyjaśniona. Orkiestracja to koordynacja poszczególnych kroków. Czas wykonywania oznacza realizację i monitorowanie procesu. Pamięć stanowa oznacza, że rozmowa przenosi swój kontekst dalej, zamiast zaczynać od zera. Pamięć, projekt wielu agentów oraz zatwierdzenie przez człowieka to powiązane koncepcje – niektóre powinny znaleźć się w pierwszej wersji produktu, podczas gdy inne mogą poczekać. Zrozumienie, które z nich do czego należy, jest częścią procesu uczenia się.
Literatura pokrewna
- Twój pierwszy agent LangGraph: asystent do piłki nożnej z narzędziami i routowaniem — Krok po kroku: tutorial LangGraph obejmujący wspólny stan, narzędzia, węzeł planistyczny, warunkowe krawędzie oraz podsumowanie w formacie Markdown, stworzony wokół symulowanego asystenta do statystyk piłkarskich.
- Agenty LangGraph działające równolegle, które przeglądają pull requests za pomocą webhooków FastAPI — Jak webhook, kolejka Redis oraz cztery agenty LangGraph przekształcają pull request w uszeregowany, strukturyzowany przegląd AI w ciągu około 30 sekund, przy użyciu ngrok do testów lokalnych.