Не рассматривайте 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 не предназначен для разовых вызовов модели. Используйте его, когда вашему ИИ необходимо выполнять многошаговую работу, которую можно инспектировать, ставить на паузу и проверять.

Source: https://dev.to/doramagic/do-not-treat-langgraph-as-a-longer-chain-define-state-interrupts-and-recovery-first-4n3n

Optional learning community: https://t.me/GyaanSetuAi