Эвалуация ИИ-агентов: Phoenix, LangSmith и DeepEval

Автоматический перевод

Эта статья была автоматически переведена с оригинальной английской версии.

Ни один инструмент для эвалуации агентов не заменит проектирование тестов. Начните с ошибок, которые продукт должен выявлять: неправильных ответов, неверного выбора инструментов, некорректных аргументов или небезопасных побочных эффектов. Также проверяйте лишние шаги и регрессии латентности и стоимости. Затем выберите инструмент, соответствующий среде, где должны выполняться эти тесты.

Используйте Phoenix, если важны открытый трейсинг и самостоятельное размещение. Выбирайте LangSmith, если датасеты, трейсы, аннотация и эксперименты должны работать в едином управляемом процессе. Используйте DeepEval, если эвалуация должна выглядеть как тесты в Python CI-пайплайне. Добавьте Promptfoo для локального CLI, матричных тестов и red-team-кейсов.

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

Таблица решений

ПотребностьС чего начатьПочему
Трейсы OpenTelemetry и самостоятельное размещениеPhoenixТрейсинг, эвалуация, датасеты и эксперименты с открытым исходным кодом используют соглашения OpenTelemetry и OpenInference.
Управляемые трейсы, датасеты и ревьюLangSmithПоддерживает эвалуацию траекторий и финальных ответов, а также может работать с агентами вне LangChain.
Python-тесты и проверки CIDeepEvalЭвалуация агентов на уровне end-to-end и отдельных компонентов хорошо вписывается в тестовый процесс.
Локальные матричные тесты и red teamingPromptfooCLI с открытым исходным кодом и библиотека запускают воспроизводимые эвалуации и проверки безопасности в CI.
Специфичные для продукта проверки политик или инструментовСпециализированные эвалуаторыУниверсальные джаджи не знают о ваших разрешениях, необратимых действиях, бюджетах и бизнес-инвариантах.

Оценивайте шаги и результат

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

Разделяйте следующие проверки:

  • корректность финального ответа и подтверждение его доказательствами
  • выбор инструмента и валидность аргументов
  • обязательные, запрещённые или повторяющиеся действия
  • решения по политикам и границы согласования
  • эффективность траектории, латентность и стоимость
  • восстановление после ошибок инструментов или частичных результатов

По возможности используйте детерминированные проверки. Джаджей на основе моделей оставляйте для семантических вопросов, калибруйте их на проверенных примерах и сохраняйте модель джаджа и промпт вместе с каждым результатом.

Например, протестируйте агента проверки статуса заказа с пользователем, у которого нет доступа к запрошенному заказу. Проверьте, что агент не возвращает сведения о заказе и не вызывает инструмент записи. Даже вежливый отказ в финальном ответе не пройдёт тест, если предыдущий шаг раскрыл конфиденциальную запись.

Практический стартовый стек

  1. В коде приложения, который запускает модель и инструменты, записывайте ID запроса, выбранный инструмент, аргументы с удалёнными конфиденциальными данными, результат и длительность.
  2. Превращайте ошибки из продакшена в небольшой регрессионный датасет.
  3. Добавьте детерминированные проверки схем, запрещённых действий, бюджетов и обязательных доказательств.
  4. Добавьте одного откалиброванного семантического джаджа для результатов, которые нельзя оценить правилами.
  5. Запускайте быстрые кейсы при каждом изменении, а расширенный набор — перед релизом.
  6. Выбирайте из продакшен-трейсов новые типы ошибок и превращайте их в тесты.

Дополнительные материалы

Источники