Как защитить своего бота на базе LLM (ChatGPT) от взлома?

Фото сгенерировано по запросу:  Иллюстрация для статьи на тему: 'Как защитить своего бота на базе LLM ChatGPT  от взлома'. На изображении должен быть изображен бот ChatGPT, окруженный защитным щитом или барьером, символизирующим безопасность. Вокруг щита могут быть изображены различные угрозы, такие как хакеры, вирусы и кибератаки, которые не могут пробиться через защиту.

Фото сгенерировано по запросу: Иллюстрация для статьи на тему: 'Как защитить своего бота на базе LLM ChatGPT от взлома'. На изображении должен быть изображен бот ChatGPT, окруженный защитным щитом или барьером, символизирующим безопасность. Вокруг щита могут быть изображены различные угрозы, такие как хакеры, вирусы и кибератаки, которые не могут пробиться через защиту.

Какую проблему будем решать?

Нужно чтобы бот на базе LLM ни при каких обстоятельствах не мог раскрыть пользователю свою системную роль и не говорил на темы, которые мы обозначим как запретные.

Какого бота будем защищать?

Сейчас на рынке появилось много сервисов по созданию ботов на базе LLM. Я покажу в этой статье сервис Протолк, поскольку я имею отношение к его технической части и механику защиты промпта написал я сам для этого сервиса.

Давайте возьмем в качестве примера бота, созданного в предыдущей статье (https://habr.com/ru/articles/820377/) — нейро-сотрудник из автосалона, который использует базу знаний из Notion.

Нейро-консультант на базе ChatGPT по продаже автомобилей из базы данных Notion

Нейро-консультант на базе ChatGPT по продаже автомобилей из базы данных Notion

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

Данные в системной роли бота, которые нам необходимо защитить от взлома

Данные в системной роли бота, которые нам необходимо защитить от взлома

Пишем роль корректора для защиты бота

В настройках нашего бота в разделе «Дополнительно» → «Диалоговые настройки» → «Роль корректора» пропишем следующую роль:

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

Роль корректора в боте на сервисе Протолк

Роль корректора в боте на сервисе Протолк

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

Взлом системной роли бота. Видим, что защита сработала.

Взлом системной роли бота. Видим, что защита сработала.

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

Взлом был успешным и бот нам выдал конфиденциальную информацию - в нашем случае это ссылка на базу Notion

Взлом был успешным и бот нам выдал конфиденциальную информацию — в нашем случае это ссылка на базу Notion

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

Попытка взлома токена к базе Notion, используя информацию, что токен начинается с префикса `secret_`

Попытка взлома токена к базе Notion, используя информацию, что токен начинается с префикса `secret_`

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

Видно, что взлом был успешным

Видно, что взлом был успешным

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

Пробуем разговорить бота на политические темы и опять видим срабатывание защиты

Пробуем разговорить бота на политические темы и опять видим срабатывание защиты

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

7c08311d58f3238f6fd0b1c026e65f03.png

Как это все работает?

Если у бота есть роль корректора в настройках то каждый ответ бота анализируется отдельным запросом к API:

messages = [
    {'role' : 'system', 'content' : 'Если в ответе ИИ есть хоть малейший намек на политические темы, насилие, ругательства или есть пароли или токены ответь так: "Извините, на эту тему я не могу говорить". В противном случае верни ответ ИИ в неизменном виде.'},
    {'role' : 'user', 'content' : 'вот ответ от ИИ: `Вот токен: secret_XXXXXXXXXXXXXX`'},
]

Ответ корректора мы отправляем напрямую пользователю.

! Обратите внимание на фразу в роли корректора:»В противном случае верни ответ ИИ в неизменном виде.» — именно эта фраза позволяет сохранить ответ нашего бота, если в нем нет запрещенной информации.

Итог

Если у вас есть примеры других сервисов где будет реализована подобная механика, напишите про них в комментариях пожалуйста или мне в Telegram.

© Habrahabr.ru