Кулинарные кошмары: версия с агентами LangChain
Я создал приложение для здоровья, которое парсит рецепты и составляет планы питания.
Для веб-приложения я использовал FastAPI и React. Для агентов — LangChain. А для отслеживания действий агентов — LangSmith.
Цель была проста. Пользователь предоставляет URL. Приложение загружает рецепт и разбивает его на компоненты, такие как основные блюда, гарниры и соусы. Затем пользователи могут комбинировать их для создания блюд или отслеживания калорий.
Я столкнулся с серьезной проблемой надежности агентов.
Сначала я использовал одного агента для группировки рецепта и форматирования вывода. Он постоянно ошибался. Он выдавал дубликаты позиций, пропускал инструкции или объединял всё в один огромный блок.
Чтобы это исправить, я попробовал схему с двумя агентами:
- Агент 1 (Группировка): Находит различные компоненты рецепта и организует ингредиенты и инструкции.
- Агент 2 (Структурирование): Берет этот организованный текст и преобразует его в чистый формат JSON.
Это работало один день. На следующий день ошибки вернулись. Агент структурирования начал выдавать JSON, в котором отсутствовали все ингредиенты и инструкции.
Я перестал использовать print и начал использовать LangSmith.
LangSmith показывает мне задержку (latency), использование токенов и стоимость. Что самое важное, он показывает мне, в каком именно месте разрывается цепочка.
В моем случае агент группировки работал идеально. Он выдавал отличный markdown со всеми деталями. Сбой происходил во втором агенте: он терял данные во время трансформации.
Сейчас я работаю над тремя исправлениями:
- Повышение надежности агентов: я заметил, что агент структурирования пытается угадать поле cuisine, которого не было в исходном промпте. Эта путаница приводит к ошибкам.
- Добавление валидации: я буду использовать функции Python для проверки вывода. Я хочу убедиться, что markdown корректен и нет дубликатов.
- Улучшение наблюдаемости (observability): я хочу привязывать каждое выполнение агента к конкретному запросу пользователя для более простого отслеживания (tracing).
Разработка с агентами — это не разовая задача. Это постоянный цикл тестирования и исправления ошибок.
Источник: https://dev.to/kristianroopnarine/kitchen-nightmares-langchain-agents-edition-45co
Опциональное обучающее сообщество: https://t.me/GyaanSetuAi
