Контекст сравнения
Вопрос возникает, когда прототип на 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