Статьи ·

LangGraph: агенты как графы, а не как while-цикл

LangGraph от команды LangChain - фреймворк для stateful-агентов: воркфлоу как граф с состоянием, чекпоинтами, human-in-the-loop и возобновлением после падений.

Классический агент - это while-цикл: подумал, вызвал инструмент, повторил. Всё хорошо, пока не понадобятся ветвления. "Если валидация не прошла - вернуться на шаг назад". "Три попытки - и эскалировать человеку". Цикл быстро превращается в спагетти из флагов и счётчиков. LangGraph от команды LangChain предлагает другую модель: агент как направленный циклический граф. Ноды делают работу, рёбра задают переходы, общее состояние живёт отдельно.

Как это работает

Ядро - StateGraph с типизированным State. Ноды - функции, которые читают состояние и мутируют его. Условные рёбра через функцию-роутер решают, куда идти дальше. Состояние персистится чекпоинтером - SQLite, Postgres или Redis - на каждом шаге. Упал процесс посреди долгого рана - выполнение возобновляется ровно с места падения, а не с нуля. Human-in-the-loop здесь нативная концепция, а не костыль: граф прерывается до или после заданных нод, человек правит состояние или жмёт approve - и выполнение продолжается. В комплекте стриминг шагов и токенов, time travel для отладки (откатились к прошлому состоянию и пошли другим путём) и подграфы для мультиагентных схем.

Циклы и durability

Выразительность - первая причина его брать. Retry-циклы, ветвления по промежуточным результатам, параллельный fan-out/fan-in: всё это рисуется явно, а не эмулируется флагами. Вторая причина - durability из коробки. Долгие раны переживают рестарты, точки останова для человека не надо изобретать. При этом ноды могут быть и обычным детерминированным кодом, и LLM-вызовами: жёсткая логика и ИИ-шаги живут в одном графе, что честно отражает реальность прод-агентов.

Подводные камни

Это низкий уровень абстракции. Графы рисуются руками, и кода получается больше, чем у высокоуровневого createAgent. Для линейного пайплайна вида "ретрив - промпт - ответ" LangGraph избыточен: хватит обычных LangChain-чейнов. Экосистема тянет за собой зависимости LangChain - не всем это нравится. И фреймворк не отменяет остальную инженерную работу: лимиты шагов, бюджеты, эвалы и гейты безопасности проектируются отдельно, сами себя они не настроят.

Кому подходит

Продакшн-агентам с ветвлениями, долгими сессиями, аппрувами и требованиями аудита - "покажи, каким путём пошёл ран". Простые RAG-пайплайны и чат-боты без ветвлений - не сюда. Прототип за вечер быстрее соберётся на createAgent. А если в while-цикле вашего агента завелись вложенные if и счётчики попыток - это сигнал рисовать граф.