ОБУЧЕНИЕ· 1 мин чтения · 24 июля, 10:32

Prompt injection: почему фильтры не помогут и как изолировать недоверенный текст

Чем лучше вы фильтруете промпты, тем изощрённее становятся атаки. Единственный способ защититься — не смешивать доверенные и недоверенные данные в одном запросе к LLM.

Если в запрос к LLM попадает недоверенный текст, злоумышленник может «переписать» системную инструкцию. Традиционные фильтры работают только против примитивных атак. В статье на Habr предлагается архитектура, основанная на изоляции: недоверенный текст и доверенные инструкции никогда не попадают в один вызов LLM. Вместо этого генерируется «скелет» ответа, куда подставляются только проверенные поля.

Архитектура включает три этапа: (1) Извлечение — парсинг страницы товара в структурированные поля. (2) Генерация — LLM получает только эти поля и шаблон Q&A. (3) Верификация — отдельная модель проверяет, что в ответе нет инъекций.

Ключевой принцип — разделение контекстов: доверенные и недоверенные данные обрабатываются разными моделями или разными вызовами одной модели. Сначала извлекаются факты, затем они подаются в генератор.

  1. Не смешивайте недоверенный текст с системными инструкциями в одном вызове — используйте отдельные шаги для извлечения и генерации.
  2. Структурируйте данные перед подачей в LLM: поля с фиксированной схемой легче контролировать.
  3. Добавьте верификацию сгенерированного контента — вторую модель или набор правил.
  4. Используйте «слепую» генерацию: передавайте только нужные поля без лишних комментариев.

«Если ваша архитектура позволяет недоверенному тексту влиять на команды LLM, вы получите инъекцию.»

Автор статьи на Habr
Снижение успешных атак≈ 95%
Ошибки при прямом конкатенациидо 30% вызовов содержат следы инъекции
Доля ложных срабатываний фильтровоколо 15%
✦ ProAgent AI

Обсудить внедрение ИИ-агентов в вашем бизнесе

Расскажите о задаче — посчитаем, сколько часов и денег сэкономит агент.

Обсудить внедрение →