次の方法で共有


Agent2Agent (A2A) プロトコル経由で使用可能なエージェントを接続する (プレビュー)

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 Agents SDKで構築されたエージェントを統合する アクティビティ プロトコル

同じ Copilot Studio エージェント内で複数の統合モデルを組み合わせることができます。

A2A プロトコル経由でエージェントを別のエージェントに接続する

  1. メイン エージェントのエージェント ページに移動し、エージェントの追加を選択します。

  2. [ 外部エージェントに接続する>Agent2Agent] を選択します。

  3. A2A エージェントのエンドポイント URL を入力します。 エンドポイント URL は、エージェント カードの URL ではなく、エージェントとの通信用のエンドポイントである必要があります。

    エンドポイント URL を入力すると、エージェントに標準の .well-known URL に有効なエージェント カードがある場合、Copilot Studio によって自動的にカードからエージェントの名前と説明がプルされ、フォームに入力されます。

    注意

    エージェントの名前と説明が自動的に入力されない場合は、エージェントにエージェント カードがない、カードが想定されている URL とは異なる URL にある、またはカードとの通信に問題がある可能性があります。 まず、エージェントのエンドポイントが正しいことを確認します。 その場合、SDK エージェントの適切な名前と説明を手動で入力できます。 この説明では、メイン エージェントが 2 番目のエージェントを使用するタイミングを理解できるように、エージェントの目的を記述する必要があります。 効果的なメタデータの記述について詳しくは、こちらをご覧ください。 ブラウザーでエージェントのカードに移動することもできます (エージェントのエンドポイント + /.well-known/agent.jsonにあります)。

  4. SDK エージェントの構成方法に応じて、[認証] ドロップダウンから適切な 認証 方法を選択します。 オプションは次のとおりです。

    • なし: エージェントが認証を必要としない場合、または認証が有効になっていないこのドキュメントで提供されているサンプル エージェントを使用している場合は、このオプションを選択します。
    • API キー: エージェントで認証に API キーが必要な場合は、このオプションを選択します。 API キーを含めるヘッダーの名前またはクエリ パラメーターを指定する必要があります。
    • OAuth 2.0: エージェントが認証に OAuth 2.0 を使用する場合は、このオプションを選択します。 クライアント ID、クライアント シークレット、承認 URL、トークン URL、および更新 URL を指定する必要があります。

    なし 以外の認証の種類を選択した場合は、他の認証の詳細も完了する必要があります。

  5. を選択してを作成します。

  6. 使用可能な接続の一覧から目的の接続を選択するか、A2A エージェントと Copilot Studio エージェントの間に新しい接続を作成します。

  7. [追加と構成] を選択します。

注意

特定のユース ケースのコンテキストで接続されたエージェントを慎重に確認してテストし、すべての適切な決定とカスタマイズを行う責任があります。 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 対応エージェントが既にある場合は、 Copilot Studio で A2A 接続を作成 に移動します。

手順 1: サンプル A2A エージェントを複製して構成する

サンプル A2A エージェント リポジトリを複製します。

git clone https://github.com/microsoft/CopilotStudioSamples.git
cd CopilotStudiosamples/A2ASamples/Simple_A2A_Agent

必要な 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 が提供されます。 この URL をベース エンドポイントとしてメモして、Copilot Studio で A2A 接続を構成するときに使用できるようにします。

手順 3: Copilot Studio で A2A 接続を作成する

A2A エージェントにパブリックにアクセスしたら、Copilot Studio 内に A2A 接続を作成します。

  1. Copilot Studio を開き、プライマリ エージェントを選択します。
  2. エージェントを選択します。
  3. [ エージェントの追加] を選択し、[ A2A エージェント] を選択します。
  4. 必要な構成値を入力します。
    • 名前: ボタニカル エージェントなどのわかりやすい名前。
    • エンドポイント URL: パブリック Dev Tunnel URL の後に A2A メッセージ エンドポイントを使用します。次に例を示します。 https://xyz123-5073.dev.tunnels.ms/a2a/botanical/v1/message:stream
    • 認証: サンプル エージェントを使用している場合は [ なし] を選択します (認証は適用されません)。
  5. [保存] を選択して接続を検証して確立します。

構成が有効な場合、Copilot Studio は A2A エージェントが正常に接続されていることを確認します。

ヒント

A2A 接続ではカスタム コネクタ インフラストラクチャが使用されるため、それらを使用して、オンプレミスまたは仮想ネットワーク内で実行されている A2A エージェントに接続することもできます。

手順 4: Copilot Studio から A2A エージェントにタスクを送信する

接続を作成したら、タスクを送信して統合を確認します。

  1. Copilot Studio でメイン エージェントを開き、Test キャンバスに移動します。
  2. A2A エージェントに委任するプロンプトを入力します。 例: "トマトの植物やストロベリーの植物など、より多くの光が必要な植物はどれですか?
  3. エージェント オーケストレーターはユーザー入力を評価し、タスクを A2A エージェントに委任します。
  4. 外部エージェントが要求を処理し、テスト チャットに表示される応答を返します。

外部エージェントのログには、次の情報が表示されます。

  • 受信した 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 メッセージには、コンテキスト対応エージェントの動作をサポートする詳細なメタデータが含まれています。