このガイドでは、SlackBot エージェントの構築方法を学びます。 このボットを使うと、自然言語で Slack から ClickHouse のデータについて直接質問できます。これには ClickHouse MCP server と PydanticAI を使用します。
前提条件
uvがインストールされている必要があります- Slack ワークスペースにアクセスできる必要があります
- Anthropic の API key、または別の LLM プロバイダーの API key が必要です
Slack App を作成する
- slack.com/apps にアクセスし、
Create New Appをクリックします。 From scratchを選択し、アプリに名前を付けます。- 使用する Slack ワークスペースを選択します。
アプリをワークスペースにインストールする
次に、前のステップで作成したアプリをワークスペースに追加します。 Slack のドキュメントにある "Add apps to your Slack workspace" の手順に従ってください。
Slack アプリを設定する
App Homeに移動しますShow Tabs→Messages Tabで、Allow users to send Slash commands and messages from the messages tabを有効にしますSocket Modeに移動しますSocket Modeを有効にします- 環境変数
SLACK_APP_TOKENに設定するSocket Mode Handlerを控えておきます
OAuth & Permissionsに移動します- 次の
Bot Token Scopesを追加します:app_mentions:readassistant:writechat:writeim:historyim:readim:writechannels:history
- アプリをワークスペースにインストールし、環境変数
SLACK_BOT_TOKENに設定するBot User OAuth Tokenを控えておきます。
- 次の
Event Subscriptionsに移動しますEventsを有効にしますSubscribe to bot eventsで、次を追加します:app_mentionassistant_thread_startedmessage:im
- Save Changes
[object Object]
プロジェクトのルートに .env ファイルを作成し、以下の環境変数を設定します。
これにより、アプリが ClickHouse の SQL playground に接続できるようになります。
SLACK_BOT_TOKEN=your-slack-bot-token
SLACK_APP_TOKEN=your-slack-app-level-token
ANTHROPIC_API_KEY=your-anthropic-api-key
CLICKHOUSE_HOST=sql-clickhouse.clickhouse.com
CLICKHOUSE_PORT=8443
CLICKHOUSE_USER=demo
CLICKHOUSE_PASSWORD=
CLICKHOUSE_SECURE=true必要に応じて、ClickHouse 関連の変数は独自の ClickHouse server または Cloud インスタンスを使うように変更できます。
ボットを使う
-
ボットを起動します:
uv run main.py -
Slack で:
- チャンネルでボットにメンションします:
@yourbot Who are the top contributors to the ClickHouse git repo? - スレッドでメンション付きで返信します:
@yourbot how many contributions did these users make last week? - ボットに DM を送ります:
Show me all tables in the demo database.
- チャンネルでボットにメンションします:
ボットはスレッド内で返信し、必要に応じて それまでのスレッドメッセージをすべてコンテキストとして使用します。
スレッドコンテキスト: スレッド内で返信する際、ボットはそれ以前のすべてのメッセージ (現在のメッセージを除く) を読み込み、AI のコンテキストに含めます。
ツールの使用: ボットは MCP 経由で利用可能なツール (例: スキーマの検出、SQL の実行) のみを使用し、使用した SQL と、どのように回答を導いたかの要約を常に表示します。