Защита языковой модели отличается от защиты обычного веб-приложения одной принципиальной особенностью: пользовательский ввод для LLM — это не только данные, но и потенциальная инструкция.

В обычном приложении строка остаётся строкой. В LLM пользовательский текст интерпретируется самой моделью, поэтому граница между «данными» и «командой» становится значительно менее очевидной.

Отсюда появляются prompt injection, попытки извлечения системных инструкций, обход ограничений и утечки информации через ответы модели.

С этой проблемой мы столкнулись при разработке FlautFast — нашей LLM внутри инфраструктуры FlautCompany.

В отделе FlautSecurity мы решили не пытаться закрыть все эти проблемы одним классификатором. Так появился FlautGuard — защитный слой между пользователем и моделью.

В этой статье я расскажу, как он устроен, какие ошибки мы допустили при разработке и что показало тестирование на реальном пользовательском трафике.

Читать далее