Перейти к основному содержимому
Перейти к основному содержимому

Как создать SlackBot агент с использованием ClickHouse MCP Server

В этом руководстве вы узнаете, как создать SlackBot агент. Этот бот позволяет задавать вопросы о ваших данных ClickHouse прямо из Slack, используя естественный язык. Он использует ClickHouse MCP Server и PydanticAI.

Пример проекта

Код для этого примера можно найти в репозитории примеров.

Предварительные требования

  • Вам необходимо установить uv
  • У вас должен быть доступ к рабочему пространству Slack
  • Вам нужен ключ API от Anthropic или другого поставщика LLM

Создать Slack приложение

  1. Перейдите на slack.com/apps и нажмите Создать новое приложение.
  2. Выберите опцию С нуля и дайте вашему приложению имя.
  3. Выберите ваше рабочее пространство Slack.

Установить приложение в ваше рабочее пространство

Далее вам нужно добавить приложение, созданное на предыдущем шаге, в ваше рабочее пространство. Вы можете следовать инструкциям по теме "Добавление приложений в ваше рабочее пространство Slack" в документации Slack.

Настроить параметры приложения Slack

  • Перейдите в Домашняя страница приложения
    • В разделе Показать вкладкиВкладка сообщений: Включите Разрешить пользователям отправлять команды Slash и сообщения с вкладки сообщений
    • Перейдите в Режим сокетов
      • Включите Режим сокетов
      • Запомните Обработчик режима сокетов для переменной среды SLACK_APP_TOKEN
    • Перейдите в OAuth и разрешения
      • Добавьте следующие Областя токенов бота:
        • app_mentions:read
        • assistant:write
        • chat:write
        • im:history
        • im:read
        • im:write
        • channels:history
      • Установите приложение в ваше рабочее пространство и запомните OAuth токен пользователя бота для переменной среды SLACK_BOT_TOKEN.
    • Перейдите в Подписки на события
      • Включите События
      • В разделе Подписаться на события бота добавьте:
        • app_mention
        • assistant_thread_started
        • message:im
      • Сохранить изменения

Добавить переменные окружения (.env)

Создайте файл .env в корне проекта с следующими переменными окружения, которые позволят вашему приложению подключиться к SQL песочнице 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 или облачным экземпляром, если предпочитаете.

Использование бота

  1. Запустите бота:
uv run main.py
  1. В Slack:
    • Упомяните бота в канале: @yourbot Кто основные контрибьюторы репозитория ClickHouse?
    • Ответьте в треде, упомянув: @yourbot сколько вкладов сделали эти пользователи на прошлой неделе?
    • Напишите боту в личные сообщения: Покажи все таблицы в демонстрационной базе данных.

Бот ответит в треде, используя все предыдущие сообщения треда как контекст, если это применимо.

Контекст треда: При ответах в треде бот загружает все предыдущие сообщения (кроме текущего) и включает их как контекст для ИИ.

Использование инструмента: Бот использует только инструменты, доступные через MCP (например, выявление схем, выполнение SQL) и всегда показывает используемый SQL и краткое описание того, как был найден ответ.