
レアゾン・ホールディングスでエンジニアをやっている森です。
この記事では、AIエージェント間の連携技術として注目されているAgent2Agent (A2A) について解説します。新しい技術は実際に試してみることで、その活用方法が見えてくるものです。そこで、公式のサンプルコードを実行し、その動作を確認してみました。この記事を通して、皆さんのA2Aに対する理解が深まれば幸いです。
この記事は、A2Aが発表されてから約1ヶ月後に投稿されたものです。最新バージョンでは仕様が変更されている可能性があります。
概要
2025年4月9日、Googleは Agent2Agent(A2A) というエージェント同士の相互連携のためのオープンプロトコルを発表しました。
A2Aにより、AIエージェント同士がコミュニケーションを取り、安全に情報交換し、様々な企業プラットフォーム上やアプリケーション上でアクションを調整できるようになります。
すでに主要なサービスがこのプロトコルへの支持を表明しています。
with support and contributions from more than 50 technology partners like Atlassian, Box, Cohere, Intuit, Langchain, MongoDB, PayPal, Salesforce, SAP, ServiceNow, UKG and Workday; and leading service providers including Accenture, BCG, Capgemini, Cognizant, Deloitte, HCLTech, Infosys, KPMG, McKinsey, PwC, TCS, and Wipro.
また、A2A発表の1ヶ月後に、MicrosoftがA2Aへの対応を表明しました。A2AはAI Agent通信のデファクトスタンダードになる可能性が高そうですね!
MCPとの違い
- MCP (Model Context Protocol): 主にツールやAPIに対する1対1の通信(communication)を扱い、関数の呼び出しやドキュメントの取得などを目的とします
- A2A (Agent2Agent): Agent間の通信であり、専門的なタスクを、その分野に特化したAgentへ委任できます
参照: Google – Open standards for connectiong Agents
1. uvのインストール
uvはPythonパッケージとプロジェクト管理ツールです。1
インストール手順は公式ドキュメントを参照してください:
# macOS and Linux
curl -LsSf | sh
# shellの自動補完機能が必要な場合
echo 'eval "$(uv generate-shell-completion bash)"' >> ~/.bashrc
2. A2Aリポジトリのクローン
git clone [email protected]:google/A2A.git
cd A2A
3. 公式サンプルの実行
公式サンプルを実行して、A2Aの動作を確認します。
- A2A Serverと通信するA2A Client (host agent) の起動
cd demo/ui
# localhost:12000 に公開
uv run main.py
- 為替換算Agent (LangGraph – currency conversion agent) の起動
cd samples/python/agents/langgraph
# localhost:10000 に公開
uv run .
今回は、この2つのAgentを使って、現在の為替レートを取得し、1ドルを他の通貨に換算する処理を、複数回のやり取り (multi-turn)で行います。
為替換算Agentがない場合
まず、為替換算Agent(Currency Agent)を登録せずに試してみます。localhost:12000
にアクセスし、Conversation画面から「1ドルの為替レートは?」と質問します。
host agentとの対話ではGeminiが使用されており、この時点ではWeb上のリアルタイム情報(live exchange rates
) にアクセスできないため、回答できません。
為替換算Agentの登録
次に、localhost:12000 のUIから為替換算Agent(Currency Agent)を登録します。左側の「Remote Agents」セクションで設定します。
このエージェントはLangGraphで記述されており、為替に関する質問を受け取ると、https://frankfurter.dev/ のAPIを呼び出すActionを実行するようシステムプロンプトで指示されています。
以下がCurrency Agentのシステムプロンプトです。従来型の汎用的な生成AIとは異なり、「唯一の目的 (sole purpose)」を設定することで、特定の専門タスクを実行するAgentとして機能します。エラー処理や完了ステータスの設定なども定義されています。
SYSTEM_INSTRUCTION = (
"You are a specialized assistant for currency conversions. "
"Your sole purpose is to use the 'get_exchange_rate' tool to answer questions about currency exchange rates. "
"If the user asks about anything other than currency conversion or exchange rates, "
"politely state that you cannot help with that topic and can only assist with currency-related queries. "
"Do not attempt to answer unrelated questions or use tools for other purposes."
"Set response status to input_required if the user needs to provide more information."
"Set response status to error if there is an error while processing the request."
"Set response status to completed if the request is complete."
)
日本語訳
あなたは為替換算の専門アシスタントです。
あなたの唯一の目的は、『get_exchange_rate』 ツールを使って為替レートに関する質問に答えることです。
もしユーザーが通貨変換や為替レート以外のことを尋ねてきた場合、そのトピックについては助けることができず、
通貨関連の問い合わせにしか答えることができないことを丁寧に述べてください。
関係のない質問に答えようとしたり、他の目的のためにツールを使用したりしないでください。
ユーザーがより多くの情報を提供する必要がある場合は、応答ステータスを input_required に設定する。
リクエストの処理中にエラーが発生した場合は、応答ステータスをエラーに設定する。
リクエストが完了した場合は、応答ステータスを完了に設定する。
為替換算Agent (Currency Agent) を追加した場合
Currency Agentを登録した後、先ほどと同じ質問「1ドルの為替レートは?」を入力します。
最初の質問では、multi-turn(複数回のやり取り)の動作を確認するため、あえて変換先の通貨を指定しませんでした。
その結果、A2A ServerのHost Agentが、どの通貨に換算したいかをUserに尋ね返します。
Userが「JPY」と入力すると、Host Agentはドルから円への換算タスクをCurrency Agentに送信します。
全体の流れは以下のようになります。
- userが質問文(1ドルの為替レートは?)を入力
- host agentは情報が不足している(どの通貨への換算か不明)と判断し、userに追加情報を要求する
- userが追加情報(JPY, 円)を入力 (追加情報が得られない場合は、再質問)
- host_agentがCurrency Agentに「1ドルから円への為替レートを回答するタスク」を送信
- Currency Agent が為替APIを呼び出してドル円相場を取得
- Currency Agentが取得した結果を整形し、host_agentにタスク完了とともに回答を送信
- host_agentがCurrency Agentから受信した回答をuserに表示
下記がイベントリストの一覧です。(記事投稿時点では、時系列になっていないため少し見づらいです)
今回はA2Aの公式サンプルを実行し、その動作の流れを確認しました。host_agentがユーザーとの対話やタスクの振り分けを行う秘書役、個々のAgentが特定の作業を担当する専門家、というような役割分担になっていると理解できそうです。
将来的には、例えば店舗ごとに商品情報検索や購入機能を持つAgentが存在し、host_agentを通じて商品のレコメンドやQ&Aを行うといった活用も考えられそうです。Webサイトを持たず、Agentを介してサービスを提供する「Agent型店舗」のような新しい形態も登場するかもしれませんね!
余談
- host_agentとCurrency AgentをDocker Composeで起動しようと試みましたが、コンテナ間のネットワーク接続設定や、デモUIからAgentを指定する仕組みの影響か、Agent登録は成功してもチャットでの連携が正常に動作しませんでした。
- もしDockerでのA2Aに成功された方がいらっしゃいましたら、コメントで共有いただけると幸いです
▼採用情報
レアゾン・ホールディングスは、「世界一の企業へ」というビジョンを掲げ、「新しい”当たり前”を作り続ける」というミッションを推進しています。
現在、エンジニア採用を積極的に行っておりますので、ご興味をお持ちいただけましたら、ぜひ下記リンクからご応募ください。
Views: 0