Zenn
😀

A2Aプロトコルのサンプルコードを試してみる【AIエージェント】

に公開
4

はじめに

GoogleがAgent2Agent プロトコル(A2A)を発表しました。
この記事ではそのサンプルコードを試してみます。

A2Aは、ざっくりいうと異なる企業やフレームワークによって作られたAIエージェントたちが共通のプロトコルを介して、互いに呼び出せる仕組みです。

さらにざっくりいうと、**サンプルコード内では、Google ADK製のAIエージェントが、Langgraph製のAIエージェントを呼び出して、まるで子エージェントかのようにタスク依頼をします。**その結果を受け取ってユーザーに返します。

将来的にA2Aが普及すれば、さまざまなサービスにAIエージェントが搭載され、それらが必要に応じて連携して動けるようになります。

↓発表
https://cloud.google.com/blog/ja/products/ai-machine-learning/a2a-a-new-era-of-agent-interoperability
↓ドキュメント
https://google.github.io/A2A/#/
↓github
https://github.com/google/A2A/tree/main

サンプルコードの全体像


https://github.com/google/A2A/tree/main/demo

今回はHostAgentの加えて以下の3つを起動します。

LangGraph
概要: ツールを使用して通貨を変換するエージェント。
特徴: マルチターンの対話、ツールの使用、ストリーミング更新を実現。

CrewAI
概要: 画像を生成するエージェント。
特徴: マルチターンの対話と、A2A を通じた画像送信を実現。

Google ADK
概要: 経費報告書を模擬的に記入するエージェント。
特徴: マルチターンの対話と、A2A を通じたウェブフォームの返信・送信を実現。

コードのダウンロード

任意の場所に落としてください。
https://github.com/google/A2A/tree/main

uvのインストール

デモを実行する際にuvが必要

uvはPythonの高速かつ高機能なパッケージマネージャー
一つでpipとvenvの両方の機能が使えます。

https://github.com/astral-sh/uv

uv をインストール

公式インストーラー

curl -LsSf https://astral.sh/uv/install.sh | sh

もしくはbrewでも入る

brew install uv

https://zenn.dev/kazu0429/articles/ed5011178d4b85

インストールできたら、pathを通します。

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

GeminiのAPIキーの取得

デモコードにおいてHost AgentやA2A Server側のAgentたちはGeminiで動かす想定で書かれているので、GeminiのAPIキーが必要です。

GeminiのAPIキーはここから取得します。
私は課金していないのでfree planですが、問題なく動きました。
https://aistudio.google.com/app/apikey?authuser=1&hl=ja

プロジェクト直下に.envファイルを作成して記載しておく。

GOOGLE_API_KEY=hogefuga

私は試していないですが、Host AgentはGoogle ADK製なので、LiteLLM経由でOpenAIのAPIキーなども使えるはず。
https://google.github.io/adk-docs/agents/models/#using-cloud-proprietary-models-via-litellm

言わずもがなA2A Server側のLangGraph AgentやCrew AI AgentはOpenAIなどのAPIキーが使えます。

なので社内規定などで特定のLLMしか使えない場合もなんとかなるはず。

A2A Server側のAgentを順番に起動する

Langgraph

localhost:10000で立ち上がる

cd samples/python/agents/langgraph
uv run .

README

CrewAI

localhost:10001で立ち上がる

cd samples/python/agents/CrewAI
uv python pin 3.12
uv venv
source .venv/bin/activate
uv run .

README

Google ADK

localhost:10002で立ち上がる

cd samples/python/agents/google_adk
uv run .

README

Webアプリを起動する

http://localhost:12000で起動します

cd demo/ui
uv run main.py

A2A Server側のAgentを登録する

Remote AgentsのところからA2A Server側のAgentを追加する。
画像はすでに追加済み。

以下をそれぞれ入力して追加する。
localhost:10000
localhost:10001
localhost:10002

実際に聞いてみる

確かに3つのエージェントが認識されている。

Langgraphはシンプルなのでうまく動く。
他2つは実際にやってみるとかなり挙動が不安定で、かなりの割合でレスポンスが返ってこない。

Langgraph(通貨変換)

CrewAI(画像生成)

Google ADK(経費精算)

新しいAIエージェントを作ってみる

(執筆中)

ひとまずClineを使って既存コードを元にLanggraphのエージェントをもう一つ作ってみた。
なんとなくA2A経由の呼び出し自体は上手くできているが、最後に結果をうまく表示できていない。

いずれにせよドキュメントを見て最小構成がなんなのか実装を理解する必要がある。
https://google.github.io/A2A/#/

参考

https://dev.classmethod.jp/articles/ai-a2a-protocol-googlecloudnext/

4

Discussion

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