はじめに
生成AIのセキュリティを検証、強化するための手法にレッドチーミングというものがあります。これはAIが弾くべき攻撃的なプロンプトを多数送信し、それらが受理されたかによってAIの脆弱性をテストするというものです。
このレッドチーミングを行うためには
- 攻撃のためのプロンプトを用意する
- プロンプトを一斉送信する
- 攻撃が成功したかどうかを判定する
- 攻撃成功率などのメトリクスを計測し記録する
といった工程が必要になりますが、これらを一貫して行うのは難しいです。そのため、商用・オープンソース問わずレッドチーミングを行うためのフレームワークが各所から提供されているのですが、Microsoftもその一つであるPyRITを無料で公開していました。そして先日、Microsoft Foundryを操作するためのPython SDKに、プレビュー機能として組み込まれ、Foundry上のモデルを対象にしたり、レッドチームの結果を記録するといったことが可能になりました。
この記事では、Microsoft Foundryにてレッドチーミングの実行と記録を管理する方法について解説します。
Microsoft Foundry とは
Microsoft Foundryはもともと、Azure Open AI ServiceとしてGPTをはじめとするOpenAI製のモデルを提供するためのサービスだったものが、ClaudeやDeepseekなど他社製のモデルも利用可能になり、さらにAIエージェントをGUI上で作成するなど生成AIに関する包括的な機能を備えたポータルとなったものです。
実は最近までこちらはAzure AI Foundry(studio)という名称だったのですが、名称が変わると共にUIがリニューアルされました。現在、Microsoft Foundryの新UIはプレビュー中で、ツールバー上から新旧UIを自由に切り替えることが可能です。

レッドチーミング関連の機能は、GUI上では「評価」タブにまとめられています。こちらでは直接デプロイ済みのモデルを選択してそのままテストを実行することができ、またPython SDKを用いて実行したテストについても結果が記録され、様々なリスク別の攻撃成功率などのメトリクスを確認することができます。
さて、GUI外からテストを実行するためのSDKですが、MS Learnのドキュメントには現在「Azure AI Evaluation SDK」と「Microsoft Foundry SDK」の2種類について記載があり、さらに調べるとEvaluation SDKは従来のAzure AI Foundryに対応していたのに対し、Foundry SDKは新しいMicrosoft Foundry向けに作られているようでした。
新旧Foundryの違い
(2025年12月7日現在)
| バージョン | Microsoft Foundry | Azure AI Foundry |
|---|---|---|
| 使用するSDK | Microsoft Foundry SDK | Azure AI Evaluation SDK |
| SDKのベース | OpenAI Evals | PyRIT |
| 主な対象 | Azure上にデプロイしたエージェント/モデル | ローカル/HTTPエンドポイントのモデル |
| 主な実行方法 | FoundryのGUI上で一貫したエージェントの作成から実行 | SDKとローカルファイルを用いての攻撃条件の設定→エンドポイントへの接続 |
| 日本語対応状況 | 現時点でUIからの設定は未実装 | SDK上で言語設定が可能 |
同時点で、Azure AI Evaluation SDK(azure.ai.evaluation.red_teamを使う方)から実行した結果は新しい方のMicrosoft FoundryのGUIから確認することが出来ないので、GUI上でのエージェントを設計する、クラウド外のモデルを検証するなど目的に応じた使い分けが現時点では必要な状況です。
ローカルでモデルを評価する(旧Foundry向け)
ここでは実際にEvaluation SDKでレッドチーミングを行う際のコードの例を示します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
azure_ai_project_endpoint = f"https://{foundry_name}.services.ai.azure.com/api/projects/{project_name}" # 認証情報の作成 credential = DefaultAzureCredential() # redteam エージェントの作成 red_team_agent = RedTeam( azure_ai_project=azure_ai_project_endpoint, credential=credential, language=SupportedLanguages.Japanese, # 言語の指定 num_objectives=2 # 各リスクカテゴリに対するプロンプトの数 ) |
さて、レッドチームの実行の際にはプロンプトを入力し、モデルの出力を返す関数をコールバックとして指定する必要があります。
例えば、動作確認をするために固定の回答しか返さないようにするのであれば以下のようになります。
|
1 2 3 4 5 6 7 8 |
def simple_callback(query: str) -> str: return "申し訳ございません。有害な内容、利用目的外の要望には対応できません。" red_team_response = await red_team_agent.scan( target=simple_callback, scan_name="test-simple-callback", # GUI上で表示される名前 ) |
デフォルトでは「ヘイトと不公平性」「自傷行為」「性的」「暴力」の4カテゴリについてプロンプトが生成されます。引数で特定のカテゴリを指定することもできます。
実行するとローカルフォルダ内にログファイルが生成され、この中から生成されたプロンプトを確認することもできます。

おわりに
今回はMicrosoft Foundryを利用したレッドチーミングのやり方について調査したことをまとめようと記事を書いたのですが、調べるうちに新旧のUIや複数存在するSDKなどの情報によって混乱してしまいました。最終的には上述の通り自分の中ではまとまったので、今のところは、何を対象に、どこで構築するかで考えていきたいと思います。


