Skip to main content

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 に対応

動作の流れ

  1. プラットフォームユーザーがメッセージを送信
  2. 各プラットフォームの API がメッセージを受信
  3. メッセージを A2A 形式に変換
  4. A2A エージェントにメッセージを送信
  5. エージェントからの応答を受信
  6. 応答をプラットフォーム形式に変換して返信

ライセンス

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

a2a_client_toolkit-0.1.4.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

a2a_client_toolkit-0.1.4-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file a2a_client_toolkit-0.1.4.tar.gz.

File metadata

  • Download URL: a2a_client_toolkit-0.1.4.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.14

File hashes

Hashes for a2a_client_toolkit-0.1.4.tar.gz
Algorithm Hash digest
SHA256 40a5effaafa7b3afd76b619b405fe1b52dd35014bc614acbbc3e7ce0b6f6a7b3
MD5 cf338c5b824fe1b57fb0154a06f4e6bc
BLAKE2b-256 ce1a5964bb191e9271b84538c6524f52721d43fc5bc3a5c4379adb464da7d84d

See more details on using hashes here.

File details

Details for the file a2a_client_toolkit-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for a2a_client_toolkit-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5ad1dab8b71e68a4b04f3f06474fdb4f7e6be40c8039395f61a2b4d5e5717414
MD5 97ec7ca42a673f2c3a0953d27226d630
BLAKE2b-256 ee664b90b9cadc60d3b2329cb2a870ed5f354cd646b59ff9be594e5208e401f4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page