A2A 試してみた

公開日:

はじめに

A2A とは、AI エージェントと AI エージェントが連携するための規格です。Google が 2025年4月に発表しました。

今回は Google のサンプルコードを動かしてみます。

Agent2Agent プロトコル(A2A)を発表:エージェントの相互運用性の新時代 | Google Cloud 公式ブログ

サイトを起動する

Google の A2A のリポジトリにはデモサイトのコードがあります。これを立ち上げてみます。

1. ソースコードをクローン

下のリンクからソースコードをクローンしてきます。

GitHub - google/A2A

2. ディレクトリに移動する

cd demo/ui

3. API Kye を.envに設定する

echo "GOOGLE_API_KEY=your_api_key_here" > .env

私はyour_api_key_hereの部分に Gemini の API Key を設定しました。

4. サイトを立ち上げる

uv run main.py

http://localhost:12000にアクセスするとサイトが表示されます。

a2a-demo-guide_010

会話を始めることもできました。

a2a-demo-guide_020

エージェントを起動する

しかし、これでは AI エージェントと連携してないので、何もできません。

a2a-demo-guide_030

AI エージェントを立ち上げて連携してみます。

AI エージェントのサンプルコードは JavaScript と Python があります。私はJavaScript の方が慣れているので、JavaScript で実行します。

これから立ち上げるエージェントはcoderというプログラムのコーディング機能を持ったエージェントです。

ちなみにlist_remote_agentsと入力すると実行可能なエージェントの一覧を提示してくれるようです。

1. ディレクトリに移動する

cd samples/js

2. 依存関係をインストール

npm install

3. API Key の設定

export GEMINI_API_KEY=<your_api_key>

<your_api_key>の部分に、先ほどと同じ Gemini の API Key を設定しました。

4. エージェントを立ちあげ

npm run agents:coder
> [email protected] agents:coder
> npx tsx src/agents/coder/index.ts

(node:16028) ExperimentalWarning: CommonJS module /opt/homebrew/lib/node_modules/npm/node_modules/debug/src/node.js is loading ES Module /opt/homebrew/lib/node_modules/npm/node_modules/supports-color/index.js using require().
Support for loading ES Module in require() is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
[CoderAgent] Server started on http://localhost:41241
[CoderAgent] Press Ctrl+C to stop the server
A2A Server listening on port 41241 at path /

http://localhost:41241にエージェントが立ち上がりました。

5. エージェントを連携する

起動したエージェントをサイトに連携します。先ほど起動したエージェントの URL である、localhost:41241を入力します。

a2a-demo-guide_040

Readを押すと読み込まれて、エージェントを登録できるようになります。

a2a-demo-guide_050

エージェントの一覧に追加することができました。 a2a-demo-guide_060

もう一度コードを書くように指示してみます。

a2a-demo-guide_070

できましたね。

さいごに

A2A でのエージェントはテキストを返すだけでなく、様々なタスクを実行することを想定されているようです。どうなるのか楽しみです。

この記事を書いた人

かい (@takasqr)

ソフトウェアエンジニア。個人的にアプリを作って得た知見をブログに書いています。