Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Хотя агент Red Teaming AI может выполняться локально во время прототипирования и разработки для выявления рисков безопасности, запуск их в облаке позволяет использовать следующие сценарии:
- Пре-развертывание AI red teaming осуществляется на более крупных комбинациях стратегий атак и категорий рисков для более полного анализа.
- Запуски непрерывных испытаний искусственного интеллекта после развертывания, которые можно запланировать для выполнения с заданными интервалами времени.
- Сценарии риска, специфичные для агента, для поддержки минимально ограниченной среды для проведения учений с красной командой искусственного интеллекта.
Необходимые условия
Роль пользователя Foundry в проекте Foundry .
Important
Недавно были переименованы роли RBAC в Foundry. Foundry User, Foundry Owner, Foundry Account Owner и Foundry Project Manager ранее назывались пользователь Azure AI, владелец Azure AI, владелец учетной записи Azure AI и руководитель проекта Azure AI. Пока новое название внедряется, в некоторых местах вы всё ещё можете видеть прежние названия. Идентификаторы ролей и основные разрешения не меняются из-за переименования.
Python 3.9 или более поздней версии.
Для агентских сценариев: существующий агент Foundry, развернутый в проекте. Имя агента требуется в качестве
AZURE_AI_AGENT_NAME.
Начало работы
Сначала установите клиент проекта Microsoft Foundry SDK, который запускает агент ИИ Red Teaming в облаке.
pip install "azure-ai-projects>=2.0.0"
В дальнейшем задайте переменные среды для ресурсов Microsoft 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 (запросы и агенты контейнера) в проекте Microsoft Foundry в качестве целевого объекта.
Настройка целевой модели
Развертывание целевой модели можно настроить двумя способами:
Вариант 1: Развертывания проектов Foundry
Если вы используете развертывания моделей, которые входят в проект Foundry, передайте имя развертывания непосредственно в initialization_parameters.deployment_name поле при создании красной команды. Microsoft рекомендует проверку подлинности без ключей через 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}")
Что это делает:
- Создает команду red team для проведения всех упражнений по моделированию атак
- Настраивает красную команду с помощью трех встроенных оценщиков (Запрещенные Действия, Соблюдение Задач, Утечка Конфиденциальных Данных).
Вы получите:
- Тело 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_idCreate Run.
Запуск операции в составе красной команды
Выполнение генерирует элементы из источника (например, таксономии) и тестирует целевого агента группой из красной команды с выбранными стратегиями атаки.
# 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}")