A toolkit for building A2A client
Project description
A2A Client Toolkit
A2A SDK とメッセージングプラットフォーム(LINE、Slack)を統合したクライアントツールキットです。各プラットフォームのユーザーと A2A エージェント間の双方向コミュニケーションを可能にします。
コンセプト
このツールキットは、各メッセージングプラットフォームからのメッセージを受信して A2A エージェントに転送し、エージェントからの応答をプラットフォームユーザーに返すブリッジとして機能します。テキストメッセージだけでなく、画像やファイルのやり取りもサポートしています。
サポートプラットフォーム
- LINE: LINE Bot API を使用
- Slack: Slack Bolt API を使用
インストール
pip install -r requirements.txt
基本的な使い方
LINE クライアント
1. 環境変数の設定
.envファイルを作成し、必要な設定を行います:
LINE_CHANNEL_SECRET=your_line_channel_secret
LINE_CHANNEL_ACCESS_TOKEN=your_line_channel_access_token
A2A_AGENT_CARD_URL=your_a2a_agent_card_url
HOST=http://localhost:8000 # ファイル配信用URL(オプション)
2. サンプルコード
import os
import linebot.v3.messaging as line_messaging
import uvicorn
from dotenv import load_dotenv
from client.worker import A2AClientWorker
from providers.line.file import LocalFileStore
from providers.line.handler import DefaultLineEventHandler
from providers.line.server import LineServer, LineServerConfig
from providers.line.user_state import InMemoryUserStateStore
if __name__ == "__main__":
load_dotenv()
config = LineServerConfig(
line_messaging_config=line_messaging.Configuration(
access_token=os.getenv("LINE_CHANNEL_ACCESS_TOKEN"),
),
line_channel_secret=os.getenv("LINE_CHANNEL_SECRET") or "",
)
user_state_store = InMemoryUserStateStore()
file_store = LocalFileStore(base_uri=f"{os.getenv('HOST') or ''}/files", directory="public/files")
event_handler = DefaultLineEventHandler(
config=config.line_messaging_config,
file_store=file_store,
user_state_store=user_state_store,
)
worker = A2AClientWorker(
a2a_agent_card_url=os.getenv("A2A_AGENT_CARD_URL") or "",
event_handler=event_handler,
)
server = LineServer(config, worker, user_state_store)
uvicorn.run(server.build(), host="0.0.0.0", port=8000)
3. サーバー起動
python src/samples/line.py
サーバーは http://localhost:8000 で起動します。LINE の Webhook エンドポイントは /callback です。
Slack クライアント
1. 環境変数の設定
.envファイルを作成し、必要な設定を行います:
SLACK_BOT_TOKEN=your_slack_bot_token
SLACK_APP_TOKEN=your_slack_app_token
A2A_AGENT_CARD_URL=your_a2a_agent_card_url
2. サンプルコード
import asyncio
import os
from dotenv import load_dotenv
from slack_sdk.web.async_client import AsyncWebClient
from client.worker import A2AClientWorker
from providers.slack.app import SlackApp, SlackAppConfig
from providers.slack.handler import DefaultSlackEventHandler
if __name__ == "__main__":
load_dotenv()
config = SlackAppConfig(
slack_bot_token=os.getenv("SLACK_BOT_TOKEN", ""),
slack_app_token=os.getenv("SLACK_APP_TOKEN", ""),
)
# Initialize Slack Web API client
slack_client = AsyncWebClient(token=config.slack_bot_token)
event_handler = DefaultSlackEventHandler(slack_client=slack_client)
worker = A2AClientWorker(
a2a_agent_card_url=os.getenv("A2A_AGENT_CARD_URL") or "",
event_handler=event_handler,
)
app = SlackApp(config, worker)
asyncio.run(app.run())
3. アプリ起動
python src/samples/slack.py
Slack アプリがソケットモードで起動します。
機能
- 双方向メッセージング: 各プラットフォームユーザーと A2A エージェント間でのリアルタイム会話
- ファイル共有: 画像、ドキュメント等のファイル送受信
- セッション管理: ユーザーごとの会話状態を保持
- カスタマイズ可能: 各コンポーネントを独自実装で置き換え可能
- マルチプラットフォーム: LINE、Slack に対応
動作の流れ
- プラットフォームユーザーがメッセージを送信
- 各プラットフォームの API がメッセージを受信
- メッセージを A2A 形式に変換
- A2A エージェントにメッセージを送信
- エージェントからの応答を受信
- 応答をプラットフォーム形式に変換して返信
ライセンス
MIT License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file a2a_client_toolkit-0.1.5.tar.gz.
File metadata
- Download URL: a2a_client_toolkit-0.1.5.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
34d43325d4e8ba1da6ed2f2d933414326d2313b025ce11bc3abd5063064ad953
|
|
| MD5 |
0ef3065a2465f786064e2c7762508a1b
|
|
| BLAKE2b-256 |
d321d855d38b449e4fa67fe588d904e2af836f60be757ffc90c1449900ba74f0
|
File details
Details for the file a2a_client_toolkit-0.1.5-py3-none-any.whl.
File metadata
- Download URL: a2a_client_toolkit-0.1.5-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ef211defff23c201c882b4ff5c65ab039246b5b982ccf3294a02b7263377dba
|
|
| MD5 |
0555a9c4de769b64501d0f878afd01b7
|
|
| BLAKE2b-256 |
0785597820c8b2fdb39432a1c1408e42d54f9f6558439fa6a28c7e87a71e4a30
|