Zenn
🐷

Google発!AIエージェント同士の連携を標準化するプロトコル「A2A」とは?概要から実践、将来性まで

に公開
3

こんにちは、酒井です!
株式会社 EGGHEAD(エッグヘッド)という「製造業で生成 AI を活用したシステム開発」をしている会社の代表をしております。

https://egghead.co.jp?utm_source=zenn&utm_medium=social&utm_campaign=normal

はじめに

AIエージェントが急速に進化・普及する現代において、新たな課題が浮上しています。それは「エージェント同士の連携」です。個々のAIエージェントが優れた能力を持っていても、それらが協調して働くための標準的な方法がなければ、その潜在能力を十分に発揮することはできません。

そこでGoogleが提唱したのが、Agent-to-Agent (A2A) プロトコルです。これは簡単に言えば、AIエージェント同士が「会話」するための共通言語・ルールを定めたものです。

この記事では、A2Aプロトコルの概要、MCPとの違い、実際の試し方、そして将来性について解説します!

A2Aプロトコル概要

A2Aは何を目指すのか?

A2Aプロトコルの目的は、エージェント同士が協調するための標準的な「会話方法」を確立することです。現在、多くのAIエージェントが開発されていますが、それらが互いに通信するための共通の方法がないため、連携が困難です。A2Aはこの問題を解決し、エージェント間の連携を可能にします。

MCP (Model Context Protocol) との違い

A2Aを理解する上で重要なのは、MCPとの違いを把握することです。

  • MCP: LLM(大規模言語モデル)がツールを使うための標準です。つまり、「関数呼び出し」を標準化したものと言えます。LLMをデータ、リソース、ツールに接続するためのプロトコルです。

  • A2A: エージェント同士が対話するための標準です。アプリケーションレベルのプロトコルであり、継続的な対話と発展的な計画を可能にします。

端的にいうと、MCPは「ツールの使い方」を標準化していて、A2Aは「エージェント間の会話の仕方」を標準化していて、レイヤーが違います。

A2Aのコアコンセプト

A2Aプロトコルは企業環境でエージェント同士が安全かつ効率的に通信するための以下の主要な概念に基づいています。

  1. セキュリティと認証

    機能 説明
    TLS暗号化 情報を守るための暗号化通信(HTTPS)が必須
    サーバー認証 デジタル証明書で「このエージェントは本物」と確認
    標準認証形式 一般的な認証方法(APIキー、OAuth等)に対応
    認可システム 「誰に何を見せるか」を細かく設定できる仕組み
  2. 長時間タスクの通知と接続管理

    機能 説明
    リアルタイム更新 双方向でリアルタイムに情報をやり取りする仕組み
    プッシュ通知 接続していなくても重要な情報を受け取れる機能
    適応型通信 接続状態に合わせて最適な通信方法を自動選択
  3. 通知セキュリティ

    機能 説明
    URL検証 通知先が安全かどうかを確認する仕組み
    暗号署名 「この通知は本物」と証明するための暗号技術
    攻撃対策 同じ通知の繰り返しや不正アクセスを防ぐ仕組み
  4. エージェント発見メカニズム

    種類 説明
    オープン 誰でも見つけられる公開された場所に情報を置く方式
    キュレーション 登録制で管理された一覧から探せる方式
    プライベート 特定の相手だけが見つけられる非公開方式
  5. AgentCardの運用

    機能 説明
    情報保護 重要情報を含む場合の安全な管理方法
    認証管理 アクセス権限の安全な保管と運用の仕組み

色々まとめているのですがA2Aの設計思想で大切なのは、全く新しい仕組みを作るのではなく、既存のシステムと簡単に連携できるようにしていることです。具体的には、一般的なRestAPIの仕組みを使って、エージェントを通常ののウェブアプリのように動かせるようにしています。

Agent Card

Agent Cardは、エージェントの能力や特性を記述したJSONファイルです。企業はこのエージェントカードを既知の標準パスでホストします。

https://[ドメイン名]/.well-known/agent.json

クライアントはこのパスに単純なGETリクエストを送信することで、エージェントカードを取得できます。これにより、Webクローラーやアプリケーションが簡単にエージェントを発見できるようになります。

以下は、Agent Cardの例です。

{
  "name": "Currency Agent",
  "description": "Helps with exchange rates for currencies",
  "url": "http://localhost:10000/",
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": true,
    "stateTransitionHistory": false
  },
  "defaultInputModes": [
    "text",
    "text/plain"
  ],
  "defaultOutputModes": [
    "text",
    "text/plain"
  ],
  "skills": [
    {
      "id": "convert_currency",
      "name": "Currency Exchange Rates Tool",
      "description": "Helps with exchange values between various currencies",
      "tags": [
        "currency conversion",
        "currency exchange"
      ],
      "examples": [
        "What is exchange rate between USD and GBP?"
      ]
    }
  ]
}

このJSONには、エージェントの名前、説明、URL、バージョン、機能、入出力モード、そしてスキルなどが記述されています。これにより、他のエージェントはこのエージェントの能力を理解し、適切に連携できるようになります。
(一つのURLにつき一つのエージェントが対応します。)

A2Aクライアントの役割

A2Aプロトコルにおいて、クライアント(ユーザーからの指示を受け付ける側)は「スーパーバイザー」のような役割を持つエージェントとして機能します。例えば、ユーザーがSlackで指示を送ると、その指示を受け取ったスーパーバイザーエージェントが、他の専門的なエージェント群とA2Aプロトコルに従って連携し、タスクを実行するという形になります。これにより、ユーザーは複雑なエージェント間のやり取りを意識することなく、目的のタスクを達成できます。

A2Aを実際に触ってみる

公式リポジトリ

A2Aの公式リポジトリは以下のURLで公開されています。

https://github.com/google/A2A

このリポジトリには、A2Aプロトコルの仕様やサンプル実装が含まれています。

環境構築と実行

A2Aを試すには、公式リポジトリをクローンし、必要な依存関係をインストールする必要があります。詳細な手順は公式リポジトリのREADMEに記載されています。

また、立ち上げるにあたりこちらの記事が参考になりました。

https://zenn.dev/k_zumi_dev/articles/f788125312344a

立ち上げた際には以下のようにログが吐き出されており、Agent Cardが取得されているのが分かります。

"GET /.well-known/agent.json HTTP/1.1" 200 OK

サンプルエージェントの実行

A2Aリポジトリには、いくつかのサンプルエージェントが含まれています。以下は、それらを実行した結果です。

通貨変換エージェント

通貨変換エージェントは、異なる通貨間の為替レートを提供するエージェントです。このエージェントに対して「ードルを円に変換してください」といった質問をすると、最新の為替レート情報を返してくれます。

経費精算エージェント

経費精算エージェントは、経費の記録や管理を支援するエージェントです。このエージェントに対して「今日の出張でかかった交通費の経費精算をしたいです」といった指示をすると、経費を記録し、必要に応じて分類や集計も行ってくれます。

画像生成エージェント

画像生成エージェントは、テキスト指示に基づいて画像を生成するエージェントです。

ただし、このエージェントを実行する際に以下のようなエラーが発生することがあります。

INFO:LiteLLM:selected model name for cost calculation: gemini/gemini-2.0-flash
ERROR:common.server.server:Unhandled exception: 'NoneType' object is not subscriptable
INFO:     ::1:54473 - "POST / HTTP/1.1" 400 Bad Request

これはコスト計算時に発生するエラーで、環境変数LITELLM_SKIP_COST_CALCULATION=Trueを設定し、agent.pyでload_dotenv()を実行することで解決できる場合があります。ただし、完全に解決するわけではなく、一時的に成功することもあるようです。

A2Aの今後

A2Aプロトコルが普及・発展することで、AIエージェントの連携は新たな次元に入ります。ここでは、A2Aによって実現可能になる具体的なユースケースと、その実現に向けた今後の展望について個人的な予想について書きます。

考えられるユースケース

会議準備の完全自動化

会議テーマを入力するだけで、秘書AIが社内の各部署AIと連携し、資料収集、論点整理、サマリー作成を自動実行。本質的な議論に集中できる環境を提供します。

データドリブンな営業支援

営業AIが市場分析AI、競合比較AI、CRM AIと連携し、「この顧客にはこのタイミングでこの製品を」という具体的戦略を提案。データに基づく効果的な営業活動を実現します。

既存サービスへの組み込み

例えば、マネーフォワードのクラウド会計の場合、チャットボットのようなUIからタスクをお願いすると、それに対応するエージェントが裏でやってくれるようなイメージです。これにより、既存のサービスがより使いやすくなります。

今後の技術的な発展と展望

主要AIフレームワークによるサポートやSDKの整備

LangChainやLlamaIndexといった、多くの開発者に利用されているAIアプリケーション開発フレームワークがA2Aを標準的にサポートするようになれば、開発のハードルが大きく下がります。

また、クライアント側のSDKも整備されれば大きく発展していくと思われます。

エージェントマーケットプレイスの登場

特定の機能や業界知識に特化したA2A対応エージェントを発見し、MCPでいうところのGlamaSmitheryのようなプラットフォームが登場することが予想されます。これにより、ゼロからエージェントを開発せずとも、既存のエージェントを組み合わせて高度なシステムを構築できるようになります。

RAG構築の重要性

A2Aプロトコルの効果的な活用には、高品質なRAGシステムの構築が不可欠です。エージェントにとってRAGは一つのツールの一つですが、これにより社内情報にアクセスできるようになります。

企業はA2A時代に備え、今から自社データを活用したRAGシステムの構築、改善などの試行錯誤に取り組みナレッジとして持っておくことが重要だと思います。

まとめ

ここまで読んでいただきありがとうございました!

A2Aプロトコルは、MCPと同様にAIエージェント間の連携を標準化する重要なプロトコルです。MCPがLLMとツールの連携を標準化したように、A2Aはエージェント同士の会話を標準化することで、より複雑で高度なAIシステムの構築を可能にします。

現時点ではまだ発展途上ですが、今後のSDKの整備や主要フレームワークのサポートにより、より多くの開発者がA2Aを活用できるようになるのが楽しみです!

GitHubで編集を提案
3
EGGHEAD テックブログ

Discussion

ログインするとコメントできます