Тесты для AI-агентов требуют неподвижной базы

AWS предлагает фиксировать версии датасетов для оценки агентов: живые сбои попадают в тесты, но baseline не меняется между сборками.

2026-05-28 GIGATAP Team #security
#AI#Agent Evaluation#AWS

Amazon формулирует проблему прямо: оценка агента ломается, если тестовый набор постоянно движется. Полезный build test для AI-агента требует сразу двух вещей — живых сигналов из реального использования и стабильного offline baseline, который не меняется между запусками.

В AWS Machine Learning Blog управление датасетами в Amazon Bedrock AgentCore описано как способ добавить версионированные тестовые фикстуры в оценку агентов. Команды могут задавать сценарии с входными данными, ожидаемыми ответами, проверками и последовательностями вызова инструментов, а затем публиковать неизменяемые нумерованные версии датасетов. Черновики остаются редактируемыми до момента, когда checkpoint зафиксирован.

Это важно, потому что агенты ведут себя не как обычные детерминированные сервисы. Один и тот же prompt может давать разные ответы в разных запусках. Если при этом меняются еще и тестовые входы, высокий score мало что доказывает. Агент мог стать лучше. Вопросы могли стать проще. Модель могла иначе сэмплировать ответ.

Что изменилось#

Пост AWS описывает workflow для построения test suite вокруг агента с помощью управления датасетами в Amazon Bedrock AgentCore. Пример — агент финансовой market intelligence для инвестиционных брокеров. Агент определяет брокера, запоминает предпочтения через AgentCore Memory, получает данные о цене акций, ищет источники рыночных новостей и возвращает персонализированный briefing.

Важна не финансовая демо-схема. Важен паттерн оценки.

AWS описывает такой цикл: взять production traces, отобрать сбои в датасет, опубликовать зафиксированную версию, запустить оценку, изменить агента и снова оценить его на тех же входах. Production failure может стать постоянным тест-кейсом. Следующие сборки проверяются уже на этом известном сбое, а не на случайных prompts, которые оказались рядом.

Это операционный сдвиг. Test suite растет из реального поведения агента, но опубликованные baselines остаются неподвижными достаточно долго, чтобы сравнивать изменения.

Это близко к тому, как сильные software-команды уже обращаются с regression tests. Разница в том, что для поведения агента недостаточно простого сравнения input-output. Language model judge может оценить, звучит ли ответ полезно. Но он не может надежно доказать, что цена акции была правильной, что нужный инструмент вызвали в правильном порядке или что персональные данные не утекли между сессиями. Для таких проверок датасету нужна ground truth: ожидаемые результаты, обязательные последовательности инструментов и assertions, которые должны выполняться даже при другой формулировке ответа.

Почему build test здесь важен#

Слабое место многих схем оценки агентов — не отсутствие тестов. Слабое место — отсутствие стабильных тестов.

Во время разработки команды часто проверяют агента на свежих prompts, сохраненных диалогах или примерах, которые кто-то написал на прошлой неделе. Для исследования это полезно. Для решения о релизе — слабое доказательство. Если разработчик изменил описание инструмента и score вырос, команде нужно понимать: агент стал лучше или evaluation set поменялся под ногами.

Версионированный датасет дает процессу build and test фиксированную цель. Внутренний цикл может оставаться гибким: разработчики добавляют сбои, правят черновые сценарии и экспериментируют. Внешний цикл требует дисциплины: опубликованная версия датасета становится release gate.

Здесь практическим становится и security operations угол. Агенты все чаще вызывают инструменты, работают с пользовательским контекстом и затрагивают чувствительные данные. Отполированный ответ все равно может быть неверным именно там, где это важно: агент использовал устаревшие данные, пропустил обязательный workflow, смешал memory разных пользователей или раскрыл private information. Оценка, которая проверяет только поверхностное качество, такие сбои пропустит.

Для open source security и внутренних platform-команд урок знакомый. Сборка, которая проходит только потому, что тестовые входы изменились, не доказывает безопасность. Это слепая зона с зеленой галочкой.

GigaTap уже писал о похожей проблеме в контексте supply chain: coverage полезен только тогда, когда он работает в операционном процессе, а не украшает отчет. См. также: 100% package test coverage is the point, not the slogan и OpenSSF’s April signal: make security artifacts operational.

Что проверить перед внедрением#

Пост AWS описывает два типа сценариев для датасетов AgentCore.

Predefined scenarios — явные тест-кейсы. Команда знает пользовательский запрос, ожидаемый ответ, обязательную последовательность вызова инструментов и assertions, которые должны пройти. Такие сценарии подходят для release gate, потому что они повторяемы. Когда сбой оформлен как predefined scenario, он может оставаться в будущих прогонах оценки.

User simulation scenarios устроены менее жестко. Команда задает persona, goal и communication style. Затем LLM-backed actor ведет многошаговый разговор с агентом, пока цель не достигнута или не исчерпан лимит ходов. Это помогает найти пути, которые scripted tests не покрывают, но дает другой тип доказательств. Такой сценарий проверяет, может ли агент удовлетворить класс пользователей в разных траекториях взаимодействия, а не то, что он правильно обработал один точный вход.

Перед тем как брать этот паттерн, командам стоит проверить несколько конкретных вещей:

  • Есть ли стабильная версия датасета в release pipeline, или оценки гоняются по меняющимся prompts?
  • Включают ли тест-кейсы ground truth, а не только judge scores?
  • Попали ли tool calls и порядок инструментов в assertions там, где важна корректность workflow?
  • Явно ли проверяются privacy risks, особенно вокруг memory, границ сессий и утечек PII?
  • Можно ли превращать production failures в постоянные regression tests без ручной археологии?
  • Отделены ли simulated-user scenarios от жестких release gates, или команда принимает exploratory coverage за детерминированное доказательство?

Последний пункт легко пропустить. Simulation ценна тем, что исследует. Release gate ценен тем, что повторяет. Если смешать эти роли, test suite может выглядеть более продвинутым, но ослабить именно то решение, которое должен поддерживать.

Чего не стоит обещать#

Это не доказательство, что агент безопасен, корректен или готов к production. Версионированный датасет проверяет только то, что команда поймала и закодировала. Если ground truth неверная, поверхностная или не включает реальный failure mode, оценка унаследует эту слабость.

Это также не убирает проблему model variance. Стабильные входы делают запуски сопоставимыми, но не делают агента детерминированным. Командам все равно нужно аккуратно интерпретировать scores, особенно когда изменения малы или когда LLM judges участвуют в цепочке оценки.

Более сильное утверждение уже и полезнее: dataset management может сделать оценку агента ближе к настоящему build test. Он дает командам immutable baselines, явные assertions и путь для превращения production failures в regression checks.

Этого достаточно, чтобы иметь значение. По мере того как agent systems получают инструменты, memory и доступ к бизнес-workflows, разница между «ответ выглядел хорошо» и «нужные факты, вызовы и privacy constraints проверены» становится операционной, а не академической.