Agent2Agent (A2A) プロトコル は、エージェント間の通信とコラボレーションのためのオープン標準です。
カスタム エージェントは、A2A プロトコルをサポートする別のエージェントに接続できます。 Copilot Studioは、A2A プロトコルを使用して、ユーザー要求またはトリガーに応答してこのエージェントと調整します。
Agent2Agent (A2A) プロトコルとは
エージェント間 (A2A) プロトコルは、エージェント通信の標準コントラクトを定義します。 オーケストレーターまたはエージェントは次のことが可能になります。
- 外部エージェントにタスクを送信します。
- 豊富で構造化されたメタデータを提供します。
- 予測可能な形式でエージェントの応答を受信します。
A2A プロトコルと、エージェント間通信の従来の HTTP 接続との比較を次に示します。
| 特徴 | A2A プロトコル | HTTP コネクタ |
|---|---|---|
| エージェント ワークフロー用に設計 | ✓ | ✗ |
| マルチターム操作をサポートします | ✓ | ✗ |
| 豊富なコンテキスト メタデータを提供します | ✓ | 制限あり |
| フレームワーク間で相互運用可能 | ✓ | 場合により異なる |
A2A を使用すると、Copilot Studioは API を呼び出すだけでなく、別のエージェントにタスクを委任できます。
A2A 接続を使用する場合
エージェント間プロトコルを既に実装しているエージェントを統合する場合は、A2A 接続を使用します。 この方法は、次のエージェントに適しています:
- 外部フレームワーク上に構築されています。
- Copilot Studioの外部でホストされます。
- 独自のドメイン固有の推論またはワークフローを備えています。
必要に応じて、別の統合パターンを使用します。
| 統合の必要性 | 推奨される方法 |
|---|---|
| API または基本的な HTTP サービスに接続する | カスタム コネクタ/HTTP ツール |
| MCP ツールまたはリソースを使用する | MCP サーバー |
| Microsoft 365 エージェント SDKで構築されたエージェントを統合する | アクティビティ プロトコル |
同じCopilot Studio エージェント内で複数の統合モデルを組み合わせることができます。
A2A プロトコル経由でエージェントを別のエージェントに接続する
メイン エージェントのエージェント ページに移動し、エージェントの追加を選択します。
[ 外部エージェントに接続する>Agent2Agent] を選択します。
A2A エージェントのエンドポイント URL を入力します。 エンドポイント URL は、エージェント カードの URL ではなく、エージェントとの通信用のエンドポイントである必要があります。
エンドポイント URL を入力すると、エージェントに標準の
.well-knownURL に有効なエージェント カードがある場合、Copilot Studioは自動的にカードからエージェントの名前と説明をプルし、フォームに入力します。注意
エージェントの名前と説明が自動的に入力されない場合は、エージェントにエージェント カードがない、カードが想定されている URL とは異なる URL にある、またはカードとの通信に問題がある可能性があります。 まず、エージェントのエンドポイントが正しいことを確認します。 その場合、SDK エージェントの適切な名前と説明を手動で入力できます。 この説明では、メイン エージェントが 2 番目のエージェントを使用するタイミングを理解できるように、エージェントの目的を記述する必要があります。 効果的なメタデータの記述について詳しくは、こちらをご覧ください。 ブラウザーでエージェントのカードに移動することもできます (エージェントのエンドポイント +
/.well-known/agent.jsonにあります)。SDK エージェントの構成方法に応じて、[認証] ドロップダウンから適切な 認証 方法を選択します。 オプションは次のとおりです。
- なし: エージェントが認証を必要としない場合、または認証が有効になっていないこのドキュメントで提供されているサンプル エージェントを使用している場合は、このオプションを選択します。
- API キー: エージェントで認証に API キーが必要な場合は、このオプションを選択します。 API キーを含めるヘッダーの名前またはクエリ パラメーターを指定する必要があります。
- OAuth 2.0: エージェントが認証に OAuth 2.0 を使用する場合は、このオプションを選択します。 クライアント ID、クライアント シークレット、承認 URL、トークン URL、および更新 URL を指定する必要があります。
なし 以外の認証の種類を選択した場合は、他の認証の詳細も完了する必要があります。
を選択してを作成します。
使用可能な接続の一覧から目的の接続を選択するか、A2A エージェントと Copilot Studio エージェントの間に新しい接続を作成します。
[追加と構成] を選択します。
注意
特定のユース ケースのコンテキストで接続されたエージェントを慎重に確認してテストし、すべての適切な決定とカスタマイズを行う責任があります。 Copilot Studio外のエージェントに接続する場合は、そのようなエージェントの使用に責任があります。 考慮すべき点には以下の事項が含まれます:
- データフロー、データ処理、エージェント間のデータ共有は、あなたのユースケースに適しており、関連する要件や法律を満たしています
- エージェントは適切な品質、信頼性、セキュリティ、信頼性の基準を満たしています
- ユース ケースに適した場合は、適切なアクセス許可、境界、承認がプロビジョニングされます
- 適切な観測可能性、アイデンティティとトレーサビリティ、そして人間の監督機能が整っています
A2A 接続のサンプル
このクイック スタートでは、A2A 対応エージェントを構成し、Copilot Studio エージェントに接続します。 手順をすべて完了すると、次のことができます
- サンプル A2A 対応エージェントをローカルで実行するか、既に存在する既存の A2A エージェントを使用します。
- Dev トンネルまたはその他のホスティング オプションを使用して、HTTPS 経由でエージェントを安全に公開します。
- A2A 接続を介して外部エージェントをCopilot Studio エージェントに接続します。
- Copilot Studioからエージェントを呼び出し、自然言語タスク ("どの植物に、より軽いトマトの植物やストロベリーの植物が必要か?" で接続を検証します>
接続を構成すると、次の内容が表示されます。
- Copilot Studioから正常に確立された A2A 接続。
- 委任されたタスクを受信して処理したことを確認する外部エージェントからのアクティビティ ログ。
- Copilot Studio は、各リクエストごとに送信する他のメタデータを含む、完全な A2A ペイロードを提供します。
[前提条件]
サンプル シナリオに従うには、次のものが必要です。
- 次の内容を含む Azure OpenAI リソース:
- エンドポイント URL
- デプロイ名
- API キー
- .NET 10 SDK 以上
- 次のアクセス許可を持つCopilot Studio環境。
- エージェントの編集
- 接続の設定
- ローカル エージェントをパブリックに公開するメソッド:
- Dev トンネル (開発に推奨)
- または、Azure App Serviceやコンテナーなどのホスト環境
A2A 対応エージェントが既にある場合は、
手順 1: サンプル A2A エージェントを複製して構成する
サンプル A2A エージェント リポジトリを複製します。
git clone https://github.com/microsoft/CopilotStudioSamples.git
cd CopilotStudioSamples/extensibility/a2a/Simple-A2A-Sample
必要な Azure OpenAI 設定を設定します。
-
AZURE_OPENAI_ENDPOINT: Azure OpenAI エンドポイント URL -
AZURE_OPENAI_DEPLOYMENT_NAME: Azure OpenAI デプロイの名前 -
AZURE_OPENAI_API_KEY: Azure OpenAI API キー
これらの設定は、環境変数として構成するか、 appsettings.json または appsettings.Development.jsonに保存することで構成できます。
オプション A: 環境変数として構成する
$env:AZURE_OPENAI_ENDPOINT="https://YOUR-RESOURCE.openai.azure.com"
$env:AZURE_OPENAI_DEPLOYMENT_NAME="YOUR-DEPLOYMENT"
$env:AZURE_OPENAI_API_KEY="YOUR-KEY"
オプション B: appsettings.json で構成する
{
"AzureOpenAI": {
"Endpoint": "https://YOUR-RESOURCE.openai.azure.com",
"DeploymentName": "YOUR-DEPLOYMENT",
"ApiKey": "YOUR-KEY"
}
}
手順 2: エージェントをビルド、実行、公開する
依存関係の復元とビルド:
dotnet restore
dotnet build
エージェントを実行します。
dotnet run
コンソールには、ローカルの A2A エンドポイント URL が表示されます。
エンドポイントを公開する
注意
運用環境のシナリオでは、適切な認証を使用して、セキュリティで保護された Web アプリまたはコンテナー化されたサービスとしてエージェントをデプロイします。 開発トンネルは、ローカルでの開発とデモンストレーションの目的でのみ使用します。
Visual Studio Codeを使用していて、Dev Tunnel を使用してエンドポイントを公開する予定の場合は、新しい開発トンネル ポートを公開します。 コンソールに表示される A2A ポートを選択します。 右クリックし、ポートをパブリックにします。それ以外の場合は、オンラインでは表示されません。
Dev トンネルでは、 https://xyz123-9000.dev.tunnels.ms/などのパブリック URL が提供されます。 Copilot Studioで A2A 接続を構成するときに使用できるように、この URL をベース エンドポイントとしてメモしておきます。
手順 3: Copilot Studioで A2A 接続を作成する
A2A エージェントにパブリックにアクセスしたら、Copilot Studio内に A2A 接続を作成します。
- Copilot Studioを開き、プライマリ エージェントを選択します。
- エージェントを選択します。
- [ エージェントの追加] を選択し、[ A2A エージェント] を選択します。
- 必要な構成値を入力します。
- 名前: ボタニカル エージェントなどのわかりやすい名前。
-
エンドポイント URL: パブリック Dev Tunnel URL の後に A2A メッセージ エンドポイントを使用します。次に例を示します。
https://xyz123-5073.dev.tunnels.ms/a2a/botanical/v1/message:stream - 認証: サンプル エージェントを使用している場合は [ なし] を選択します (認証は適用されません)。
- [保存] を選択して接続を検証して確立します。
構成が有効な場合、Copilot Studio A2A エージェントが正常に接続されていることを確認します。
ヒント
A2A 接続ではカスタム コネクタ インフラストラクチャが使用されるため、それらを使用して、オンプレミスまたは仮想ネットワーク内で実行されている A2A エージェントに接続することもできます。
手順 4: Copilot Studioから A2A エージェントにタスクを送信する
接続を作成したら、タスクを送信して統合を確認します。
- メイン エージェントを Copilot Studio で開き、Test キャンバスに移動します。
- A2A エージェントに委任するプロンプトを入力します。 例: "トマトの植物やストロベリーの植物など、より多くの光が必要な植物はどれですか?
- エージェント オーケストレーターはユーザー入力を評価し、タスクを A2A エージェントに委任します。
- 外部エージェントが要求を処理し、テスト チャットに表示される応答を返します。
外部エージェントのログには、次の情報が表示されます。
- 受信した A2A タスク。
- 自然言語プロンプト。
- 生成された応答は、Copilot Studioに返されます。
手順 5: A2A ペイロードとメタデータを検査する
A2A メッセージには、追加のコンテキストを提供する構造化メタデータが含まれます。 このメタデータは、エージェントが応答を調整したり、ルーティングを管理したり、ユーザーターン間で継続性を維持したりするのに役立ちます。
一般的な A2A メッセージ ペイロードには、次のものが含まれます。
- 一意
contextId - メッセージID一覧
- ロケール情報
- 最新のユーザー発話だけでなく、完全なチャット履歴
- メッセージ コンテンツ パーツ (テキスト、ツール呼び出し、またはその他のメタデータ)
ペイロードの抜粋の例:
{
"method": "message/send",
"params": {
"message": {
"contextId": "ee1e68ee-75fc-42bb-83d7-25fd26e559c3",
"metadata": {
"copilotstudio.microsoft.com/a2a/chathistory": [
{
"From": "agent",
"Locale": "en-US",
"Text": "Hello, I'm A2A Agent Demo...",
"Timestamp": "2025-11-26T23:19:28.764Z"
},
{
"From": "user",
"Locale": "en-US",
"Text": "Which plant needs more sunlight...",
"Timestamp": "2025-11-26T23:20:21.484Z"
}
]
}
}
}
}
このメタデータは、A2A エージェントが実装するダウンストリーム ロジックに使用できます。
次のステップ
基本的な A2A 接続を確立すると、次のことができます。
- A2A エージェントに新しいスキルまたはドメインの知識を追加します。
- A2A ペイロードのメタデータを使用して、ルーティングとパーソナル化ロジックを実装します。
- 認証を追加して A2A エンドポイントをセキュリティで保護し、それに応じてCopilot Studio設定を更新します。
- 同じ構成アプローチを使用して、他の A2A 対応エージェントを接続します。
重要なポイント
- Copilot Studioは、A2A プロトコルを使用して外部エージェントを調整できます。
- A2A を使用すると、豊富なコンテキスト メタデータを持つ mult-agent ワークフローが可能になります。
- サンプル エージェントは、完全なラウンド トリップ (Copilot Studio -> A2A エージェント -> Copilot Studio) をデモンストレーションします。
- A2A メッセージには、コンテキスト対応エージェントの動作をサポートする詳細なメタデータが含まれています。