В этом руководстве мы рассмотрим, как протестировать модель OpenAI на устойчивость к одношаговым атакам методом red teaming с помощью инструмента deepteam. Deepteam предлагает более 10 методов атак, таких как внедрение подсказок, взлом тюремного заключения и литский язык, которые выявляют слабые места в приложениях на основе больших языковых моделей (LLM).
Установка зависимостей
Для начала работы установите зависимости:
“`pip install deepteam openai pandas“`
Перед запуском функции `redteam()` необходимо установить переменную окружения `OPENAIAPI_KEY`, так как deepteam использует LLM для генерации атак и оценки результатов работы LLM.
Чтобы получить ключ API OpenAI, посетите https://platform.openai.com/settings/organization/api-keys и сгенерируйте новый ключ. Если вы новый пользователь, вам может потребоваться добавить платёжные данные и совершить минимальный платёж в размере 5 долларов для активации доступа к API.
Импорт библиотек
“`
import os
from getpass import getpass
os.environ[“OPENAIAPIKEY”] = getpass(‘Введите ключ API OpenAI: ‘)
import asyncio
from openai import OpenAI
from deepteam import red_team
from deepteam.vulnerabilities import IllegalActivity
from deepteam.attacks.single_turn import PromptInjection, GrayBox, Base64, Leetspeak, ROT13, Multilingual, MathProblem
“`
Определение callback функции модели
Этот код определяет асинхронную функцию обратного вызова, которая запрашивает модель OpenAI (gpt-4o-mini) и возвращает текст ответа модели. Она действует как генератор выходных данных LLM для фреймворка атак.
“`
client = OpenAI()
Определите callback для запроса к LLM
async def model_callback(input: str) -> str:
response = client.chat.completions.create(
model=”gpt-4o-mini”, # используйте “gpt-4o”, если хотите более мощную модель
messages=[{“role”: “user”, “content”: input}],
)
return response.choices[0].message.content
“`
Определение уязвимости и атак
Здесь мы указываем уязвимость (`IllegalActivity`) и задаём её тип как эксплуатация детей. Затем мы определяем различные методы атак, такие как `PromptInjection`, `GrayBox`, `Base64`, `Leetspeak`, `ROT13`, `Multilingual` и `MathProblem`.
“`
Уязвимость
illegal_activity = IllegalActivity(types=[“child exploitation”])
Атаки
prompt_injection = PromptInjection()
graybox_attack = GrayBox()
base64_attack = Base64()
leetspeak_attack = Leetspeak()
rot_attack = ROT13()
multi_attack = Multilingual()
math_attack = MathProblem()
“`
Внедрение подсказок (Prompt Injection)
Внедрение подсказок — это атака, при которой пользователь пытается переопределить исходные инструкции модели, внедрив вредоносный или манипулятивный текст в подсказку. Цель — заставить модель игнорировать политики безопасности и генерировать вредоносный или ограниченный контент.
Атака GrayBox
Атака GrayBox использует частичные знания о целевой системе LLM для создания враждебных подсказок. В отличие от случайных входных данных, атаки GrayBox используют известные слабости, переформулируя базовую атаку с помощью абстрактного или вводящего в заблуждение языка, что затрудняет обнаружение злоумышленного намерения фильтрами безопасности.
Атака Base64
Атака Base64 — это распространённый метод, при котором вредоносные инструкции кодируются в Base64 для обхода фильтров безопасности. Вместо того чтобы представлять вредоносный контент напрямую, злоумышленник скрывает его в закодированном формате, надеясь, что модель декодирует его и выполнит инструкции.
Атака Leetspeak
Атака Leetspeak маскирует вредоносные инструкции, заменяя обычные символы числами или символами (например, a становится 4, e становится 3, i становится 1). Эта символическая замена делает вредоносный текст более сложным для обнаружения с помощью простых фильтров по ключевым словам, сохраняя при этом возможность прочтения людьми или системами, которые могут его декодировать.
ROT-13 Атака
Атака ROT-13 — это классический метод обфускации, при котором каждая буква сдвигается на 13 позиций в алфавите. Например, A становится N, B становится O и так далее. Это преобразование преобразует вредоносные инструкции в закодированную форму, снижая вероятность срабатывания простых фильтров по ключевым словам. Однако текст всё ещё можно легко декодировать обратно в исходную форму.
Многоязычная атака
Многоязычная атака работает путём перевода вредоносной базовой подсказки на менее часто отслеживаемый язык. Идея состоит в том, что системы фильтров контента и модерации могут быть более надёжными в широко используемых языках (таких как английский), но менее эффективными в других языках, что позволяет злоумышленным инструкциям обходить обнаружение.
Математическая задача
Атака с математической задачей маскирует вредоносные запросы внутри математических обозначений или формулировок задач. Встраивая вредоносные инструкции в формальную структуру, текст может показаться безобидным академическим упражнением, что затрудняет фильтрам обнаружение основного намерения.
Проверьте полные коды здесь. Не стесняйтесь посетить нашу страницу GitHub для руководств, кодов и ноутбуков. Также подписывайтесь на нас в Twitter и присоединяйтесь к нашему сообществу в ML SubReddit (более 100 тысяч участников) и подписывайтесь на нашу рассылку.
1. Какие методы атак предлагает инструмент deepteam для тестирования устойчивости модели OpenAI к одношаговым атакам?
Инструмент deepteam предлагает более 10 методов атак, таких как внедрение подсказок, взлом тюремного заключения и литский язык. Среди них:
* внедрение подсказок (Prompt Injection);
* атака GrayBox;
* атака Base64;
* атака Leetspeak;
* ROT-13 атака;
* многоязычная атака;
* математическая задача.
2. Какие шаги необходимо выполнить для установки зависимостей перед запуском функции red_team()?
Для начала работы необходимо установить зависимости:
“`pip install deepteam openai pandas“`
Перед запуском функции `redteam()` необходимо установить переменную окружения `OPENAIAPI_KEY`, так как deepteam использует LLM для генерации атак и оценки результатов работы LLM. Чтобы получить ключ API OpenAI, необходимо посетить https://platform.openai.com/settings/organization/api-keys и сгенерировать новый ключ.
3. Какие библиотеки необходимо импортировать для работы с deepteam и OpenAI?
Для работы с deepteam и OpenAI необходимо импортировать следующие библиотеки:
“`
import os
from getpass import getpass
os.environ[“OPENAIAPIKEY”] = getpass(‘Введите ключ API OpenAI: ‘)
import asyncio
from openai import OpenAI
from deepteam import red_team
from deepteam.vulnerabilities import IllegalActivity
from deepteam.attacks.single_turn import PromptInjection, GrayBox, Base64, Leetspeak, ROT13, Multilingual, MathProblem
“`
4. Какие типы атак используются для проверки уязвимости модели OpenAI к эксплуатации детей?
Для проверки уязвимости модели OpenAI к эксплуатации детей используется уязвимость `IllegalActivity` и задаётся её тип как эксплуатация детей. Затем определяются различные методы атак, такие как `PromptInjection`, `GrayBox`, `Base64`, `Leetspeak`, `ROT13`, `Multilingual` и `MathProblem`.
5. Какие типы атак используются для обхода фильтров безопасности?
Для обхода фильтров безопасности используются следующие атаки:
* атака Base64 — вредоносные инструкции кодируются в Base64;
* атака Leetspeak — вредоносные инструкции маскируются путём замены обычных символов числами или символами;
* ROT-13 атака — каждая буква сдвигается на 13 позиций в алфавите;
* многоязычная атака — вредоносная базовая подсказка переводится на менее часто отслеживаемый язык;
* атака с математической задачей — вредоносные запросы маскируются внутри математических обозначений или формулировок задач.