🍣

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のサンプルを試してみる。

  1. サンプルページのREADMEに従い、UV(python用軽量プロジェクトマネージャー)をインストールする。

  2. クライアント、リモート用に二つターミナルを開く

  3. A2Aリポジトリをclone

git clone https://github.com/google/A2A.git
  1. リモート用のターミナルで 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が設定されている様子

  1. クライアント用のターミナルで
    環境変数を設定してディレクトリに移動
GOOGLE_API_KEY="<Gemini APIを有効化した GCP API Key>"
export GOOGLE_API_KEY
cd samples/python/hosts/cli

agent起動

uv run .
  1. クライアント用ターミナルにAgent Cardの内容と入力欄が表示されるので今回はConvert 12000 yen to dollars at the latest rateと入力してみる

Select a file path to attach? (press enter to skip):は今回ファイルの添付はしないためEnterを押してスキップ

  1. 結果が出力
    変換レートの検索などの途中過程が表示され、artifactに結果が出力 12000 JPY is 84.12 USD

所感

  • Agent自体がサービスとして公開されるようになれば使い所も多そう。
    • 大手が公開APIのような形で提供するようになる?
  • 今のところはMCPの方を優先してキャッチアップすべき?
  • コードの詳細確認は後日...

参照

DXC Lab

Discussion