🍣
A2Aのサンプルを触ってみる
A2A(Agent2Agent)とは
概要
異なるベンダー・フレームワークで構築されたエージェント同士を連携させるためのプロトコル。
主要理念
主要理念として以下の5つが挙げられている
- シンプル:既存のフレームワークなどを活用する
- エンタープライズ対応:認証、セキュリティ、プライバシー、追跡、監視
- 非同期ファースト: 長時間実行されるタスク・人間参加型タスクに対応
- モダリティに依存しない: テキスト、オーディオ/ビデオ、フォーム、iframe などを利用可能
- 不透明な実行: エージェント間で思考過程、プラン、ツールを共有しなくて良い
コアコンポーネント
コアとなるコンポーネントは下のようなものがある
-
AgentCard
- 名前、機能、エンドポイント、スキル、認証要件などが記載されたメタデータ
- AgentCardの内容を元にRemote Agentを利用する
-
Task
- Clientによって作成される作業状態の管理
-
Artifact
- Taskの実行結果
-
Message
- Client-Remote間のやり取り
- ex)ユーザーのコンテキスト、指示、エラー、ステータス、メタデータなど
-
Part
- Artifact 及び Message の構成単位
MCPとの関係は?
MCP(Model Context Protocol)はLLMとツールのデータ、リソース、ツールのやり取りを標準化するための規格。
A2Aとは適用箇所が異なり、補完しあう関係にある。
公式githubのサンプルを試してみる
こちらでA2Aの実行サンプルが公開されている。
今回は pythonのサンプルを試してみる。
-
サンプルページのREADMEに従い、UV(python用軽量プロジェクトマネージャー)をインストールする。
-
クライアント、リモート用に二つターミナルを開く
-
A2Aリポジトリをclone
git clone https://github.com/google/A2A.git
- リモート用のターミナルで agentを起動
環境変数を設定してディレクトリに移動
GOOGLE_API_KEY="<Gemini APIを有効化した GCP API Key>"
export GOOGLE_API_KEY
cd samples/python/agents/langgraph
agent起動
uv run .
http://localhost:10000/.well-known/agent.jsonにアクセスしてみる
Agent Cardの内容が出力される。
Agent Cardは基本的に/.well-known/agent.json
にホストすることが推奨されている。
ちなみにこのサンプルのリモートには通貨の変換Agentが設定されている様子
- クライアント用のターミナルで
環境変数を設定してディレクトリに移動
GOOGLE_API_KEY="<Gemini APIを有効化した GCP API Key>"
export GOOGLE_API_KEY
cd samples/python/hosts/cli
agent起動
uv run .
- クライアント用ターミナルにAgent Cardの内容と入力欄が表示されるので今回は
Convert 12000 yen to dollars at the latest rate
と入力してみる
Select a file path to attach? (press enter to skip):
は今回ファイルの添付はしないためEnterを押してスキップ
- 結果が出力
変換レートの検索などの途中過程が表示され、artifactに結果が出力12000 JPY is 84.12 USD
所感
- Agent自体がサービスとして公開されるようになれば使い所も多そう。
- 大手が公開APIのような形で提供するようになる?
- 今のところはMCPの方を優先してキャッチアップすべき?
- コードの詳細確認は後日...
Discussion