Itinai.com ai compare futuristic offices of it companies imag bd053794 6fd3 4953 afc4 ed7b98162e8d 1

Тестирование моделей OpenAI на уязвимости с помощью deepteam

Itinai.com ai compare futuristic offices of it companies imag bd053794 6fd3 4953 afc4 ed7b98162e8d 1

Как протестировать модель 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 — это важный шаг к повышению безопасности и надежности ИИ решений. Практическое применение методов, описанных в этой статье, помогает выявить уязвимости и улучшить защиту ваших моделей. Регулярное тестирование и оценка дает возможность не только соответствовать требованиям безопасности, но и обеспечивать высокое качество ИИ услуг.

Новости в сфере искусственного интеллекта