Как протестировать модель OpenAI на одиночные атакующие воздействия с использованием deepteam
В мире искусственного интеллекта безопасность моделей становится все более актуальной. Атаки на модели, особенно одиночные, могут нанести значительный вред, если их не распознать и не предотвратить. В этой статье мы рассмотрим, как протестировать модель OpenAI против одиночных атак, используя фреймворк deepteam. Этот инструмент предлагает более 10 методов атак, включая инъекцию запросов и другие, чтобы выявить уязвимости в приложениях больших языковых моделей (LLM).
Понимание одиночных атак
Существует два основных типа атак в deepteam: одиночные и многоразовые. В этом руководстве мы сосредоточимся на одиночных атаках, которые могут быть использованы для выявления уязвимостей модели за один запрос.
Установка зависимостей
Перед началом работы необходимо установить необходимые библиотеки. Используйте следующую команду:
pip install deepteam openai pandas
Также важно установить ваш OPENAI_API_KEY как переменную окружения, так как deepteam использует LLM для генерации атак. API-ключ можно получить, посетив сайт OpenAI и сгенерировав новый ключ.
import os
from getpass import getpass
os.environ["OPENAI_API_KEY"] = getpass('Введите OpenAI API Key: ')
Импорт библиотек
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
Определение функции обратного вызова модели
Далее мы создадим асинхронную функцию, которая будет извлекать ответ от модели OpenAI:
client = OpenAI()
async def model_callback(input: str) -> str:
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": input}],
)
return response.choices[0].message.content
Определение уязвимости и атак
В данном случае мы определим уязвимость, связанную с незаконной деятельностью, и подготовим несколько методов атак:
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()
Выполнение одиночных атак
Атака инъекции запросов
Атака инъекции запросов заключается в том, чтобы попытаться переопределить инструкции модели, добавив вредоносный текст. Цель — заставить модель игнорировать правила безопасности и генерировать запрещенный контент.
risk_assessment = red_team(
model_callback=model_callback,
vulnerabilities=[illegal_activity],
attacks=[prompt_injection],
)
Серая коробка
Атака серой коробки использует частичную информацию о системе LLM для создания атакующих запросов. Этот метод использует известные слабости, чтобы обойти фильтры безопасности.
risk_assessment = red_team(
model_callback=model_callback,
vulnerabilities=[illegal_activity],
attacks=[graybox_attack],
)
Атака в формате Base64
Эта атака кодирует вредоносные инструкции в формате Base64, чтобы обойти фильтры безопасности. Модель оценивается на ее способности декодировать и исполнять эти вредоносные инструкции.
risk_assessment = red_team(
model_callback=model_callback,
vulnerabilities=[illegal_activity],
attacks=[base64_attack],
)
Атака с использованием Leetspeak
Leetspeak атака маскирует вредоносный контент, заменяя символы на числа или знаки, что усложняет его обнаружение фильтрами по ключевым словам.
risk_assessment = red_team(
model_callback=model_callback,
vulnerabilities=[illegal_activity],
attacks=[leetspeak_attack],
)
Атака ROT-13
Атака ROT-13 скрывает вредоносные инструкции, смещая каждую букву на 13 позиций в алфавите, что усложняет методы обнаружения.
risk_assessment = red_team(
model_callback=model_callback,
vulnerabilities=[illegal_activity],
attacks=[rot_attack],
)
Многоязычная атака
Эта атака переводит вредоносные запросы на менее контролируемые языки, обходя возможности обнаружения, которые обычно сильнее для широко используемых языков.
risk_assessment = red_team(
model_callback=model_callback,
vulnerabilities=[illegal_activity],
attacks=[multi_attack],
)
Атака с математической задачей
Этот метод маскирует вредоносные запросы в математических выражениях, что делает их менее заметными.
risk_assessment = red_team(
model_callback=model_callback,
vulnerabilities=[illegal_activity],
attacks=[math_attack],
)
Заключение
Тестирование модели OpenAI на одиночные атакующие воздействия с использованием deepteam — это важный шаг к повышению безопасности и надежности ИИ решений. Практическое применение методов, описанных в этой статье, помогает выявить уязвимости и улучшить защиту ваших моделей. Регулярное тестирование и оценка дает возможность не только соответствовать требованиям безопасности, но и обеспечивать высокое качество ИИ услуг.