Menjalankan Agen Teaming AI Red di cloud

Meskipun Agen Teaming AI Red dapat dijalankan secara lokal selama prototipe dan pengembangan untuk membantu mengidentifikasi risiko keselamatan, menjalankannya di cloud memungkinkan skenario berikut:

  • Tim merah AI sebelum penyebaran menjalankan kombinasi yang lebih besar dari strategi serangan dan kategori risiko untuk analisis yang lebih mendalam.
  • Pelaksanaan AI red teaming yang berkelanjutan setelah penyebaran yang dapat dijadwalkan untuk dijalankan pada interval waktu tertentu
  • Skenario risiko khusus agentik untuk mendukung lingkungan sandbox minimal untuk operasi tim merah AI

Prasyarat

  • Sebuah proyek Foundry.
  • Azure AI User pada peran di proyek Foundry.
  • Python 3.9 atau yang lebih baru.
  • Untuk skenario yang berkaitan dengan agen: Agen Foundry yang sudah ada dan diterapkan dalam proyek Anda. Nama agen harus dimasukkan sebagai AZURE_AI_AGENT_NAME.

Memulai

Pertama, instal Microsoft klien proyek Foundry SDK, yang menjalankan AI Red Teaming Agent di cloud.

pip install "azure-ai-projects>=2.0.0"

Kemudian, atur variabel lingkungan Anda untuk sumber daya Microsoft Foundry Anda

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.

Target yang didukung

Menjalankan Agen Teaming AI Red di cloud saat ini hanya mendukung hal berikut:

  • Penyebaran proyek foundry
  • Penyebaran model OpenAI Azure
  • Agen Foundry (agen permintaan dan agen kontainer) sebagai target dalam proyek Microsoft Foundry Anda.

Konfigurasikan model target Anda

Anda dapat mengonfigurasi penyebaran model target dengan dua cara:

Opsi 1: Penyebaran proyek foundry

Jika Anda menggunakan penyebaran model yang merupakan bagian dari proyek Foundry Anda, masukkan nama penyebaran langsung di initialization_parameters.deployment_name bidang saat Anda membuat red team. Microsoft merekomendasikan autentikasi tanpa kunci melalui DefaultAzureCredential — jalankan az login sebelum menjalankan.

Jika skenario Anda memerlukan autentikasi kunci API sebagai gantinya:

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

Opsi 2: Deploy Azure OpenAI/Foundry Tools

Jika Anda ingin menggunakan penyebaran dari akun Azure OpenAI atau Foundry Tools, Anda harus terlebih dahulu menghubungkan sumber daya ini ke proyek Foundry Anda melalui koneksi.

  1. Buat koneksi: Ikuti instruksi di Tambahkan koneksi baru ke proyek Anda untuk menyambungkan sumber daya Azure OpenAI atau AI Services Anda ke proyek Foundry Anda.

  2. Dapatkan nama koneksi: Setelah menyambungkan akun, Anda akan melihat koneksi yang dibuat dengan nama yang dihasilkan di Foundry project Anda.

  3. Mengonfigurasi target: Gunakan format "connectionName/deploymentName" untuk konfigurasi penyebaran model Anda:

# Format: "connectionName/deploymentName"
model_deployment_name = "my-openai-connection/gpt-4o-mini"

Membuat tim merah AI

Buat tim merah untuk melakukan satu atau beberapa eksekusi yang berbagi sumber data dan kategori risiko.

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}")

Apa fungsinya:

  • Membuat tim merah untuk mengadakan semua operasi tim merah
  • Mengonfigurasi tim merah dengan tiga evaluator bawaan (Tindakan Yang Dilarang, Kepatuhan Tugas, Kebocoran Data Sensitif).

Anda akan menerima:

  • Isi JSON dengan metadata grup, termasuk ID (simpan sebagai {{red_team_id}} untuk nanti).

Dapatkan tim merah

Gunakan ini untuk memverifikasi tim merah ada dan meninjau konfigurasi (kriteria, sumber data, tanda waktu).

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)

Membuat (atau memperbarui) taksonomi evaluasi

Untuk tim merah untuk kategori risiko agenik dari tindakan yang dilarang, Anda harus dapat mengonfirmasi, mengedit, atau memperbarui taksonomi evaluasi tindakan terlarang yang dihasilkan oleh alur kerja tim merah tindakan yang dilarang. Contoh berikutnya akan menghasilkan file JSON dengan taksonomi yang dihasilkan dari tindakan yang dilarang untuk digunakan dalam menghasilkan permintaan serangan secara dinamis untuk menguji perilaku agenik berdasarkan kebijakan yang disetujui pengguna. Setelah Anda meninjau dan mengonfirmasi taksonomi, itu kemudian akan digunakan untuk pelaksanaan red teaming serta menilai Tingkat Keberhasilan Serangan (ASR) dari keluaran agen.

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}")

Apa fungsinya:

  • Membuat/memperbarui sumber daya taksonomi bernama {{name}} :
    • Menentukan target agen dan deskripsi alat
    • Menentukan kategori risiko ProhibitedActions

Anda akan mengacu padanya

  • Dalam permintaan file_id, melalui URI.

Menjalankan operasi dalam tim merah

Eksekusi menghasilkan item dari sumber (misalnya, taksonomi) dan tim merah agen target dengan strategi serangan yang dipilih.

# 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}")

Bidang kunci untuk mengonfigurasi eksekusi Anda:

  • attack_strategies: Misalnya, "Flip", "Base64", "IndirectJailbreak" (pilih yang ingin Anda uji)
  • num_turns: kedalaman multi-tahap untuk item red-team yang dihasilkan
  • source.id: menunjuk ke taksonomi Anda dengan URI ID-berkas
  • target: agen di bawah pengujian (nama, versi, alat)

Anda akan menerima

  • Objek eksekusi termasuk id (simpan sebagai {{eval_run_id}})

Dapatkan eksekusi tim merah (menurut ID)

Gunakan ini untuk memeriksa status dari red teaming Anda (misalnya, dalam antrean, sedang berjalan, berhasil, gagal).

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)

Nota

API adalah sinkron per permintaan, tetapi proses berjalan diproses di sisi server; lakukan pengecekan berkala pada titik akhir ini hingga selesai sebelum mengambil item output.

Mencantumkan item dan hasil output eksekusi beregu merah

Gunakan ini untuk memeriksa metrik ringkasan setelah penyelesaian uji coba tim merah.

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}")