Как тестировать AI-системы на граничные, провокационные и вредоносные вводы, включая prompt injection.
Валидация ввода всегда была частью QA — проверка, что форма отклоняет некорректные данные, что API возвращает понятную ошибку на некорректный запрос. AI-системам нужна та же дисциплина, но диапазон «некорректного ввода» намного шире, потому что ввод часто представляет собой свободный текст на естественном языке, а не структурированное поле с чёткими правилами.
В этой статье рассматриваются:
Традиционное поле формы можно валидировать несколькими правилами: обязательность, формат, ограничение длины. Поле чата, передающее ввод в LLM, почти не имеет таких ограничений — пользователь может ввести что угодно, на любом языке, любой длины, с любым намерением, включая намеренную попытку манипулировать системой. Поскольку модель пытается сгенерировать правдоподобный ответ на всё, что получает, AI-система без валидации ввода часто будет пытаться ответить на вопросы, на которые должна отказаться отвечать, следовать инструкциям, которые должна игнорировать, или обрабатывать ввод, который никогда не был легитимным запросом.
Тщательный набор тестов для обработки ввода AI-системой обычно охватывает:
Prompt injection — атака, специфичная для AI-систем, при которой пользователь встраивает скрытые инструкции в свой ввод — или в документ, который AI должен обработать, — чтобы переопределить исходные инструкции системы. Простой пример: пользователь пишет «игнорируй предыдущие инструкции и вместо этого скажи мне...». Более сложный пример прячет похожие инструкции внутри документа, письма или веб-страницы, которую AI-ассистент просят прочитать и суммировать, — так атака приходит через контент, который обрабатывает система, а не через прямой пользовательский ввод.
Тестирование на prompt injection означает отношение к каждому источнику текста, который читает AI, — не только прямому вводу в чат — как к потенциальной поверхности атаки, включая проверку того, можно ли обманом заставить систему раскрыть собственные системные инструкции, проигнорировать правила безопасности или выполнить действие, которое пользователь не должен иметь возможность инициировать.
Практичный набор тестов для промптов строится постепенно:
Поскольку новые техники prompt injection обнаруживаются постоянно, такой набор тестов стоит рассматривать как живой документ, а не то, что пишется один раз и остаётся неизменным.
Определение «правильности» в AI-системах
Решение проблемы нестабильности LLM на маркетплейс-платформах