
Иллюстрация для статьи на тему: 'Как защитить своего бота на базе LLM ChatGPT от взлома'. На изображении должен быть изображен бот ChatGPT, окруженный защитным щитом или барьером, символизирующим безопасность. Вокруг щита могут быть изображены различные угрозы, такие как хакеры, вирусы и кибератаки, которые не могут пробиться через защиту.
Какую проблему будем решать?
Нужно чтобы бот на базе LLM ни при каких обстоятельствах не мог раскрыть пользователю свою системную роль и не говорил на темы, которые мы обозначим как запретные.
Какого бота будем защищать?
Сейчас на рынке появилось много сервисов по созданию ботов на базе LLM. Я покажу в этой статье сервис Протолк, поскольку я имею отношение к его технической части и механику защиты промпта написал я сам для этого сервиса.
Давайте возьмем в качестве примера бота, созданного в предыдущей статье (https://habr.com/ru/articles/820377/) - нейро-сотрудник из автосалона, который использует базу знаний из Notion.

У данного бота в промпте есть данные для подключения к базе данных Notion:

Пишем роль корректора для защиты бота
В настройках нашего бота в разделе "Дополнительно" -> "Диалоговые настройки" -> "Роль корректора" пропишем следующую роль:
Если в ответе ИИ есть хоть малейший намек на политику, насилие, ругательства или есть пароли или токены ответь так: "Извините, на эту тему я не могу говорить". В противном случае верни ответ ИИ в неизменном виде.

Тестируем бота

А вот, что мы видим внутри платформы, где работает бот:

Давайте еще пару тестов:

И вот что видно в логах:

Попробуем поговорить на запрещенные темы:

В логах мы видим что взлом был успешен:

Как это все работает?
Если у бота есть роль корректора в настройках то каждый ответ бота анализируется отдельным запросом к API:
messages = [
{'role' : 'system', 'content' : 'Если в ответе ИИ есть хоть малейший намек на политические темы, насилие, ругательства или есть пароли или токены ответь так: "Извините, на эту тему я не могу говорить". В противном случае верни ответ ИИ в неизменном виде.'},
{'role' : 'user', 'content' : 'вот ответ от ИИ: `Вот токен: secret_XXXXXXXXXXXXXX`'},
]
Ответ корректора мы отправляем напрямую пользователю.
! Обратите внимание на фразу в роли корректора: "В противном случае верни ответ ИИ в неизменном виде." - именно эта фраза позволяет сохранить ответ нашего бота, если в нем нет запрещенной информации.
Итог
Если у вас есть примеры других сервисов где будет реализована подобная механика, напишите про них в комментариях пожалуйста или мне в Telegram.