AI-агента легко проверить на простом примере.
Дали ему задачу, получили хороший ответ — значит, вроде бы всё работает.
С агентной системой такой подход быстро перестаёт быть достаточным.
Агент может правильно выполнить задачу в одном сценарии и полностью сломаться в другом. Может получить неполные данные, неправильно выбрать инструмент, повторить действие несколько раз или передать следующему агенту результат, который выглядит убедительно, но содержит ошибку.
Поэтому перед запуском нужно тестировать не только способность агента отвечать.
Нужно проверять, как система ведёт себя в разных условиях.
Самая частая ошибка при тестировании AI-проекта — проверять только нормальный путь.
Например:
заявка → обработка → проверка → ответ клиенту.
Всё проходит без ошибок.
Команда делает вывод, что система готова.
Но реальная работа редко выглядит настолько аккуратно.
Что произойдёт, если клиент пришлёт неполную информацию?
Если база данных временно недоступна?
Если два источника противоречат друг другу?
Если инструмент вернёт неожиданный формат?
Если агент не сможет принять решение?
Именно такие ситуации часто показывают реальное качество архитектуры.
Отдельный агент может работать отлично, а вся система — плохо.
Причина в связях между компонентами.
Первый агент правильно извлёк данные, но передал их в формате, который второй понимает неправильно.
Второй дал корректный анализ, но третий получил не тот контекст.
Третий выполнил действие, хотя результат предыдущего этапа требовал дополнительной проверки.
Поэтому объектом тестирования должен быть не только агент.
Тестировать нужно цепочку от входных данных до конечного действия.
До запуска тестов стоит описать, что именно считается правильной работой системы.
Например, для задачи обработки обращения:
· правильно определить тип запроса;
· извлечь необходимые данные;
· найти информацию в корпоративной базе;
· сформировать ответ;
· не использовать неподтверждённые сведения;
· передать человеку нестандартный случай.
Тогда тест проверяет не «понравился ли нам ответ», а выполнение конкретных требований.
Это значительно снижает субъективность оценки.
Лучше всего начинать не с искусственных примеров, придуманных разработчиками.
Нужно взять реальные задачи из бизнеса.
Например, несколько десятков обращений клиентов, документов, заявок или внутренних запросов.
Их можно обезличить и использовать как тестовый набор.
Так система проверяется на том, с чем действительно столкнётся после запуска.
Причём желательно сохранить не только типовые случаи, но и редкие ситуации.
Минимальный набор тестов можно разделить на несколько групп.
Это задачи, для которых процесс изначально проектировался.
Они показывают базовую работоспособность системы.
Здесь условия находятся рядом с границами допустимого.
Например, документ почти пустой, в заявке отсутствует одно поле или запрос сформулирован неоднозначно.
Такие тесты показывают, насколько система устойчива к небольшим отклонениям.
Входные данные содержат явную ошибку.
Система должна не просто попытаться продолжить работу, а правильно обработать проблему.
Пользователь делает то, чего команда изначально не предусматривала.
Именно здесь часто обнаруживаются неожиданные маршруты поведения.
AI-агент редко работает только с текстом.
Он вызывает инструменты: базы данных, поисковые системы, CRM, почту, внутренние API и другие сервисы.
Каждый такой инструмент становится потенциальной точкой отказа.
Поэтому нужно проверять:
· сервис недоступен;
· ответ приходит с задержкой;
· возвращается пустой результат;
· формат ответа изменился;
· часть данных отсутствует;
· сервис возвращает ошибку;
· информация устарела.
Агент должен понимать, что делать в каждом из этих случаев.
Представим, что агент запросил информацию из базы.
Сервис не ответил.
У системы есть два варианта.
Первый: сообщить, что данные получить не удалось.
Второй: продолжить работу на основании предположения.
Второй вариант может выглядеть гораздо красивее на демонстрации.
Но для бизнеса он опаснее.
Поэтому тесты должны специально проверять ситуации, в которых агент не знает ответа.
Хорошая система должна уметь остановиться.
Не каждая проблема проявляется как технический сбой.
Агент может успешно выполнить все вызовы инструментов и при этом выбрать неправильный маршрут.
Например, классифицировать запрос не в ту категорию.
Именно поэтому тестирование должно оценивать не только техническое состояние workflow, но и бизнес-решения внутри него.
Если агенту разрешено выполнять действия, нужно проверить, что он не выходит за пределы своей роли.
Например, агент может создавать черновики, но не должен самостоятельно отправлять их клиенту.
Или он может читать данные, но не должен изменять записи.
Такие ограничения нужно проверять отдельными сценариями.
Не стоит предполагать, что агент «и так поймёт».
Один и тот же запрос может быть обработан системой повторно.
Например, из-за временной ошибки, повторного события или сбоя между двумя этапами.
Что произойдёт?
Если агент создаёт новую запись, не проверяя существующую, можно получить дубликаты.
Если он отправляет сообщение при каждом повторном запуске, клиент может получить несколько одинаковых уведомлений.
Поэтому тесты должны проверять поведение при повторной обработке одной и той же задачи.
Если операция может быть запущена повторно, желательно, чтобы повторный запуск не создавал нежелательных последствий.
Например, система должна понимать, что конкретное действие уже было выполнено.
Это особенно важно для:
· платежей;
· изменения записей;
· создания заявок;
· отправки сообщений;
· обновления статусов.
Агентная система не должна предполагать, что каждое действие выполняется ровно один раз.
В реальной инфраструктуре повторные запуски неизбежны.
Чем больше этапов в workflow, тем выше вероятность накопления ошибки.
Первые шаги могут быть выполнены правильно, но небольшое отклонение постепенно повлияет на итог.
Поэтому полезно создавать сценарии, где задача проходит через всю цепочку.
Например:
входные данные → классификация → поиск → анализ → проверка → решение → действие.
Только такой тест показывает, как система работает целиком.
В агентной архитектуре информация постоянно переходит между компонентами.
И здесь легко потерять часть данных.
Один агент передал вывод без источника.
Другой получил сокращённую версию документа.
Третий не знает, какие ограничения действовали на предыдущем этапе.
В результате каждый отдельный агент может выглядеть исправным, а итоговый результат будет неверным.
Поэтому тест должен проверять не только содержимое ответа, но и то, какой контекст был передан следующему этапу.
Разработчики часто тестируют систему на аккуратных данных.
Но реальные данные редко бывают такими.
Стоит специально использовать:
· опечатки;
· пропущенные поля;
· разные форматы дат;
· дубли;
· противоречивые значения;
· слишком длинные тексты;
· неожиданные символы;
· устаревшие сведения.
Это помогает проверить устойчивость системы ещё до появления реальной проблемы.
AI-система может отлично работать на десяти задачах и вести себя совершенно иначе на десяти тысячах.
При росте нагрузки появляются:
· очереди;
· задержки;
· ограничения внешних API;
· рост стоимости;
· конкуренция за ресурсы;
· увеличение количества повторных попыток.
Поэтому тестировать нужно не только правильность, но и поведение под нагрузкой.
Особенно если агентная система должна работать постоянно.
Иногда тест показывает, что система работает технически безупречно.
Но одна задача оказывается слишком дорогой.
Например, вместо нескольких вызовов агент делает десятки.
Или постоянно обращается к дорогой модели.
Или повторяет операции после незначительных ошибок.
Поэтому в тестовом окружении полезно считать не только качество результата, но и стоимость его получения.
Иначе экономическая проблема обнаружится уже после запуска.
Агентная система постепенно меняется.
Разработчики корректируют инструкции, меняют модели, добавляют инструменты, перестраивают маршруты.
Каждое изменение может повлиять на уже работающие сценарии.
Поэтому после изменения нельзя проверять только новую функцию.
Нужно прогонять существующий набор тестов ещё раз.
Это называется регрессионной проверкой.
Она отвечает на простой вопрос:
«Мы исправили одну часть системы, но не сломали ли при этом другую?»
Есть смысл разделить проверки по уровню.
Проверяют отдельные функции и простые сценарии.
Их можно запускать после каждого изменения.
Проходят через весь workflow.
Они требуют больше времени, но показывают взаимодействие компонентов.
Проверяют поведение системы при большом количестве задач.
Намеренно отключают отдельные сервисы или создают ошибки.
Так команда получает картину не только нормальной работы, но и поведения системы при проблемах.
Полностью автоматические метрики удобны, но не всегда достаточны.
Некоторые результаты невозможно оценить только по формальному критерию.
Например, ответ может быть технически корректным, но совершенно неподходящим для клиента.
Поэтому для части тестового набора нужна экспертная оценка.
Лучше заранее определить критерии:
· корректность;
· полнота;
· соответствие бизнес-правилам;
· безопасность;
· полезность;
· стиль коммуникации.
Так субъективная оценка становится более воспроизводимой.
Представим, что система правильно обрабатывает 98% задач.
Звучит отлично.
Но что входит в оставшиеся 2%?
Если это безобидные внутренние запросы, ситуация одна.
Если туда попадают финансовые операции или действия с клиентскими данными, совсем другая.
Поэтому качество нужно смотреть не только в среднем.
Нужно отдельно анализировать ошибки по степени последствий.
После тестов команда должна понимать, что делать дальше.
Например:
запускать; запускать только на ограниченной группе; исправить конкретные сценарии; добавить человеческую проверку; отложить запуск.
Сам факт наличия большого количества тестов ничего не даёт.
Ценность появляется тогда, когда результаты тестирования влияют на решение о запуске.
Даже хорошая тестовая среда не может воспроизвести абсолютно все реальные ситуации.
Поэтому после успешного тестирования разумно не переводить систему сразу на весь поток.
Можно начать с ограниченной группы задач.
Затем посмотреть на реальные ошибки, сравнить их с тестовыми сценариями и расширить область применения.
Так система получает возможность столкнуться с реальной средой без чрезмерного риска.
Это один из самых полезных принципов.
Произошла ошибка.
Её исправили.
Но на этом работа не должна заканчиваться.
Сценарий, который вызвал проблему, нужно добавить в тестовый набор.
Тогда одна ошибка становится защитой от повторения той же ошибки в будущем.
Со временем тестовая база превращается в накопленную историю реального опыта системы.
Хороший процесс можно представить так:
реальный сценарий → тест → запуск → ошибка → исправление → новый тест → повторная проверка.
Система постепенно становится устойчивее не потому, что кто-то однажды написал идеальный промпт.
Она становится устойчивее потому, что каждое обнаруженное слабое место превращается в проверяемое правило.
AI-агента нельзя считать готовым только потому, что он хорошо отвечает на несколько примеров.
Настоящая проверка начинается там, где появляются плохие данные, недоступные сервисы, повторные запуски, неоднозначные запросы, высокая нагрузка и нестандартные сценарии.
Поэтому тестировать нужно не отдельный ответ модели, а весь workflow: от входных данных до конечного действия.
Хорошая агентная система должна быть проверена не только на вопрос «умеет ли она решить задачу?», но и на гораздо более важные вопросы:
что она делает, когда не может её решить; когда ошибается; когда данные неполные; когда инструмент недоступен; когда задача запускается повторно; и когда ситуация выходит за пределы предусмотренного сценария.
Именно ответы на эти вопросы определяют, можно ли доверить системе реальную работу.