Google A2Aのデモを動かす
Google A2A(Agent2Agent) デモを動かす
GoogleからA2Aプロトコルが発表されました。
デモがあったので実際に動かしてみました。以下、簡単に手順のメモです。必要なもの
- Python
- uv
- Gemini APIキー
手順
-
リポジトリのクローン:
まず、A2AのリポジトリをGitHubからクローンします。
git clone https://github.com/google/A2A/
-
ディレクトリの移動:
クローンしたリポジトリの
samples
ディレクトリに移動します。cd A2A cd samples
-
仮想環境の作成と有効化:
uv
を使用して仮想環境を作成し、有効化します。uv venv source .venv/bin/activate
-
Gemini APIキーの設定:
Gemini APIキーを環境変数に設定します。
<your_api_key>
の部分を実際のAPIキーに置き換えてください。export GOOGLE_API_KEY=<your_api_key>
-
crewai
エージェントの起動:python/agents/crewai
ディレクトリに移動し、uvでcrewai
エージェントを起動します。ポート10000で実行します。cd python/agents/crewai uv run . --host 0.0.0.0 --port 10000
この状態で、別のターミナルから以下のコマンドを実行して、エージェントのメタデータを確認できます。
curl http://0.0.0.0:10000/.well-known/agent.json
正常に動作していれば以下のように出力されるはずです。
{ "name": "Image Generator Agent", "description": "Generate stunning, high-quality images on demand and leverage powerful editing capabilities to modify, enhance, or completely transform visuals.", "url": "http://0.0.0.0:10000/", "version": "1.0.0", "capabilities": { "streaming": false, "pushNotifications": false, "stateTransitionHistory": false }, "defaultInputModes": [ "text", "text/plain", "image/png" ], "defaultOutputModes": [ "text", "text/plain", "image/png" ], "skills": [ { "id": "image_generator", "name": "Image Generator", "description": "Generate stunning, high-quality images on demand and leverage powerful editing capabilities to modify, enhance, or completely transform visuals.", "tags": [ "generate image", "edit image" ], "examples": [ "Generate a photorealistic image of raspberry lemonade" ] } ] }
-
他のエージェントの起動:
同様の手順で、他のエージェントも異なるポートで起動します。Ctrl+z、bgなどとしてエージェントをバックグラウンドで動かします。
crewai
ディレクトリから一つ上のagents
ディレクトリに戻り、google_adk
とlanggraph
ディレクトリで同様にuv run
コマンドを実行します。cd ../google_adk uv run . --host 0.0.0.0 --port 10001
エージェントが起動したら同様にバックグラウンドで動作させます。
cd ../langgraph uv run . --host 0.0.0.0 --port 10002
注意: ポート番号が重複しないようにしてください。
-
デモUIの実行:
demo/ui
ディレクトリに戻り、main.py
を実行します。cd ../../../demo/ui uv run main.py
これで、ブラウザでhttp://0.0.0.0:12000などにアクセスすると、A2Aのデモが実行されるはずです。
-
エージェントの追加:
左メニューから「Agents」を選択。そこでエージェントを追加。ここで入力する「Agent Address」の形式は<IPアドレス>:<ポート>の形式。httpなどは不要。
正常にエージェントが認識されると次のような画面になります。
-
Enjoy:
左メニューで「Home」に戻り、Conversationを追加すると、フロントエンドを介してHost Agentと会話を始めることができます。
Discussion