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.3.tar.gz (10.8 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.3-py3-none-any.whl (15.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for a2a_client_toolkit-0.1.3.tar.gz
Algorithm Hash digest
SHA256 0a56403a2d7aebb423b5105b281e03d6695b5fec70ae97528a2d3784dafe7080
MD5 9adb1436af10ce585c217dbfb0002bd0
BLAKE2b-256 f69868666b2556dbaa9dc27d32c4749cdd40c2bcd564105e701f55f660189ffd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for a2a_client_toolkit-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 884ea3af93661aea13ea1a54a86bbb322c63e22bf5666b9d19b467e7f6fb59cc
MD5 ad8240e1f8c08d502d6dbbc5212ec658
BLAKE2b-256 4b3b46e9209569448a37c8c50c0300e3a2069d49500a6464135fe80a54f6bf10

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