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