Strona główna / Artykuły / Dlaczego zespoły przenoszą się z łańcuchów LangChain na przepływy pracy LangGraph

Dlaczego zespoły przenoszą się z łańcuchów LangChain na przepływy pracy LangGraph

Agenci produkcyjni wymagają trwałego stanu, gałęzi oraz HITL. Zachowaj narzędzia LangChain wewnątrz węzłów; przenieś przepływ sterowania do wyraźnego grafu, gdy tego wymaga możliwość działania.

1928 słów

Zespoły, którym linearny model LangChain przestaje wystarczać, często przechodzą na LangGraph – nie dlatego, że taki model jest „martwy”, ale ponieważ agenci produkcyjne wymagają trwałego stanu, możliwości realizacji cykli oraz wyraźnego przepływu sterowania. Przejście to jest podyktowane trudnościami operacyjnymi: koniecznością powtarzania prób, interwencji człowieka, tworzenia gałęzi i utrudnionym monitorowaniem częściowego postępu.

Co udało się LangChain

LangChain umożliwił programowanie modeli LLM za pomocą składalnych promptów, narzędzi, mechanizmów pobierania danych oraz struktur przepływu LCEL. Ustandaryzował koncepcję, że aplikacja to graf wywołań modeli i transformacji danych, a także dostarczył gotowe rozwiązania do demonstracji RAG, które nadal są używane w ekosystemie. Dla przepływów jednokrotnych lub z niewieloma gałęziami pozostaje skutecznym zestawem narzędzi.

Gdzie zaczyna sprawiać problemy w środowisku produkcyjnym

Linearni lub ad-hoc wykonawcy agentów stają się niewystarczający, gdy potrzebne są:

  • Pętle umożliwiające ponowne pobieranie danych po nieudanej próbie
  • Zatrzymanie/kontynuacja działania po ponownym uruchomieniu procesu
  • Punkty kontrolne dla poszczególnych użytkowników
  • Warunkowe gałęzie, które są kodem, a nie sugestiami
  • Jasne odpowiedzi na pytanie „który krok się nie udał?”
  • W tym momencie wprowadzanie większej ilości pamięci do łańcucha ukrywa topologię wewnątrz promptów. Błędy stają się narracją zamiast zapisanymi przejściami stanów.

    Czego dokładnie zmienia LangGraph

    LangGraph traktuje jako klasy pierwszorzędne stan, węzły, łącza oraz punkty kontrolne. System w czasie wykonywania wie, gdzie znajduje się kursor w procesie pracy. Przerwy, odtwarzanie i transmisja zdarzeń węzłów stają się naturalne. Nadal używasz komponentów LangChain wewnątrz węzłów; zmienia się tylko warstwa orkiestracji.

    Kształt kodu, w praktyce

    Model mentalny w kształcie łańcucha:

    from langchain.agents import AgentExecutor, create_tool_calling_agent
    
    agent = create_tool_calling_agent(llm, tools, prompt)
    executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
    result = executor.invoke({"input": "Find the latest invoice and flag anomalies"})
    

    Model mentalny w kształcie grafu z wyraźnymi gałęziami i możliwością przechowywania danych:

    from langgraph.graph import StateGraph, END
    
    def call_model(state: AgentState) -> AgentState:
        response = llm.invoke(state["messages"])
        return {"messages": [response]}
    
    def route(state: AgentState) -> str:
        last = state["messages"][-1]
        return "tools" if last.tool_calls else END
    
    graph = StateGraph(AgentState)
    graph.add_node("agent", call_model)
    graph.add_node("tools", tool_node)
    graph.add_conditional_edges("agent", route, {"tools": "tools", END: END})
    graph.add_edge("tools", "agent")
    app = graph.compile(checkpointer=checkpointer)
    

    Druga forma sprawia, że „ocena, a potem ewentualna przeredakcja” staje się wyraźną cechą, a nie akapitem w mega-promptie.

    Gdzie pasują CrewAI i Pydantic AI

    CrewAI optymalizuje współpracę w ramach ról/zadań, gdy metaforą jest załoga, a nie maszyna stanowa. Pydantic AI oraz podobne zestawy agentów typowanych kładą nacisk na wykorzystanie narzędzi opartych na schematach. Mogą współistnieć z LangGraph lub go zastąpić, gdy wymagania dotyczące przepływu sterowania są mniejsze. Presja na migrację do LangGraph jest największa wtedy, gdy dominują kwestie trwałości i rozgałęzień – a nie wtedy, gdy wystarczy krótka lista zadań dla załogi.

    Prawdziwe problemy stojące za migracją

    1. Powiązany z tym ukryty przepływ sterowania w wykonawcach agentów.
    2. bez modyfikowania globalnego stanu.
    3. , które powtarzają nieodwracalne wywołania narzędzi.
  • Słaba różnicacja pomiędzy „błędem modelu” a „pominiętym krokiem biznesowym”.
  • Testowanie, które nie może być skierowane na pojedynczy węzeł przy użyciu stanu fixture.
  • LangGraph nie naprawia magicznie złych narzędzi, ale umożliwia rozwiązanie tych problemów podczas przeglądu kodu.

    Kiedy LangChain nadal ma sens

    • Procesy promptowe przypominające ETL
    • Prosty RAG bez pętli
    • Kod glue wewnątrz węzłów grafu
    • Szybkość nauczania i tworzenia prototypów

    Nie przepisuj pracującego zadań batch LCEL na graf tylko dla efektu wizualnego.

    Kiedy warto to przepisać

    • Agenty wieloetapowe z mechanizmem refleksji
    • Zgodność z HITL
    • Długotrwałe procesy badawcze lub operacyjne
    • Potrzeba debugowania stanu z użyciem mechanizmu podróży w czasie

    Plan migracji

    1. Zinwentaryzuj łańcuchy i oznacz te, które wymagają powtórzeń/odgałęzień/HITL.
    2. Wyciągnij schemat stanu współdzielonego (TypedDict / Pydantic).

    Skutki organizacyjne

    Grafy tworzą wspólny język komunikacji pomiędzy inżynierami ML a inżynierami platformy: węzły odpowiadają za odpowiedzialność, a krawędzie za SLA. Reakcja na incydenty ulega poprawie, gdy strony odnoszą się do nazw węzłów. Ta jasność stanowi istotny element uzasadnienia migracji, niezależnie od wyników mikrotestów.

    Koszty i kompromisy

    Grafy wymagają dodatkowego kodu szablonowego i czasu na naukę. Nadmierna fragmentacja każdego narzędzia pomocniczego na osobny węzeł powoduje chaos. Zacznij od prostych struktur: pętla pobieranie → generowanie → ocena → przepisanie, a następnie dziel węzły wtedy, gdy wskażą na to metryki.

    Zakończenie

    LangChain nauczył branżę, jak łączyć modele. LangGraph uczy, jak uruchamiać je jako systemy. Ta migracja to raczej przyznanie, że agenci produkcyjne to przepływy pracy, a przepływy pracy wymagają maszyn stanowych, a nie tylko ciągów operacji, niż odrzucenie dotychczasowych rozwiązań.

    Notatki z zespołów, które przeszły na nowe rozwiązania

    Oczekuj równoległego działania: zachowaj ścieżkę łańcucha dla ruchu o niskim ryzyku, podczas gdy pewien procent sesji będzie przetwarzany za pomocą grafu. Porównuj wskaźniki błędów narzędzi, średnią liczbę kroków do ukończenia zadania oraz częstotliwość przerw dokonywanych przez ludzi. Jeśli graf okazuje się lepszy pod względem użyteczności, nawet przy podobnej jakości odpowiedzi, przepnij się na niego. W przeciwnym razie problem leży gdzie indziej – zwykle w projekcie lub ocenie narzędzia, a nie w marki orkiestratora.

    Dokumenty przeciwdziałające błędom: LangGraph nie naprawi indeksu, który nie potrafi udzielić odpowiedzi, ani narzędzia bez kluczy idempotencji. Połącz migrację z umowami dotyczącymi narzędzi oraz z zestawami oceny offline, które testują te gałęzie, które są dla ciebie ważne.

    Metryki pokazujące tendencje wskazują, że twórcy przechodzą na zestawy typu graph- i crew-style, ponieważ agenty produkcyjne wymagają trwałego stanu i możliwości tworzenia gałęzi – a nie tylko dłuższych łańcuchów. Pierwsza fala aplikacji opartych na LLM premiowała proste procesy typu „wezwij i pobierz”; obecna fala premiuje wyraźne schematy pracy.

    Wzorce pojawiające się w analizach postmortem

    Gdy agent oparty na łańcuchach zawodzi w produkcji, opisy błędów często brzmią podobnie: model „postanowił” pominąć narzędzie weryfikacji, ponowna próba wywołała efekt uboczny, albo nikt nie był w stanie stwierdzić, czy proces pobierania danych został przeprowadzony. Grafy nie eliminują tych błędów, ale zmieniają dostępne później dowody. Łogi na poziomie węzłów oraz różnice między punktami kontrolnymi pokazują ostatni poprawny stan. To skraca średni czas zrozumienia problemu, nawet jeśli średni czas naprawy nadal zależy od jakości narzędzi.

    Projektowanie stanu, aby migracje przynosiły korzyści

    Korzystny schemat stanu wyraźnie określa kluczowe etapy biznesowe: retrieved, drafted, graded, approved, committed. Krawędzie przemieszczają te flagi; prompty ich nie tworzą. Podczas migracji należy przypisać każdy stary segment łańcucha do odpowiedniego etapu. Jeśli etap nie może zostać nazwany, segment ten być może jeszcze nie wymaga własnego węzła.

    Człowiek w procesie bez globalnych modyfikacji

    Często zastosowanie mechanizmu HITL polega na umieszczaniu go w zewnętrznych kolejkach połączonych za pomocą funkcji zwrotnych. Interwencje LangGraph umożliwiają przechowywanie stanu oczekiwania wewnątrz środowiska wykonawczego: punkt kontrolny zamyka proces, interfejs użytkownika zbiera zatwierdzenie, a dalsza praca kontynuuje się przy tym samym identyfikatorze wątku. Taka architektura eliminuje całą klasę błędów związanych z „utraconym zatwierdzeniem”, które występują w tradycyjnych systemach oczekiwania.

    Strumieniowanie i oczekiwania użytkowników

    Użytkownicy produktów opartych na agentach oczekują strumieni tokenów, a także strumieni kroków procesu („szukanie”, „ocenianie”, „czekanie na zatwierdzenie”). Strumienie zdarzeń grafu idealnie odpowiadają tym krokom procesu. Systemy typu Chains mogą to symulować za pomocą dostosowanych funkcji zwrotnych, ale model grafu jest zgodny z terminologią używaną już na rynku w kontekście doświadczenia użytkownika.

    Kontrola kosztów

    Współpraca z istniejącymi inwestycjami w LangChain

    Pobieracze danych, otulacze narzędzi, parserzy wyników oraz szablony promptów rzadko wymagają przepisania. Węzły je importują. Argument dotyczący kosztów już poniesionych przeciwko LangGraph zazwyczaj znika, gdy zespoły zdają sobie sprawę, że migracja to przeniesienie istniejącej architektury, a nie jej całkowita przebudowa od zera. Tam, gdzie CrewAI lub inne zestawy już posiadają dany podsystem, należy je zamknąć w jednym węźle, zamiast forsować monokulturę.

    Matryca decyzyjna (skrócona)

    Sygnał Lean chain Lean graph
    Jednokrotne przetworzenie RAG tak opcjonalne Pętle odbicia naturalne HITL w trakcie przetwarzania dodane później wbudowane Zadania trwające kilka dni kłopotliwe punkty kontrolne Proste polecenia ETL idealne przesada

    Historia typowego tygodnia przepisywania kodu

    Dni 1–2: narysuj obecną łańcuchową strukturę jako graf na tablicy; nadaj nazwy poszczególnym stanom. Dzień 3: zaimplementuj „szczęśliwą ścieżkę” za pomocą dwóch warunkowych krawędzi. Dzień 4: dodaj punkty kontrolne oraz mechanizm przerwania dla niebezpiecznych narzędzi. Dzień 5: przeanalizuj ruch danych i porównaj wyniki. Zespoły, które pomijają krok z tablicą, tworzą skomplikowane struktury wewnątrz węzłów i zastanawiają się, dlaczego nic się nie poprawiło.

    Co oznacza „zakończenie” w kontekście migracji

    Migracja jest ukończona wtedy, gdy operatorzy mogą sami, bez pomocy dodatkowych narzędzi, określić, który węzeł został ostatnio uruchomiony, jakie klucze stanu uległy zmianie oraz jak odtworzyć proces od poprzedniego punktu kontrolnego — bez konieczności analizowania historii zapisów w Slacku. Jakość odpowiedzi może pozostać niezmieniona od samego początku; natomiast możliwość efektywnego działania musi ulec poprawie.

    Konkretne różnice w sposobie wykrywania błędów

    Błędy w łańcuchach często objawiają się jako pojedyncza wyjątek otaczający błąd modelu, znajdujący się głęboko w sekwencji wykonywalnej. Błędy w grafach można przypisać nazwie węzła oraz kluczom stanu obecnym w momencie wystąpienia błędu. Inżynierowie wsparcia wykorzystują tę informację do decydowania, czy naprawić mechanizm pobierania danych, funkcje oceny promptów czy adaptery narzędzi. Z biegiem miesięcy ta różnica ma większy wpływ na ocenę rentowności migracji niż jakikolwiek mikropomiar liczby tokenów na sekundę.

    wersjonowanie grafów

    Traktuj zdefiniowane w ten sposób grafy jako artefakty w wersjach. Gdy zmieniają się kontrakty węzłów, zwiększ wartość graph_version w metadanych punktu kontrolnego i odrzuć niekompatybilne kontynuacje. Bez takiej dyscypliny funkcje pauzowanie/kontynuowanie stają się przeszkodą podczas stopniowych wdrożeń. Łańcuchy rzadko napotykają ten problem, ponieważ rzadko są wstrzymywane w trakcie działania; grafy sprawiają, że problem staje się widoczny i rozwiązywalny.

    Doświadczenie w lokalnym rozwoju

    Zdolność LangGraph do przechodzenia przez węzły z zapisanym stanem ulepsza proces przeglądania zmian. Recenzenci mogą uruchomić pojedynczy węzeł z zapisanymi danymi wejściowymi, zamiast ponownie uruchamiać cały łańcuch. Taki sposób pracy zachęca do tworzenia mniejszych, testowalnych węzłów – to samo naciski, które dobra architektura usług już stosuje wobec obsługi HTTP.

    Kiedy nie należy fragmentować

    Jeśli dwa „węzły” zawsze działają razem bez żadnych połączeń pomiędzy nimi, traktuj je jako jeden węzeł zawierający sekwencyjne wywołania LangChain. Grafy powinny reprezentować decyzje, a nie każdą granicę funkcji. Nadmierna fragmentacja jest typowym problemem przy entuzjastycznych migracjach.

    Trajektoria ekosystemu

    W miarę rozwoju narzędzi do sprawdzania stanu, debuggerów oraz pomocników przy wdrażaniu, koszt wcześniejszego wyboru grafów spada. Mimo to strategicznym powodem pozostaje uczciwość w zarządzaniu przepływem danych: agenci to procesy pracy, a te wymagają wyraźnych maszyn stanowych, gdy liczy się niezawodność w produkcji.

    Dodatek: tematy do rozmowy podczas przeglądu architektury

    Zapytaj, czy obecny agent może zawiesić pracę w celu przeglądu prawnego bez utraty stanu; czy przy ponownej próbie zapobiega się podwójnym wywołaniom narzędzi; czy nowy inżynier może samodzielnie nazwać kroki na podstawie śladu działania; oraz czy ocena obejmuje wszystkie możliwe ścieżki, a nie tylko tę sprawnie kończącą się. Negatywne odpowiedzi są sygnałami konieczności migracji. Pozytywne odpowiedzi mogą oznaczać, że LangChain-plus-discipline jest już wystarczający – co również stanowi ważny wynik.

    Dodatek: pytania wprowadzające do przeglądu architektury

    Zapytaj, czy obecny agent może zawiesić pracę w celu przeglądu prawnego bez utraty stanu; czy przy ponownej próbie zapobiega się podwójnym wywołaniom narzędzi; czy nowy inżynier może samodzielnie nazwać kroki na podstawie śladu działania; oraz czy ocena obejmuje wszystkie możliwe ścieżki, a nie tylko tę sprawną. Negatywne odpowiedzi są sygnałami konieczności migracji. Pozytywne odpowiedzi mogą oznaczać, że LangChain-plus-discipline jest już wystarczający – co również stanowi ważny wynik.

    Zdolność do obsługi to kluczowy wskaźnik migracji, który ostatecznie zauważą działania finansowe.

    Zdokumentuj założenia dotyczące przepływu sterowania obok kodu, aby przyszłe modyfikacje nie mogły potajemnie usunąć jakiegoś elementu lub filtru. Wolij afirmacje sprawdzalne przez maszyny od wiedzy opartej wyłącznie na doświadczeniach zespołu, przekazywanej tylko w rozmowach. Ćwicz scenariusze awarii za każdym razem, gdy zmieniają się zasady topologii lub identyfikacji. Zachowuj zestawy oceny w wersjonowaniu z grafem, aby problemy regresji ujawniły się przed klientami.