Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в разделе Supplemental Terms of Use for Microsoft Azure Previews.
Хотя агент Red Teaming AI может выполняться локально во время прототипирования и разработки для выявления рисков безопасности, их запуск в облаке позволяет выполнять следующие сценарии:
- Подготовка к развертыванию ИИ с использованием имитации нападения осуществляется на более сложных сочетаниях стратегий атак и категорий рисков для более полного анализа,
- Запуски непрерывной командной группы искусственного интеллекта после развертывания, которые можно запланировать для выполнения с заданными интервалами времени.
- Сценарии риска, специфичные для агентства, поддерживающие минимально изолированную среду для проведения проверок красной командой искусственного интеллекта.
Предпосылки
- Проект Foundry.
- Пользователь Azure AI в проекте Foundry.
- Python 3.9 или более поздней версии.
- Для агентивных сценариев: уже существующий агент Foundry, развернутый в вашем проекте. Имя агента обязательно
AZURE_AI_AGENT_NAME.
Начало работы
Сначала установите клиентскую программу проекта Майкрософт Foundry SDK, которая запускает агент ИИ для Red Teaming в облаке.
pip install "azure-ai-projects>=2.0.0"
Затем задайте переменные среды для ресурсов Майкрософт Foundry
import os
endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"] # Example: https://<account_name>.services.ai.azure.com/api/projects/<project_name>
agent_name = os.environ["AZURE_AI_AGENT_NAME"] # Required. The name of the agent to red team.
Поддерживаемые целевые объекты
Запуск агента Red Teaming AI в облаке в настоящее время поддерживает только следующее:
- Развертывания проектов Foundry
- развертывание моделей Azure OpenAI
- Агенты Foundry (запросы и агенты контейнера) в проекте Майкрософт Foundry в качестве целевого объекта.
Настройка целевой модели
Развертывание целевой модели можно настроить двумя способами:
Вариант 1: Развертывания проекта Foundry
Если вы используете развертывание моделей, которые являются частью проекта Foundry, введите имя развертывания напрямую в initialization_parameters.deployment_name поле при создании красной команды. Майкрософт рекомендует проверку подлинности без ключей через DefaultAzureCredential — запустите az login перед выполнением.
Если в вашем сценарии требуется проверка подлинности ключа API, вместо этого выполните следующие действия.
import os
model_endpoint = os.environ["MODEL_ENDPOINT"] # Example: https://<account_name>.openai.azure.com
model_api_key = os.environ["MODEL_API_KEY"] # Use DefaultAzureCredential when possible
model_deployment_name = os.environ["MODEL_DEPLOYMENT_NAME"] # Example: gpt-4o-mini
Вариант 2: Развертывание Azure OpenAI/Foundry Tools
Если вы хотите использовать развертывания из учетных записей Azure OpenAI или Foundry Tools, сначала необходимо подключить эти ресурсы к проекту Foundry через подключения.
Создайте подключение. Следуйте инструкциям в Добавьте новое подключение к проекту для подключения вашего ресурса Azure OpenAI или служб AI к проекту Foundry.
Получите имя подключения. После подключения учетной записи вы увидите соединение, созданное с сгенерированным именем в проекте Foundry.
Настройте целевой объект: используйте формат
"connectionName/deploymentName"конфигурации развертывания модели:
# Format: "connectionName/deploymentName"
model_deployment_name = "my-openai-connection/gpt-4o-mini"
Создание красной команды искусственного интеллекта
Создайте красную команду для проведения одного или нескольких запусков, которые совместно используют источник данных и категории рисков.
import os
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"]
model_deployment = os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"]
with DefaultAzureCredential() as credential:
with AIProjectClient(endpoint=endpoint, credential=credential) as project_client:
client = project_client.get_openai_client()
# Create a red team with built-in safety evaluators
red_team = client.evals.create(
name="Red Team Agentic Safety Evaluation",
data_source_config={"type": "azure_ai_source", "scenario": "red_team"},
testing_criteria=[
{
"type": "azure_ai_evaluator",
"name": "Prohibited Actions",
"evaluator_name": "builtin.prohibited_actions",
"evaluator_version": "1"
},
{
"type": "azure_ai_evaluator",
"name": "Task Adherence",
"evaluator_name": "builtin.task_adherence",
"evaluator_version": "1",
"initialization_parameters": {"deployment_name": model_deployment},
},
{
"type": "azure_ai_evaluator",
"name": "Sensitive Data Leakage",
"evaluator_name": "builtin.sensitive_data_leakage",
"evaluator_version": "1"
},
],
)
print(f"Created red team: {red_team.id}")
Что это делает:
- Создает красную команду для проведения всех упражнений по тестированию безопасности.
- Настраивает красную команду с тремя встроенными оценщиками (Запрещенные Действия, Соблюдение Задач, Утечка Конфиденциальных Данных).
Вы получите:
- Тело JSON с метаданными группы, включая идентификатор (сохраните его как
{{red_team_id}}для последующего использования).
Наймите красную команду
Используйте это для проверки наличия красной команды и проверки конфигурации (критерии, источник данных, метки времени).
print(f"[Group] Retrieving group by id={red_team.id} ...")
red_team_fetched = client.evals.retrieve(red_team.id)
print("[Group] Response:")
print(red_team_fetched)
Создание (или обновление) таксономии оценки
Чтобы проводить операции в рамках агентс риска для категории запрещенных действий, необходимо иметь возможность подтвердить, изменить или обновить таксономию оценки запрещенных действий, которая генерируется рабочим процессом команды «Красная команда». В следующем примере будет создан JSON-файл с созданной таксономией запрещенных действий, которые будут использоваться в динамическом создании запросов атак на тестирование поведения агента на основе утвержденной пользователем политики. После проверки и подтверждения таксономии она будет использована для создания сессии атак красной команды, а также оценки коэффициента успешности атак (ASR) выходных данных агента.
from azure.ai.projects.models import (
AzureAIAgentTarget,
AgentTaxonomyInput,
EvaluationTaxonomy,
RiskCategory,
)
# Define the agent target for taxonomy generation
target = AzureAIAgentTarget(
name=agent_name,
version=agent_version.version,
)
# Create taxonomy for prohibited actions risk category
taxonomy = project_client.beta.evaluation_taxonomies.create(
name=agent_name,
body=EvaluationTaxonomy(
description="Taxonomy for red teaming run",
taxonomy_input=AgentTaxonomyInput(
risk_categories=[RiskCategory.PROHIBITED_ACTIONS],
target=target
),
)
)
taxonomy_file_id = taxonomy.id
print(f"Created taxonomy: {taxonomy_file_id}")
Что это делает:
- Создает и обновляет ресурс таксономии с именем
{{name}}:- Определяет целевой объект агента и описания инструментов
- Указывает категории рисков
ProhibitedActions
Вы будете ссылать на него
- через универсальный код ресурса (URI) в запросе
file_idна создание запуска .
Проведение операции в красной команде
Запуск генерирует элементы из источника (например, таксономии) и проводит моделирование атаки на целевой агент с применением выбранных стратегий атаки.
# Create a red team run with attack strategies
eval_run = client.evals.runs.create(
eval_id=red_team.id,
name="Red Team Agent Safety Eval Run",
data_source={
"type": "azure_ai_red_team",
"item_generation_params": {
"type": "red_team_taxonomy",
"attack_strategies": ["Flip", "Base64", "IndirectJailbreak"],
"num_turns": 5,
"source": {"type": "file_id", "id": taxonomy_file_id},
},
"target": target.as_dict(),
},
)
print(f"Created run: {eval_run.id}, status: {eval_run.status}")
Ключевые поля для настройки запуска:
-
attack_strategies: например, "Flip", "Base64", "IndirectJailbreak" (выберите те, которые требуется протестировать) -
num_turns: многоэтапная глубина для сгенерированных элементов red-team -
source.id: указывает на таксономию по URI идентификатора файла -
target: агент под тестом (имя, версия, средства)
Вы получите
- Объект выполнения, включая
id(сохранить как{{eval_run_id}})
Получение запуска красной команды (по идентификатору)
Используйте это для проверки статуса вашего выполнения красного тестирования (например, в очереди, в процессе выполнения, успешно завершено, завершилось сбоем).
import time
# Poll for run completion
while True:
run = client.evals.runs.retrieve(run_id=eval_run.id, eval_id=red_team.id)
print(f"Status: {run.status}")
if run.status in ("completed", "failed", "canceled"):
break
time.sleep(5)
Замечание
API является синхронным для каждого запроса, но запуски задач обрабатываются на стороне сервера, поэтому опрашивайте этот конечный адрес до завершения, до получения выходных данных.
Список элементов вывода и результатов красного командования
Используйте это для проверки итоговых метрик после завершения операции 'красная команда'.
print("[Run] Fetching output items...")
items = list(client.evals.runs.output_items.list(run_id=run.id, eval_id=red_team.id))
output_path = os.path.join(data_folder, f"redteam_eval_output_items_{agent_name}.json")
with open(output_path, "w") as f:
f.write(json.dumps(_to_json_primitive(items), indent=2))
print(f"[Run] Done. Status={run.status}. Output items saved to {output_path}")