Агент может дать связный и убедительный ответ, при этом сфабриковав цифры — просто потому что вызванный инструмент вернул пустой результат. Именно такую ситуацию обнаружила команда AWS при разработке тестового агента для поиска туристической информации на базе Strands Agents SDK и Amazon Bedrock: агент иногда выдавал подозрительно точные числа там, где данных не было вовсе.

Проблема системная. Стандартное тестирование программного обеспечения проверяет, совпадает ли вывод с ожидаемым. Для ИИ-агентов, которые самостоятельно выбирают инструменты и выстраивают последовательность операций, этого недостаточно. Агент может прийти к правильному выводу, пропустив обязательные шаги верификации. Он может вызвать нужный инструмент с неверными параметрами. Эти сбои не видны на поверхности финального ответа — их можно обнаружить только анализируя трейс выполнения целиком.

ФазаКомандаЧто делает
Plan/evalkit.planЧитает код агента, формирует план оценки с метриками
Data/evalkit.dataГенерирует тест-кейсы с входными данными и ожидаемыми результатами
Trace/evalkit.traceДобавляет OpenTelemetry-трассировку; автоопределяет фреймворк
Run agent/evalkit.run_agentПрогоняет агента по тест-кейсам, сохраняет структурированные трейсы
Eval/evalkit.evalРеализует метрики как код и запускает их против трейсов
Report/evalkit.reportФормирует приоритизированные рекомендации с указанием мест в коде

Agent-EvalKit решает именно эту задачу. Тулкит распространяется под лицензией Apache 2.0 и встраивается в существующую среду разработки через ИИ-ассистентов — Claude Code, Kiro CLI или Kilo Code. Разработчик описывает цели оценки на естественном языке, а ассистент берёт на себя всю инфраструктурную работу: читает исходный код агента, генерирует тест-кейсы, инструментирует агент трассировкой, прогоняет тесты и формирует отчёт.

Работа организована в шесть фаз — от анализа кода и генерации тест-кейсов до сбора трейсов и финального отчёта с рекомендациями.

Diagram showing the Agent-EvalKit flow from generated test cases through tracing, agent execution, and metric evaluation to a final report
Diagram showing the Agent-EvalKit flow from generated test cases through tracing, agent execution, and metric evaluation to a final report · Источник: AWS Machine Learning Blog

Работа организована в шесть последовательных фаз, каждая из которых вызывается slash-командой. Фаза `/evalkit.plan` анализирует определения инструментов, системный промпт и конфигурацию фреймворка, формируя план оценки с конкретными метриками. Фаза `/evalkit.data` генерирует тест-кейсы с входными данными и ожидаемыми результатами — либо создаёт их с нуля, либо использует уже существующие данные из продакшн-логов. Фаза `/evalkit.trace` добавляет OpenTelemetry-совместимую трассировку; для Strands, LangGraph и CrewAI инструментация применяется автоматически после определения фреймворка. Фаза `/evalkit.run_agent` прогоняет агента по каждому тест-кейсу и сохраняет структурированный трейс с историей вызовов инструментов, ответами модели и промежуточным состоянием. Фаза `/evalkit.eval` реализует метрики в виде исполняемого кода и запускает их против собранных трейсов, используя DeepEval или Strands Evals SDK. Финальная фаза `/evalkit.report` анализирует паттерны по всем тест-кейсам и выдаёт приоритизированные рекомендации с указанием конкретных строк кода и ожидаемым эффектом от каждого исправления.

Выбор метрик в Agent-EvalKit отражает реальную сложность оценки агентов. Три ключевых измерения — faithfulness (соответствие ответа тому, что реально вернули инструменты), корректность вызовов инструментов (нужные инструменты с правильными параметрами) и качество финального вывода — не коррелируют между собой и должны проверяться независимо. Для этого тулкит комбинирует два подхода: code-based evaluators дают быстрые воспроизводимые результаты, но штрафуют за валидные вариации; LLM-as-judge обеспечивает нюансированную оценку ценой дополнительного инференса. Большинство эффективных стратегий оценки используют оба.

Главное отличие Agent-EvalKit от автономных платформ оценки — то, что весь процесс происходит внутри среды разработки. Тот же ассистент, который помогает писать агента, помогает его тестировать. Артефакты каждой фазы сохраняются в директории `eval/` и служат входными данными для следующей. Любую фазу можно перезапустить с другими инструкциями, не перестраивая весь пайплайн с нуля — например, сместить фокус с общей точности на галлюцинации при пустых ответах инструментов.