🐡

A2AのデモをStreamlitで試してみる

に公開

1. はじめに

Googleが公開しているA2Aプロジェクトのデモを、より手軽に体験できるようStreamlitベースで再構築しました。

https://github.com/M6saw0/a2a-streamlit-app-demo

A2Aプロジェクトは、複数のAIエージェントが連携してタスクを解決するためのフレームワークです。
A2Aを体験できるデモアプリが公式リポジトリに公開されていますが、筆者のWindows環境では非常に動作が重かったため、Streamlitベースで再構築しました。
このA2A Streamlit Appを利用することで、為替換算、画像生成、経費精算といったA2Aプロジェクトの主要な機能を、Webブラウザ上で直感的に試すことができます。

2. A2A Streamlit Appの特徴

A2A Streamlit Appは、公式デモの会話処理をStreamlitに変換したものです。
以下の特徴を持っています。

  • マルチエージェント連携: 為替換算、画像生成、経費精算など、複数のAIエージェントを一つのUIから利用可能です。
  • 直感的なUI: Streamlitを採用することで、シンプルで分かりやすいインターフェースを実現しています。
  • ローカル実行: 複雑なセットアップは不要で、お使いのローカル環境ですぐに動作させることができます。
  • CLIテストもサポート: 各エージェントサーバーのAPI動作確認やデバッグに利用できるCLIツールも同梱されています。
  • リアルタイムチャット: ホストエージェントをFastAPIで実装することにより、エージェントが処理を実行している間でもチャットメッセージを送信でき、よりスムーズなユーザー体験を提供します。

3. アーキテクチャ

このアプリケーションは、複数のコンポーネントが連携して動作するアーキテクチャを採用しています。

  • A2Aサーバー: langgraph, crewai, google_adk といった各AIエージェントは、それぞれ独立したサーバーとして動作します。これにより、各エージェントの機能や専門性を分離し、柔軟な連携を可能にしています。
  • ホストエージェント (FastAPI): FastAPIで実装されたホストエージェントは、クライアントからのリクエストを受け付け、適切なAIエージェントサーバーに処理を振り分ける役割を担います。FastAPIの非同期処理機能を活用することで、AIエージェントの応答を待っている間でも、クライアントからのチャットメッセージ送信や追加リクエストの受付が可能となり、ユーザー体験の向上に貢献しています。
  • クライアント (Streamlit): Streamlitを利用して構築されたユーザーインターフェースは、直感的で分かりやすい操作性を提供します。ユーザーはこのUIを通じて、各AIエージェントの機能を利用したり、ホストエージェントとリアルタイムでチャットを行ったりすることができます。

全体として、クライアント(Streamlit UI)からのリクエストはホストエージェント(FastAPI)に送られ、ホストエージェントがそれを解釈して各AIエージェントサーバーに処理を依頼し、結果をクライアントに返すという流れになっています。

4. デモ機能紹介

このアプリでは、以下の3つのエージェント機能を体験できます。

4.1. 為替換算エージェント (Currency Agent)

指定された金額を異なる通貨に換算する機能を提供します。

4.2. 画像生成エージェント (Image Generator)

入力されたテキストに基づいて画像を生成する機能を提供します。

4.3. 経費精算エージェント (Process Reimbursement Tool)

経費の申請と処理を行う機能を提供します。ユーザーが経費情報を入力すると、エージェントがそれを処理します。

A2Aを介して、経費申請用のフォームを作成します。フォームの内容を送信することで経費申請の処理が動きます。

4.4. ローディング中のチャット機能

AIエージェントが処理を実行している間、ローディング画面が表示されます。この待機時間中にも、ユーザーはホストエージェントとチャットメッセージの送受信が可能です。これにより、処理待ちのストレスを軽減し、よりスムーズな対話を実現しています。

5. 実行方法 (Get Started)

必要環境

  • Python 3.10 以上
  • uv (パッケージ管理・実行用)

セットアップ手順

  1. 各AIエージェントサーバー(langgraph, crewai, google_adk)を、それぞれ別のターミナルで起動します。
  2. クライアント(client)ディレクトリでFastAPIサーバーとStreamlitフロントエンドを起動します。
# 1つ目のターミナル (langgraphサーバー)
cd langgraph
uv sync
uv run .

# 2つ目のターミナル (crewaiサーバー)
cd crewai
uv sync
uv run .

# 3つ目のターミナル (google_adkサーバー)
cd google_adk
uv sync
uv run .

# 4つ目のターミナル (クライアントAPIサーバー - FastAPI)
cd client
uv sync
uv run uvicorn host_agent_thread:app --reload

# 5つ目のターミナル (Streamlitフロントエンド)
cd client
uv run streamlit run fast_api_client_streamlit.py

6. まとめ

A2A Streamlit Appは、GoogleのA2Aプロジェクトが提唱するマルチAIエージェント連携を、簡易的に体験できるツールです。普段Streamlitで開発することが多い方は、ご活用ください。

為替換算、画像生成、経費精算といった具体的なデモ機能を通じて、AIエージェントたちがどのように連携し、ユーザーのリクエストに応えるのかを実際に確認できます。

ぜひこのA2A Streamlit Appを試してみて、マルチAIエージェントの世界を体験してください。

7. 参考リンク

Discussion