В этом руководстве вы узнаете, как создать агента SlackBot. Этот бот позволяет задавать вопросы о данных в ClickHouse прямо из Slack, используя естественный язык. Он использует MCP-сервер ClickHouse и PydanticAI.
Предварительные требования
- У вас должен быть установлен
uv - У вас должен быть доступ к рабочему пространству Slack
- Вам понадобится API-ключ Anthropic или API-ключ другого провайдера LLM
Создайте приложение Slack
- Перейдите на slack.com/apps и нажмите
Create New App. - Выберите вариант
From scratchи укажите имя приложения. - Выберите своё рабочее пространство Slack.
Установите приложение в своё рабочее пространство
Затем вам нужно добавить в своё рабочее пространство приложение, созданное на предыдущем шаге. Вы можете воспользоваться инструкциями из "Add apps to your Slack workspace" в документации Slack.
Настройте параметры приложения Slack
- Перейдите в
App Home- В разделе
Show Tabs→Messages TabвключитеAllow users to send Slash commands and messages from the messages tab - Перейдите в
Socket Mode- Включите
Socket Mode - Сохраните значение
Socket Mode Handlerдля переменной окруженияSLACK_APP_TOKEN
- Включите
- Перейдите в
OAuth & Permissions- Добавьте следующие
Bot Token Scopes:app_mentions:readassistant:writechat:writeim:historyim:readim:writechannels:history
- Установите приложение в своё рабочее пространство и сохраните
Bot User OAuth Tokenдля переменной окруженияSLACK_BOT_TOKEN.
- Добавьте следующие
- Перейдите в
Event Subscriptions- Включите
Events - В разделе
Subscribe to bot eventsдобавьте:app_mentionassistant_thread_startedmessage:im
- Save Changes
- Включите
- В разделе
[object Object]
Создайте файл .env в корне проекта со следующими переменными окружения,
которые позволят вашему приложению подключиться к Песочнице ClickHouse.
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 или экземпляр 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? - Отправьте боту личное сообщение:
Show me all tables in the demo database.
- Упомяните бота в канале:
Бот ответит в треде, используя все предыдущие сообщения в треде как контекст, если это применимо.
Контекст треда: При ответе в треде бот загружает все предыдущие сообщения (кроме текущего) и использует их как контекст для ИИ.
Использование инструментов: Бот использует только инструменты, доступные через MCP (например, обнаружение схемы и выполнение SQL), и всегда показывает использованный SQL и краткое описание того, как был получен ответ.