Не рассматривайте LangGraph как просто длинную цепочку
Перестаньте воспринимать LangGraph как LangChain с большим количеством шагов. Эта ошибка приводит к поломке агентов.
LangGraph предназначен для рабочих процессов, требующих состояния (state), ветвления, вызова инструментов (tool calls) и одобрения человеком. Он создан для агентов, которые должны восстанавливаться после ошибок без перезапуска.
Если вы его используете, сначала вы должны определить три вещи: состояние (state), прерывания (interrupts) и восстановление (recovery).
Первая граница: Схема состояния (State Schema)
Для одиночного промпта границей является текст. Для LangGraph границей является схема State. Вы должны решить:
- Какие поля передаются между узлами.
- Какие поля обновляет узел.
- Как параллельные ветви объединяют значения.
- Какие значения попадают в чекпоинт (checkpoint).
- Какие значения никогда не должны сохраняться.
Редьюсеры (Reducers) здесь имеют решающее значение. Если вы не установите правильное правило для добавления сообщений (append), ваша параллельная работа приведет к потере данных.
Начинайте с малого. Постройте граф с одной схемой, одним узлом и одним редьюсером. Если вы не сможете заставить это работать, добавление инструментов лишь скроет ваши ошибки.
Граница времени выполнения (Runtime Boundary)
До вызова compile() ваш граф — это всего лишь описание. После compile() управление берет на себя среда выполнения (runtime).
Когда граф дает сбой, не смотрите только на узел. Проверьте эти четыре вещи:
- Позволяет ли схема State узлу записывать этот ключ?
- Возвращает ли узел валидное поле State?
- Правильно ли редьюсер объединяет данные?
- Есть ли у условного ребра (conditional edge) путь выхода?
Человек в цикле (Human In The Loop)
Не относитесь к одобрению человеком как к функции пользовательского интерфейса. Относитесь к этому как к контракту графа.
Надежный паттерн выглядит так:
- Модель предлагает вызов инструмента (tool call).
- Граф вызывает прерывание (interrupt).
- Человек одобряет или редактирует действие.
- Граф возобновляет работу именно с этой точки.
Это делает агентов восстанавливаемыми, а не просто реактивными.
Ваш чек-лист для проверки (Smoke Checklist)
Перед выходом в продакшн проведите этот тест:
- Используйте временную директорию без рабочих данных.
- Определите минимальное состояние (State).
- Напишите один узел, который возвращает только валидные поля.
- Используйте редьюсер для действий добавления (append).
- Добавьте одно прерывание перед действием инструмента.
- Добавьте чекпоинтер (checkpointer).
- Спровоцируйте сбой и проверьте поведение при возобновлении работы.
Если этот путь не работает, не добавляйте новые инструменты. Проблема в вашей границе времени выполнения (runtime boundary).
LangGraph не предназначен для разовых вызовов модели. Используйте его, когда вашему ИИ необходимо выполнять многошаговую работу, которую можно инспектировать, ставить на паузу и проверять.
Optional learning community: https://t.me/GyaanSetuAi
