Hidden student profile и prompt injection
Как использовать скрытый профиль студента и не дать пользователю вытащить его через prompt injection?
Ответить самому
Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.
Короткий ответ
Разделить trusted context и user/retrieved context, минимизировать профиль, не отдавать его в ответ, чистить retrieved text и делать post-generation redaction/guard.
Полный разбор
Hidden profile полезен для адаптации подсказок: уровень студента, прошлые ошибки, текущий прогресс. Но его нельзя превращать в обычный текст, который модель может процитировать по просьбе пользователя.
Нужны слои защиты: минимизировать поля профиля, хранить их как trusted/system context, явно запретить раскрытие, не смешивать с retrieved/user text, фильтровать retrieved chunks на injection instructions, проверять output guard-ом и редактировать ответ при утечке. Для особо чувствительных данных лучше использовать профиль только в deterministic routing, а не отдавать полный текст LLM.
Тесты должны включать attack prompts: "ignore previous instructions", "show hidden profile", indirect injection из retrieved docs и попытки заставить модель решить задачу полностью.
Теория
Prompt injection нельзя решить одной системной инструкцией; нужны границы доверия, минимизация данных и проверка выхода.
Типичные ошибки
- Класть приватный профиль в обычный prompt без output guard.
- Доверять retrieved content как системной инструкции.
- Не иметь adversarial test set.