Nie traktuj LangGraph jak dłuższego łańcucha
Przestań postrzegać LangGraph jako LangChain z większą liczbą kroków. Ten błąd prowadzi do wadliwych agentów.
LangGraph służy do przepływów pracy (workflows), które wymagają stanu, rozgałęzień, wywołań narzędzi oraz zatwierdzenia przez człowieka. Jest przeznaczony dla agentów, którzy muszą odzyskiwać sprawność po błędach bez konieczności restartowania.
Jeśli go używasz, musisz najpierw zdefiniować trzy rzeczy: stan (state), przerwania (interrupts) i odzyskiwanie (recovery).
Pierwsza granica: Schemat stanu (State Schema)
W przypadku pojedynczego promptu granicą jest tekst. W LangGraph granicą jest schemat stanu (State schema). Musisz zdecydować:
- Które pola przemieszczają się między węzłami (nodes).
- Które pola aktualizuje dany węzeł.
- Jak równoległe rozgałęzienia łączą wartości.
- Które wartości trafiają do punktu kontrolnego (checkpoint).
- Które wartości nigdy nie powinny być przechowywane na stałe.
Reduktory (reducers) są tutaj kluczowe. Jeśli nie ustawisz odpowiedniej reguły dopisywania wiadomości, Twoja praca równoległa spowoduje utratę danych.
Zacznij od małych kroków. Zbuduj graf z jednym schematem, jednym węzłem i jednym reduktorem. Jeśli nie potrafisz sprawić, by to zadziałało, dodawanie narzędzi jedynie zamaskuje Twoje błędy.
Granica czasu wykonania (Runtime Boundary)
Zanim wywołasz compile(), Twój graf jest tylko opisem. Po wywołaniu compile() przejmuje kontrolę runtime.
Gdy graf zawiedzie, nie patrz tylko na węzeł. Sprawdź te cztery rzeczy:
- Czy schemat stanu (State schema) pozwala węzłowi na zapisanie tego klucza?
- Czy węzeł zwraca poprawny parametr stanu (State field)?
- Czy reduktor poprawnie łączy dane?
- Czy krawędź warunkowa (conditional edge) posiada ścieżkę wyjścia?
Człowiek w pętli (Human In The Loop)
Nie traktuj zatwierdzenia przez człowieka jako funkcji interfejsu użytkownika (UI). Traktuj je jako kontrakt grafu.
Niezawodny wzorzec wygląda następująco:
- Model proponuje wywołanie narzędzia.
- Graf wywołuje przerwanie (interrupt).
- Człowiek zatwierdza lub edytuje akcję.
- Graf wznawia pracę dokładnie od tego punktu.
Dzięki temu agenci stają się odzyskiwalni (recoverable), a nie tylko reaktywni.
Twoja lista kontrolna (Smoke Checklist)
Zanim przejdziesz do produkcji, przeprowadź ten test:
- Użyj tymczasowego katalogu bez danych produkcyjnych.
- Zdefiniuj minimalny stan (State).
- Napisz jeden węzeł, który zwraca tylko poprawne pola.
- Użyj reduktora do akcji dopisywania (append).
- Dodaj jedno przerwanie przed akcją narzędzia.
- Dodaj checkpointer.
- Wymuś błąd i zweryfikuj zachowanie po wznowieniu pracy.
Jeśli ta ścieżka zawiedzie, nie dodawaj kolejnych narzędzi. Problemem jest Twoja granica czasu wykonania (runtime boundary).
LangGraph nie służy do jednorazowych wywołań modelu. Używaj go, gdy Twoja AI musi wykonywać wieloetapową pracę, która jest możliwa do sprawdzenia, wstrzymania i zweryfikowania.
Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi
