Prompt injection: почему фильтры не помогут и как изолировать недоверенный текст
Чем лучше вы фильтруете промпты, тем изощрённее становятся атаки. Единственный способ защититься — не смешивать доверенные и недоверенные данные в одном запросе к LLM.
Если в запрос к LLM попадает недоверенный текст, злоумышленник может «переписать» системную инструкцию. Традиционные фильтры работают только против примитивных атак. В статье на Habr предлагается архитектура, основанная на изоляции: недоверенный текст и доверенные инструкции никогда не попадают в один вызов LLM. Вместо этого генерируется «скелет» ответа, куда подставляются только проверенные поля.
Архитектура включает три этапа: (1) Извлечение — парсинг страницы товара в структурированные поля. (2) Генерация — LLM получает только эти поля и шаблон Q&A. (3) Верификация — отдельная модель проверяет, что в ответе нет инъекций.
Ключевой принцип — разделение контекстов: доверенные и недоверенные данные обрабатываются разными моделями или разными вызовами одной модели. Сначала извлекаются факты, затем они подаются в генератор.
- Не смешивайте недоверенный текст с системными инструкциями в одном вызове — используйте отдельные шаги для извлечения и генерации.
- Структурируйте данные перед подачей в LLM: поля с фиксированной схемой легче контролировать.
- Добавьте верификацию сгенерированного контента — вторую модель или набор правил.
- Используйте «слепую» генерацию: передавайте только нужные поля без лишних комментариев.
«Если ваша архитектура позволяет недоверенному тексту влиять на команды LLM, вы получите инъекцию.»
Обсудить внедрение ИИ-агентов в вашем бизнесе
Расскажите о задаче — посчитаем, сколько часов и денег сэкономит агент.
Обсудить внедрение →