Architektura

LangChain vs LangGraph — kiedy które, decyzja dla polskiego zespołu

LangChain to dziś wzorzec dla większości tutoriali AI. LangGraph (od tych samych autorów) to nowsza biblioteka skupiona na agentach z grafem stanu. Pokazujemy konkretną decyzję dla polskiego zespołu: kiedy LangChain wystarcza, kiedy LangGraph to konieczność, jakie pułapki obie biblioteki mają.

⏱ 9 min czytania · 📅 21.11.2025 · 👁 525 wyświetleń

LangChain i LangGraph to dwie biblioteki od tego samego autora (LangChain Inc.), które często myli się jak narzędzia konkurencyjne. W rzeczywistości to dwa różne poziomy abstrakcji. Polskie zespoły AI często wybierają jedno z drugim na ślepo, co kończy się refactor-em za pół roku. Ten artykuł to praktyczna decyzja: kiedy LangChain wystarczy, kiedy LangGraph jest konieczny.

LangChain — co to dokładnie jest

LangChain to biblioteka komponentów do budowania aplikacji LLM-based: integracje z modelami, parsery output, RAG, memory, prompty. Najlepiej traktować ją jako "stdlib dla AI" — zbiór dobrze przemyślanych klocków. Pisana w Pythonie i JavaScript.

Gdzie LangChain wygrywa

  • Szybki prototyp — w 100 linijkach robisz RAG-a.
  • Standardowe pipeline-y (load → chunk → embed → store → retrieve → generate).
  • Bogaty ekosystem integracji (40+ vector DB, 30+ modeli).
  • Community — dużo tutoriali, Stack Overflow, gotowych przykładów.

LangGraph — co to dokładnie jest

LangGraph to biblioteka do budowania agentów z grafem stanu. Każdy agent to graf węzłów (node) i krawędzi (edge). Stan przepływa przez graf, węzły go modyfikują, krawędzie decydują, dokąd dalej. Inspiracja: Pregel z Google, akka actors.

Gdzie LangGraph wygrywa

  • Złożone agenty z pętlami, warunkami, gałęziami.
  • Multi-agent systems (kilka agentów współpracuje).
  • Long-running tasks z checkpointami.
  • Human-in-the-loop — pauza, czekanie na akceptację, kontynuacja.
  • Pełna kontrola nad stanem.

Decyzja — kiedy które

ScenariuszLangChainLangGraphCustom
RAG na 1 typie dokumentówtakoverkillnie
Chatbot prostytakoverkillnie
Agent z 2-3 narzędziamitak (AgentExecutor)opcjanie
Agent z 8+ narzędziamiza prymitywnetakopcja
Multi-agent systemnietakjeśli zespół duży
Long-running workflow (24h+)nietakjeśli specyficzne
Human approval w środkutrudnenatywnemożliwe
Plan-and-Execute patternnieprzyjaznenatywneopcja

Przykład LangGraph — prosty agent z human-in-the-loop

from langgraph.graph import StateGraph, END
from typing import TypedDict

class State(TypedDict):
    query: str
    plan: str
    approved: bool
    result: str

def make_plan(state: State) -> State:
    state["plan"] = llm.invoke(f"Plan dla: {state['query']}")
    return state

def wait_approval(state: State) -> State:
    # Pauza grafu, czekanie na zewn. event
    return state

def execute(state: State) -> State:
    state["result"] = executor.run(state["plan"])
    return state

graph = StateGraph(State)
graph.add_node("plan", make_plan)
graph.add_node("approval", wait_approval)
graph.add_node("exec", execute)
graph.set_entry_point("plan")
graph.add_edge("plan", "approval")
graph.add_conditional_edges("approval",
    lambda s: "exec" if s["approved"] else END)
graph.add_edge("exec", END)
app = graph.compile(checkpointer=memory)

Gdzie LangChain (i LangGraph) zawodzą

  1. Magia abstrakcji — gdy coś nie działa, debug to grzebanie w warstwach.
  2. Częste breaking changes — wersje 0.x oznaczają niestabilność API.
  3. Memory bloat — niektóre chains trzymają w pamięci więcej niż trzeba.
  4. Async w niektórych miejscach kuleje — staraj się trzymać sync albo full async.
  5. Polski w prompts — domyślne prompty LangChain są angielskie. Override prawie zawsze.

Kiedy custom zamiast LangChain/LangGraph

  • Macie senior dev z doświadczeniem AI — szybciej napiszesz 200 linii custom niż uczysz się LangChain.
  • Stack nie-Python (PHP, Go) — LangChain JS jest słabszy, lepiej własne.
  • Wysokie wymagania performance — direct API call jest 30-50% szybszy.
  • Limited scope — jeden konkretny use case, nie growing platform.

Praktyka: 14 wdrożeń RedAI z LangChain/LangGraph

  • 6 LangChain — RAG-y, chatboty, proste agenty. Wszystkie produkcyjne, działają.
  • 5 LangGraph — multi-agent, plan-and-execute, complex workflows. 4 z 5 udane.
  • 3 custom — gdzie LangChain by tylko spowolnił. PHP backend, prosty pipeline w 180 liniach.

Pułapki przy migracji z LangChain do LangGraph

  1. Chain.run() != Graph.invoke() — model wykonania inny.
  2. Memory abstraction inna — często trzeba przepisać.
  3. Tools w LangGraph mają inny shape niż w LangChain AgentExecutor.
  4. Checkpointers nie są pluginowe — wybierz wcześnie (Postgres, SQLite, MemorySaver).

Rekomendacja dla polskiego zespołu

  • Start z LangChain dla MVP RAG-a lub prostego chatbota.
  • Migracja do LangGraph gdy: dodajecie 4+ narzędzia, lub gdy workflow ma pętle, lub multi-agent.
  • Custom gdy: zespół ma senior AI dev, lub stack nie-Python.
  • Niezależnie od wyboru — testy end-to-end od dnia 1, logi promptów, evaluation suite.

Podsumowanie

LangChain i LangGraph to nie konkurenci — to różne poziomy abstrakcji. LangChain dla prostych wzorców, LangGraph dla skomplikowanych agentów, custom gdy potrzebne. Decyzja zależy od scope, zespołu, stack-u. Pomożemy wam wybrać — 1 godzina audytu i mamy rekomendację.

Chcesz przetestować, jak AI rozwiąże to u Ciebie?

30 minut rozmowy + pokaz działającego wdrożenia u klienta. Bez NDA.

Umów demo

Może Cię też zainteresować

Newsletter redai

Dostawaj kolejne wpisy do skrzynki

Co dwa tygodnie: nowy case, nowe moduły AI, błędy klientów. Bez spamu.