LangGraph vs LangChain

LangChain — это API для быстрого прототипирования (линейные цепочки), LangGraph — production-ориентированная оркестрация агентов через граф состояний. Это не конкуренты на одном уровне: высокоуровневая create_agent() из LangChain сама написана на LangGraph.

Контекст сравнения

Вопрос возникает, когда прототип на LangChain-цепочке упирается в потолок: нужно ветвление, цикл, обработка ошибок, пауза на подтверждение человека, воспроизведение бага. Лектор C33 формулирует мотивацию прямо: классическая цепочка вход → LLM → tool → выход не позволяет задать условия выполнения, прервать/возобновить исполнение и воспроизвести результат.

Сводная таблица

Критерий LangChain (цепочки) LangGraph (граф)
Топология только ациклические сценарии сценарии любой сложности, циклы
Контроль потока нет, ReAct-агент неконтролируем полный контроль (условные рёбра)
Ошибки падение при ошибке механизмы retry, fallback
Запуск одноразовый запуск из любого сохранённого состояния
Отладка практически невозможна time-travel дебаг (replay/fork)
Состояние неявное явное типизированное LangGraph State
Назначение API для прототипирования production-ready решения

Когда выбирать LangChain

  • Быстрый прототип, демо, линейный пайплайн без ветвлений.
  • Нужны готовые обёртки/интеграции (загрузчики, сплиттеры, коннекторы моделей) — экосистема LangChain используется и внутри LangGraph (ChatOpenAI, add_messages, ToolNode).

Когда выбирать LangGraph

  • Агенту нужны циклы, условная маршрутизация, human-in-the-loop (LangGraph HITL).
  • Нужна персистентность и восстановление сессии (LangGraph Checkpointers).
  • Нужны воспроизводимость и отладка недетерминированного поведения LLM (LangGraph Time Travel).

Когда они НЕ конкурируют

Чаще всего — никогда напрямую. LangChain даёт строительные блоки (модели, сообщения, инструменты), LangGraph — каркас оркестрации поверх них. Спор «что выше/ниже уровнем» лектор C33 называет надуманным: это разные технологии, развивающиеся в связке. На практике вы импортируете и то, и другое в одном агенте.

Мой выбор и почему

Для агентных проектов (текущий фокус) — LangGraph как основа, LangChain-компоненты по мере надобности. Для одноразового скрипта/прототипа — достаточно LangChain.

Связано с

  • LangGraph — hub фреймворка
  • Agent vs Workflow — то же различие на уровне «агент vs workflow»
  • ReAct — ReAct-цикл «под капотом» create_agent() реализован на LangGraph