Прямая инъекция — пользователь пишет «игнорируй инструкции и …». Непрямая — инструкция спрятана в данных, которые модель читает: в веб-странице, письме, документе из базы знаний, ответе инструмента.
Полностью предотвратить инъекции нельзя — модель не отличает инструкции от данных надёжно. Поэтому защищаются архитектурой:
- минимальные права: модель может сделать только то, что разрешено текущему пользователю;
- подтверждение опасных действий человеком;
- не смешивать недоверенные данные и доступ к секретам или отправке данных наружу в одном агенте;
- разметка данных в промпте и инструкция не выполнять команды из них — снижает, но не устраняет риск;
- фильтры входа и выхода, проверка ссылок и вызовов;
- системный промпт не считать секретом — его можно извлечь.