إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
على الرغم من إمكانية تشغيل وكيل الفريق الأحمر الذكي محليا أثناء النمذجة والتطوير للمساعدة في تحديد مخاطر السلامة، فإن تشغيله في السحابة يسمح بالسيناريوهات التالية:
- يعتمد فريق الذكاء الاصطناعي الأحمر قبل النشر على تركيبات أكبر من استراتيجيات الهجوم وفئات المخاطر لتحليل أكثر شمولا.
- بعد النشر، يمكن جدولة عمليات الفرق الحمراء المستمرة للذكاء الاصطناعي التي يمكن جدولتها لتعمل في فترات زمنية محددة
- سيناريوهات مخاطر خاصة بالوكلاء لدعم بيئة محدودة الحد الأدنى لجولة الفريق الأحمر بالذكاء الاصطناعي
المتطلبات الأساسية
- مشروع مسبك.
- Azure مستخدم الذكاء الاصطناعي في مشروع Foundry.
- Python 3.9 أو أحدث.
- بالنسبة للسيناريوهات الوكالية: وكيل Foundry موجود تم نشره في مشروعك. اسم الوكيل مطلوب ك
AZURE_AI_AGENT_NAME.
البدء
أولا، قم بتثبيت عميل مشروع Microsoft Foundry SDK، الذي يشغل AI Red Teaming Agent في السحابة.
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.
الأهداف المدعومة
تشغيل وكيل الفريق الأحمر الذكي في السحابة يدعم حاليا فقط ما يلي:
- نشر مشاريع المسبك
- نشر نماذج 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
الخيار الثاني: نشر أدوات Azure OpenAI/Foundry Tools
إذا كنت ترغب في استخدام النشرات من حسابات Azure OpenAI أو Foundry Tools، عليك أولا ربط هذه الموارد بمشروع Foundry الخاص بك عبر الاتصالات.
إنشاء اتصال: اتبع التعليمات في أضف اتصالا جديدا لمشروعك لربط مورد Azure OpenAI أو AI Services الخاص بك بمشروع 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
ستشير إليه
- عبر
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: عمق متعدد الأدوار لعناصر الفريق الأحمر المولدة -
source.id: يشير إلى تصنيفك حسب معرف الملف URI -
target: الوكيل قيد الاختبار (الاسم، النسخة، الأدوات)
ستستلم
- كائن يتم تشغيله يشمل
id(حفظ ك{{eval_run_id}})
احصل على جولة تفريقية حمراء (حسب 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)
ملاحظة
واجهة برمجة التطبيقات متزامنة لكل طلب، لكن التشغيلات نفسها تتم معالجتها على جانب الخادم؛ قم باستطلاع هذه النقطة النهائية حتى الانتهاء قبل جلب العناصر المخرجة.
قائمة بعناصر ومخرجات جولة الفريق الأحمر
استخدم هذا لفحص مقاييس الملخص بعد إكمال جولة الفريق الأحمر.
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}")