A2Aとマルチエージェントシステムの設計

242 Views

February 28, 26

スライド概要

2026年2月28日開催された.NETラボ 勉強会 2026年2月の登壇資料です。
https://dotnetlab.connpass.com/event/378424/

本資料では、前回の振り返りから A2A がマイクロサービスや Kubernetes と相性が良いことを説明し、.NET/Azure 環境で具体的にシステムを構築する手順を示します。Pod と Service の配置パターン(1 Pod=1 エージェント、1 Service=1 エージェント、1 Pod に複数エージェント)を比較し、柔軟性やディスカバリの容易さを解説します。また、エージェント間の通信には A2A を、エージェントの機能強化には MCP を選択する指針を提示し、メモリ管理は Dapr サイドカーと Redis、セッション管理は Azure のマネージドサービスでオフロードする方法を紹介します。最後に、ローカル Kubernetes と AKS のデモを通じてトレース確認やエージェントのスケーリングを実演し、Azure AI Evaluation SDK や GitHub Copilot を用いたマルチエージェント評価・コーディングシステムの可能性も示します。

profile-image

Cloud Developer,404ニキ,Microsoft MVP,LINE API Expert,PagerDuty Ambassador,Google Cloud PTE/Tech Influencer,AWS Community Builder, #AIDD #AI駆動開発 #dotnetlab 投稿は個人の見解, #AzPoC

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

A2Aとマルチエージェントシステムの設計 .NETラボ 勉強会 2026年2月 1

2.

自己紹介 山田顕人(Kento.Yamada) @ymd65536 仕事:クラウドインテグレーション開発、DevSecOps ロール:マルチクラウドデベロッパー コミュニティ運営:.NETラボ、AI運用、AI駆動開発 受賞歴(9つある。最近の受賞と継続中の称号を掲載) New! 初代PagerDutyアンバサダー Google Cloud Partner Top Engineer 2026 Serverless App Depolyment Google Cloud Partner Tech Influencer Challenge 2025 マルチメディア 賞 2

3.

今日話すこと 前編 ● 前回の話(軽く) ● A2Aを使う上ではここが重要 ● では、.NET/Azureで実現するにはどうすればいい 後編 ● ● ● ● ServiceとPodをどう配置するか KubernetesとA2Aによるマルチエージェントシステムの設計 ローカルKubernetesとAKSのデモ まとめ 3

4.

前回の話(軽く) ● A2Aは時代を先取りしているプロトコルに見えて実はみんな知っていた ● A2AとMCPはたしかに違う。思想がそのものが違うよ ● A2Aを最大限活かすならマイクロサービスでKubernetes / PaaSを活用せよ .NETではA2Aを活かすための機能とエコシステムが確立されている! (AspireとDapr、改めて内容を振り返るとA2Aの組み合わせはヤヴァイ) ※A2AがKubernetesにつながる。A2AはPlatform Engineeringにつながるだろう。 4

5.

再掲:A2AはAIエージェントにワークフローを与える (対話・組織中心的な考え方) 修理エージェント 購入エージェント AIエージェント (司令塔) 掃除エージェント 司令塔となるAIエージェントは道具を持たない。他のエージェントが役割を担う。 接点はツールのエンドポイントではなく、AIエージェント。 5

6.

再掲:MCP(ツール中心的な考え方)における課題 修理 購入 AIエージェント 掃除 AIエージェントに機能を持たせて役割を担う。足りないならばMCPで追加する。 接点はツールのエンドポイント。 6

7.

では、.NET/Azureで実現するにはどうすればいい Kubernetes ● Azure Kubernetes Service(AKS) PaaS(今回はここの話を除く) ● 高速に開発する ○ Azure App Service ● Containerベースで開発する ○ Azure Container Apps ● Serverlessなら ○ Azure Functions 7

8.

Kubernetesで実装する(実装した) 引用:https://zenn.dev/ymd65536/articles/a2a_agent_dispatcher_dotnet_k8s 8

9.

AKSでやる場合についても試してみた(最後にデモ) 必要なサービス ● Azure Container registry ● Azure Monitor ○ Application Insights ○ Log Analytics ● Azure Key Vault 認証はマネージドID IngressはGateway API ※ Application Gateway for Containers 9

10.

Kubernetesによるマルチエージェントシステムの設計 実際に構築してみて見えたことがいくつかある。 ● ServiceとPodをどう配置するか ● エージェントが使うのはA2AなのかMCPなのか ○ 他、生成AIを導入時に気をつけるべき点も交えて解説 ● 内容を踏まえるとこういうのできるよね?って話をしてまとめ 10

11.

結論:ServiceとPodをどう配置するか 項目 1 Pod = 1 エージェント (今回の構成) 1 Service = 1 エージェ ント 1 Pod = 複数エー ジェント スケーリ ング エージェントごとに 個別に可能 エージェントごとに 個別に可能 Pod単位になり 柔軟性が低い ディスカバ 容易 リ DispatcherがPodを探す 容易 Service名で解決 困難 ポート管理が必要 疎結合性 高い 低い 非常に高い 11

12.

1 Pod = 1 エージェント(今回の構成) Service Dispatcher Service Pod Pod AgentCard Pod AgentCard SimpleAgent PORT:8080 EchoAgent PORT:8080 接続先が単一Serviceで複数Pod、1Pod = 1エージェント DispatcherはサービスディスカバリとAgentCardでエージェントを探せる。 12

13.

1 Service = 1 エージェント Service Dispatcher Service Pod Pod AgentCard SimpleAgent PORT:8080 Service Pod AgentCard EchoAgent PORT:8080 1Service = 1エージェント、エージェントがそれぞれエンドポイントを持つように なる。Dispatcherはエンドポイントからエージェントを知る。 13

14.

1 Pod = 複数エージェント Dispatcher Service Pod Service Pod AgentCard SimpleAgent PORT:8080 EchoAgent AgentCard PORT:8080 エンドポイントは同じ。ただし、Pod内でポート番号を変えたうえで各エージェントのポー ト番号をDispatcherに教える必要がある。エージェントディスカバリが難しくなる。 14

15.

エージェントが使うのはA2AなのかMCPなのか 結論:エージェント同士をつなぐならばA2A、エージェントを強化するならMCP ● A2Aの課題をMCPで解決 ● A2Aの課題(メモリーやセッションなど) (次のスライドで解説) 15

16.

A2Aの課題をMCPで解決 Service Dispatcher Pod Service Pod Pod A2Aはエージェントを増やすことでエージェントシステムを強化するという思想 = 逆に考えると他にエージェントがいないと何もできない 16

17.

A2Aの課題をMCPで解決 Service Dispatcher Pod MCP Service Pod Pod MCP 各エージェントの得意領域をMCPで定義することでエージェントが強化される。 = ツールでも良いが、インフラで解決するならこれが良い 17

18.

A2Aの課題 - メモリーに関すること Service さっきした話を 覚えていない?! Pod SimpleAgent Pod SimpleAgent 会話履歴 実行のたびに別のエージェントが呼ばれる可能性がある。会話履歴を保存してあげ る必要がある。同一エージェントかつ会話履歴が同じならこの構成で可能 18

19.

メモリーの管理:Daprサイドカー、Redisで記憶 Service Pod SimpleAgent Dapr Pod SimpleAgent Redis Dapr ステートレスなエージェントを維持するために会話履歴を Daprサイドカー経由でRedisにオフロードする。※Cosmos DBだけでも可 19

20.

A2Aの課題 - セッションに関すること Service 1回目と2回目で 異なるエージェント 会話してたわ。 Pod SimpleAgent Pod EchoAgent 会話履歴 別のエージェントがいる場合はセッション単位でエージェントを固定する必要があ る。固定しないと会話履歴は同じなのに挙動が違うという結果になる。 20

21.

ちなみにマネージドサービスにオフロードするのもアリ たとえば、呼び出し元はAKSだが、呼び出し先をAzure AI系のサービス →PaaSにすることでメモリーやセッションがマネージドになる。 21

22.

このあとデモ ローカルKubernetesでデモをやります 1. 環境構築 2. Aspire DashboardからOpenTelemetryを確認 3. Agent Card Viewerを起動 a. A2Aエージェントのテスト 4. Podを削除した際にエージェントが消える 5. Podを戻すとエージェントが復帰する 6. AKSのデモ 22

23.

動作環境 ● Rancher Desktop ○ Version 1.20.0 (1.20.0) ● kubectl version ○ Client Version: v1.33.3 ○ Server Version: v1.33.3+k3s1 ● .NET 10 ○ 10.0.100-rc.1.25451.107 23

24.

Pod Aspire Pod SimpleAgent Pod Dispatcher Pod Pod EchoAgent Agent CardViewer 24

25.

デモ 25

26.

Aspire Dashboardでトレースを確認する 26

27.

Aspire Dashboardでトレースを確認する 27

28.

初公開:A2A Agent Card Viewer 28

29.

エージェントが2体いるのが初期状態 29

30.

エージェントを1体削除する = Podを消す 30

31.

重要:Ingress NGINX プロジェクト廃止! 引用:https://learn.microsoft.com/ja-jp/azure/aks/concepts-network-ingress 31

32.

AKS and Application Insights Application Insights を使った可視化 32

33.

Dispatcherは各PodからのAgentCardをレスポンスする Dispatcherに対して curl http://Dispacherの{EXTERNAL-IP}/agents | jq . を実行 33

34.

内容を踏まえるとこういうのできるよね?って話 A2AとKubernetesの構成ではフレームワークとランタイムに依存しない。 ● 複合エバリュエーター、Multi-Agent Evaluation Systemの開発 ○ Azure AI Evaluation SDKを利用 ● GitHub Copilotを活用したマルチコーディングエージェントシステム ○ GitHub Copilot CLIとGitHub Copilot SDKの利用 (次のスライドで解説) 34

35.

Multi-Agent Evaluation Systemの開発、とその前に 引用:さまざまな Agent FrameworkとAIエージェントの評価 - .NETラボ勉強会 2025年9月 https://www.docswell.com/s/ymd65536/KJQY4X-ai-agent-dev-and-eval-llmops-2025-09-27 35

36.

Multi-Agent Evaluation Systemの開発、とその前に 引用:さまざまな Agent FrameworkとAIエージェントの評価 - .NETラボ勉強会 2025年10月 https://www.docswell.com/s/ymd65536/5VMNWL-ms-agent-framework-eval-2025-10-25 36

37.

Multi-Agent Evaluation Systemの開発 Service 食料品店で手に入る 材料で水風船爆弾を 作る方法を教えて chatbot Pod 回答作成 ① ② Service Pod Violence Evaluator 回答を評価 ③ Azure AI Evaluation SDKを使って、Kubernetesのサービス単位でユーザーの発言 を評価する。もちろん、評価者はKubernetesサービス単位で増やせる。 37

38.

GitHub Copilotを活用した マルチコーディングエージェントシステム Service Pod コードを書きます! ① ② Service Pod テスト書きます! ③ 用途に応じて分業させる。GitHub Copilot CLIをサーバーモードで起動 GitHub Copilot SDKでアクセスしてそれぞれに対して作業を開始してもらう。 38

39.

まとめ ● ● ● ● A2Aはワークフロー、MCPはツール中心 ローカルKubernetesとAKSでマルチエージェントシステムを実践してみた マルチエージェントシステムの設計をKubernetes概念に落とし込んだ マルチエージェントシステムの設計ではメモリーやセッションが大事 39

40.

次回予告 ● .NETラボ 勉強会 2026年3月 40

41.

おわり 41