Единый стек для оценки AI-агентов: Harbor + LangChain
Что изменилось в практике
В небольшом офисе команды разработки руководитель проекта видит, как коллеги запускают несколько тестов в облаке, но сталкиваются с тем, что результаты не воспроизводимы и не объяснимы.
Новый инструмент, представленный в блоге LangChain, объединяет в единую платформу Harbor и LangChain.
Он позволяет запускать AI‑агентов в изолированных средах, масштабировать тесты и получать подробные трассировки, которые показывают, почему тест прошёл или не прошёл.
Источник: langchain.com
Почему это важно сейчас
Современные AI‑агенты становятся всё более сложными: они могут читать файлы, запускать скрипты, работать с внешними сервисами.
Тестировать такие программы в обычной среде сложно, потому что они зависят от конкретного окружения и могут вести себя по‑разному на разных машинах.
Harbor решает эту проблему, предоставляя:
- Изолированные sandbox‑ы – каждый тест запускается в чистой, воспроизводимой среде, без влияния других тестов.
- Масштабируемость – можно запускать сотни тестов параллельно, а не последовательно, экономя время.
- Трассировки – каждый шаг агента записывается, что позволяет понять, почему тест прошёл или не прошёл, а не просто получить «да/нет».
Таким образом, команда получает более надёжные результаты, быстрее выявляет ошибки и уменьшает риск неожиданных сбоев в продакшене.
Как превратить это в повторяемый процесс
- Подключите ваш агент к Harbor
Создайте файлlanggraph.json, в котором перечислите зависимости вашего агента и укажите функциюmake_graph, которая строит граф.json { "dependencies": [ "deepagents>=0.6.10,<0.7.0", "langchain-fireworks>=1.3.1,<1.4.0" ], "graphs": { "deep_agent": "./agent.py:make_graph" } }Вagent.pyреализуйтеmake_graph, который создаёт ваш агент, например: ```python from deepagents import create_deep_agent from deepagents.backends import LocalShellBackend
def make_graph(): return create_deep_agent( model="fireworks:accounts/fireworks/models/glm-5p2", backend=LocalShellBackend() ) ```
- Определите набор задач
Для каждой задачи укажите: - Environment – Dockerfile или Docker‑Compose, описывающий нужную ОС и библиотеки.
- Instruction – Markdown‑описание того, что агент должен сделать.
- Evaluation script –
test.sh, который проверяет, что агент выполнил задачу (например, создал нужный файл, вернул правильный ответ). - Запускайте тесты в облаке
Используйте LangSmith Sandboxes: каждый тест получает свой собственный sandbox, поэтому они не влияют друг на друга.
Запуск можно масштабировать, добавляя больше ресурсов в облаке. - Получайте трассировки
Включитеlangsmith‑плагин, чтобы каждый тест автоматически сохранялся как набор данных и эксперимент.
Трассировки помогут понять, почему тест прошёл или не прошёл, и дадут возможность быстро исправлять ошибки. - Проверяйте результаты
В панели наблюдения LangSmith вы видите графы, где можно увидеть, какие шаги агента привели к успеху или к ошибке.
Это позволяет быстро находить узкие места и улучшать ваш агент.
Где ограничения и риски
| Ограничение | Что может пойти не так | Как проверить |
|---|---|---|
| Стоимость облака | Запуск сотен sandbox‑ов может быть дорогим | Сравните цены на облачные ресурсы и оцените бюджет |
| Сложность настройки | Необходимость писать Dockerfile и скрипты | Проверьте, есть ли готовые шаблоны в репозитории |
| Совместимость | Некоторые модели могут не поддерживаться в sandbox‑е | Убедитесь, что выбранная модель доступна в выбранном бекенде |
| Скорость | Параллельный запуск может замедляться из‑за ограничений сети | Тестируйте скорость запуска на небольшом наборе задач |
| Безопасность | Sandbox‑ы должны быть изолированы, иначе данные могут утечь | Проверьте настройки безопасности в Dockerfile |
Что делать дальше
- Проверьте, как ваш агент подключается к Harbor – убедитесь, что
langgraph.jsonиmake_graphработают. - Создайте минимум одну задачу с Dockerfile, инструкцией и скриптом проверки.
- Запустите тест в LangSmith Sandbox и посмотрите трассировку.
- Оцените время и стоимость – сравните с текущим процессом тестирования.
- Если всё работает, масштабируйте – добавьте несколько задач и запустите их параллельно.
Если вы обнаружите, что стоимость слишком высока или настройка слишком сложна, рассмотрите альтернативы: локальные контейнеры, собственные серверы или другие сервисы, которые поддерживают изоляцию и трассировку.
Практический чек‑лист
| Шаг | Что проверить | Как проверить |
|---|---|---|
| 1 | Файл langgraph.json корректен |
Откройте файл и убедитесь, что зависимости и графы перечислены правильно |
| 2 | Функция make_graph возвращает агент |
Запустите скрипт make_graph вручную и проверьте, что агент создаётся |
| 3 | Dockerfile описывает нужную среду | Проверьте, что в Dockerfile указаны все необходимые пакеты |
| 4 | Скрипт test.sh корректно проверяет результат |
Запустите test.sh локально и убедитесь, что он возвращает 0 при успехе |
| 5 | Sandbox создаётся и изолирован | Запустите два теста одновременно и убедитесь, что они не влияют друг на друга |
| 6 | Трассировка сохраняется в LangSmith | Откройте панель наблюдения и найдите трассировку для вашего теста |
Примеры использования в реальных проектах
Рассмотрим несколько сценариев, где единый стек для оценки AI‑агентов может быть особенно полезен. В первом сценарии команда разрабатывает агента для автоматизации обработки заказов в интернет‑магазине. Агент должен читать входящие письма, извлекать данные о товарах и количестве, проверять наличие на складе и формировать ответ. Без изолированных тестов сложно гарантировать, что агент корректно обработает все варианты: от стандартного заказа до ситуации с отсутствием товара. С помощью Harbor команда создаёт несколько тестовых сценариев, каждый в своём sandbox‑е, и запускает их параллельно. Трассировки показывают, на каком шаге агент ошибается, например, неправильно парсит дату или неверно интерпретирует количество.
Во втором сценарии стартап разрабатывает AI‑агента для генерации отчётов на основе данных из нескольких источников. Агент должен подключаться к API, загружать данные, объединять их и формировать PDF‑файл. Проблема в том, что внешние API могут быть недоступны или возвращать разные данные в разное время. Используя sandbox‑ы, команда изолирует тесты от внешних зависимостей, подменяя API моками. Это позволяет проверять логику агента без риска, что тест упадёт из‑за временной недоступности сервиса. Трассировки помогают увидеть, какие запросы делает агент и как он обрабатывает ответы.
Третий сценарий – это команда, которая обучает агента для поддержки пользователей в чате. Агент должен отвечать на вопросы, используя базу знаний, и при необходимости передавать сложные запросы человеку. Тестирование таких агентов требует проверки не только правильности ответов, но и того, как агент реагирует на нестандартные вопросы или оскорбления. С помощью Harbor команда создаёт набор тестов с различными типами запросов и запускает их в изолированных средах. Трассировки показывают, какие шаги предпринял агент, и позволяют улучшить его поведение в сложных ситуациях.
Сравнение с альтернативными подходами
Существует несколько способов тестирования AI‑агентов, и каждый имеет свои сильные и слабые стороны. Рассмотрим основные альтернативы и сравним их с подходом Harbor + LangChain.
Локальное тестирование – самый простой способ: вы запускаете агента на своей машине и вручную проверяете результаты. Плюсы: не требует дополнительных затрат и легко настраивается. Минусы: результаты не воспроизводимы на других машинах, невозможно масштабировать, нет трассировок. Этот подход подходит для начальной разработки, но не для серьёзного тестирования.
Собственные скрипты на Python – вы пишете скрипты, которые запускают агента, проверяют результаты и сохраняют логи. Плюсы: полный контроль над процессом, можно интегрировать с любыми инструментами. Минусы: требуется много времени на разработку и поддержку, сложно масштабировать, нет встроенной изоляции. Этот подход хорош для небольших проектов, но становится неэффективным при росте числа тестов.
Готовые фреймворки для тестирования – например, pytest с плагинами для AI. Плюсы: стандартизированный подход, легко интегрируется с CI/CD. Минусы: не все фреймворки поддерживают изоляцию и трассировки, требуется настройка окружения. Этот вариант подходит для команд, которые уже используют pytest, но может не дать всех возможностей Harbor.
Harbor + LangChain – предлагает изолированные sandbox‑ы, масштабирование и трассировки «из коробки». Плюсы: минимальное время на настройку, воспроизводимость результатов, подробные логи. Минусы: стоимость облачных ресурсов, зависимость от стороннего сервиса. Этот подход оптимален для команд, которые хотят быстро получить надёжные результаты и готовы платить за удобство.
Источники
- Harbor x LangChain: A Unified Stack for Evaluating Agents
- Документация LangSmith по sandbox‑ам
- Репозиторий Harbor на GitHub
Темы журнала
Что почитать дальше
- agent-chat-ui: готовый ChatGPT-интерфейс для LangGraph-агента — быстро, но с риском
- agent-chat-ui: готовый фронтенд для LangGraph-агента
- 8 сервисов для проверки бензина: где есть топливо сейчас
- Процессная модель банка: почему реестр схем больше не работает как управленческий инструмент и что бизнес получает
- AI-агент для почты на Python: когда внедрять, а когда — нет