К содержимому
Завалищев
База знаний
Инструкции 9 мин чтения

Как отлаживать AI-агентов не сжигая бюджет: replay debugger для LangChain

AI-агент падает на шаге 7 из 9 — и вы перезапускаете всё с нуля, сжигая деньги на токенах каждый раз. Flight Recorder кэширует успешные шаги и перезапускает только сбойный.

Пятница, вечер. Мой агент на LangChain — цепочка из девяти шагов: парсинг документа, извлечение сущностей, классификация, обогащение из базы знаний, генерация саммари, проверка качества, форматирование, пост-обработка, отправка. Шаг 7 падает с ошибкой валидации. Я фиксю промпт, запускаю заново. Все девять шагов — с нуля. Три минуты ожидания. $1.80 на токенах. Шаг 7 опять падает — другая ошибка. Фикшу. Запускаю. Ещё $1.80. Ещё три минуты.

За вечер отладки я потратил $14 и 40 минут чистого ожидания на шаги 1-6, которые работали идеально с первого раза.

Это фундаментальная проблема отладки AI-агентов: каждый перезапуск — полный прогон с начала. Нет точек сохранения. Нет replay. Каждый LLM-вызов стоит денег и времени, и при отладке одного шага вы платите за все предыдущие — снова и снова.

В обычной разработке это как если бы при каждом баге в функции приходилось перезапускать всю программу с компиляции. Абсурд — но именно так сегодня работает отладка агентов.

Идея: Flight Recorder

Концепция простая. Бортовой самописец (flight recorder) записывает входы и выходы каждого шага агентного workflow. При перезапуске — успешные шаги не выполняются заново, а воспроизводятся из кэша. Реально вызывается только сбойный шаг и всё, что после него.

Unknown block type "code", specify a component for it in the `components.types` option

Второй запуск стоит не $1.80, а $0.50 — только шаги 7-9. Время — не три минуты, а 40 секунд. При десяти итерациях отладки — $5 вместо $18, 7 минут вместо 30.

Реализация: три компонента

Компонент 1: Step Recorder

Unknown block type "code", specify a component for it in the `components.types` option

Компонент 2: Smart Replay Logic

Unknown block type "code", specify a component for it in the `components.types` option

Компонент 3: интеграция с LangChain

Unknown block type "code", specify a component for it in the `components.types` option

Тонкости, которые ломают наивную реализацию

Недетерминированность LLM: в режиме debug используйте temperature: 0 — результат стабильный, кэш валидный.

Побочные эффекты: разделяйте шаги на pure (трансформация данных) и impure (побочные эффекты). Pure реплеятся, impure всегда выполняются.

Изменение промпта: включайте хэш промпта в ключ кэша — изменили промпт, хэш другой, кэш невалиден, шаг перезапускается автоматически.

Разветвлённые графы (LangGraph): кэшируйте по (node_name, input_hash), а не по порядковому номеру.

Экономика

Агент из 9 шагов, 4 LLM-вызова (GPT-4o):

  • Без Flight Recorder: 10 итераций = $18.00, ~30 минут
  • С Flight Recorder: 10 итераций = $6.30, ~12 минут

Экономия 65% бюджета и 60% времени на одну сессию отладки.

Итог

Отладка AI-агентов дорогая не потому, что LLM-вызовы дорогие, а потому что при каждой итерации вы оплачиваете шаги, которые уже работали. Flight Recorder решает именно эту проблему: записал → воспроизвёл → заплатил только за то, что реально нужно было перезапустить.

Три файла Python, один вечер на настройку. После этого каждый invalidate_from("broken_step") экономит 60-90% бюджета на итерацию.