Создайте настраиваемого AI Slack Bot для упрощенной аналитики данных на естественном языке

Создайте настраиваемого AI Slack Bot для упрощенной аналитики данных на естественном языке

5 мая 2023 г.

Узнайте больше о нашем проекте с открытым исходным кодом на Github

В современном мире, управляемом данными, организации постоянно ищут способы сделать свой процесс анализа данных более эффективным и оптимизированным. Недавний всплеск большой языковой модели технологии произвели революцию в области аналитики, обеспечив взаимодействие на естественном языке, что дало доступ к анализу данных каждому. DSensei — это бот Slack с открытым исходным кодом, который связывает эту технологию с людьми, позволяя им запрашивать аналитику данных на простом английском языке непосредственно в их привычном инструмент для обмена мгновенными сообщениями.

В этом посте мы рассмотрим шаги по настройке Dsensei в Slack для подключения к BigQuery в качестве источника данных.

Предпосылки

  • Учетная запись Slack с правами администратора на рабочую область для установки Dsensei
  • Ключ API OpenAI (его можно сгенерировать по этой ссылке)
  • Учетная запись Google Cloud с ролью IAM roles/iam.serviceAccountCreator для создания учетной записи службы для BigQuery (см. doc для подробностей)

Настройка

Теперь давайте начнем процесс установки.

Шаг 1. Создайте приложение Setup Slack

Сначала создадим новое приложение Slack и установим его в рабочую область:

  • Войдите в свою учетную запись Slack в браузере и перейдите на страницу https://api.slack.com/apps
  • Нажмите кнопку "Создать новое приложение", чтобы создать новое приложение, и выберите "Из манифеста приложения".
  • Выберите рабочую область, в которую вы хотите установить приложение.
  • В диалоговом окне "Введите манифест приложения ниже" выберите формат YAML и вставьте следующий манифест:

display_information:
 name: sensei
features:
 app_home:
   home_tab_enabled: false
   messages_tab_enabled: true
   messages_tab_read_only_enabled: false
 bot_user:
   display_name: sensei
   always_online: true
 slash_commands:
   - command: /info
     description: Get information about DB
     usage_hint: /info [dbs] | [tables db] | [schema db.table]
     should_escape: false
oauth_config:
 scopes:
   bot:
     - app_mentions:read
     - chat:write
     - commands
     - im:history
     - files:write
     - files:read
settings:
 event_subscriptions:
   bot_events:
     - app_mention
     - message.im
 interactivity:
   is_enabled: true
 org_deploy_enabled: false
 socket_mode_enabled: true
 token_rotation_enabled: false

Шаг 2. Настройте учетные данные BigQuery

Тогда давайте создадим аккаунт Google Cloud Service Dsensei для доступа к Bigquery:

  • Войдите в консоль Google Cloud в браузере и перейдите на страницу https://console.cloud.google. com/iam-admin/serviceaccounts.
  • Выберите проект, к которому вы хотите, чтобы Дсенсей имел доступ, и вы должны попасть на страницу управления учетной записью службы.
  • Нажмите "+ Создать сервисный аккаунт".
  • Введите «Dsensei» в «Имя учетной записи службы» и «dsensei» в «Идентификатор учетной записи службы», при желании вы также можете добавить некоторое описание. Нажмите "СОЗДАТЬ И ПРОДОЛЖИТЬ".

screenshot

* Назначьте сервисному аккаунту роли «Просмотр данных BigQuery» и «Пользователь задания BigQuery» и нажмите «Готово».

screenshot

* Найдите только что созданный сервисный аккаунт в списке, откройте меню «Действие» и нажмите кнопку «Управление ключами».

screenshot

* Во вкладке "Ключи" нажмите "ДОБАВИТЬ КЛЮЧ" -> «Создать новый ключ», чтобы открыть диалоговое окно создания ключа. * В диалоговом окне создания ключа выберите тип ключа «JSON» и нажмите «СОЗДАТЬ». * Он должен загрузить файл JSON, сохранить файл JSON по правильному пути, и мы будем использовать его позже.

Шаг 3. Настройте службу DSensei

Теперь, когда мы настроили приложение Slack и доступ к BigQuery, давайте настроим сервис Dsensei:

* Ознакомьтесь с репозиторием Dsensei: git clone https://github.com/logunify/dsensei.git * Переключитесь на Node 18. Вы можете сделать это с помощью nvm use 18, подробности об установке и использовании nvm можно найти в этом документ. * Внутри проверенной папки dsensei запустите npm install, чтобы установить все зависимости. * Учетные данные конфигурации, мы предоставляем шаблон конфигурации, вы можете использовать его, переименовав .env.example в .env: * Конфигурация слабых учетных данных: * Перейдите на https://api.slack.com/apps и выберите только что созданное приложение. * На боковой панели выберите «OAuth и разрешения» и найдите токен oauth в разделе «Токены Oauth для вашей рабочей области». Он должен начинаться с xoxb-. Скопируйте токен и поместите его в SLACK_BOT_TOKEN в файле .env.



 ![screenshot](https://cdn.hackernoon.com/images/he6KSSVIuuS6WX9zjZEcfE9GCsF2-2023-05-04T16:27:07.933Z-clh9cbdwe00050bs6bebcaw4h)Then select the "Basic Information" on the sidebar, and find the "Signing Secret" under the "App Credentials" section. Copy the secret and put it under `SLACK_SIGNING_SECRET` in the `.env` file.


 ![screenshot](https://cdn.hackernoon.com/images/he6KSSVIuuS6WX9zjZEcfE9GCsF2-2023-05-04T16:27:08.017Z-clh9cbdyq000b0bs6czuf1nop)


* Finally, locate "App-Level Tokens" section under the "Basic Information" tab and click the "Generate Token and Scopes" button to generate an app token. Add the `connections:write` scope in the dialog and click "Generate" to generate the token. The Slack App Token should start with `xapp-`. Copy the token and put it under `SLACK_APP_TOKEN` in the `.env` file.

  

 ![screenshot](https://cdn.hackernoon.com/images/he6KSSVIuuS6WX9zjZEcfE9GCsF2-2023-05-04T16:27:08.016Z-clh9cbdyo000a0bs68h20bcod)


  • Настроить ключ API OpenAI:
    • Найдите свой ключ API OpenAI на этой странице, скопируйте токен и поместите его в OPENAI_API_KEY< /code> в файле .env.
  • Настроить ключ BigQuery:
    • В файле .env задайте для BQ_KEY путь к файлу ключа, сгенерированному выше для сервисного аккаунта, например /Users/foo/gcp. /dsensei.json
  • [Необязательно] Набор данных и таблицы белого списка.
  • Возможно, вы захотите ограничить набор данных/таблиц, к которым может получить доступ этот инструмент. Это можно сделать, перечислив набор данных в строке с разделителями-запятыми в поле DATABASES и/или с разделителями-запятыми. >dataset.tablename список в поле TABLES.

Запустите DSensei и проверьте в Slack!

Все, теперь у нас все настроено, давайте запустим Dsensei и проверим его в Slack!

* [Необязательно] Для демонстрационных целей мы копируем общедоступный образец набора данных электронной торговли в наш проект BigQuery и назовите его ecommerce: * Перейдите по этой ссылке и нажмите "КОПИРОВАТЬ". * Выберите «СОЗДАТЬ НОВЫЙ НАБОР ДАННЫХ» * Измените идентификатор проекта на проект, который мы создаем для учетной записи службы на шаге 2. * Нажмите «СОЗДАТЬ НАБОР ДАННЫХ» * Запустите npm run prod, чтобы запустить службу Dsensei. Вы должны увидеть инициализацию и загрузку схемы Dsensei в журналах. В нашем примере это выглядит следующим образом:

2023-04-26T23:10:00.526Z [SlackApp] info: 
    ____    _____                                _  
   / __   / ___/  ___    ____    _____  ___    (_)
  / / / /  __   / _   / __   / ___/ / _   / /
 / /_/ /  ___/ / /  __/ / / / / (__  ) /  __/ / /
/_____/  /____/  ___/ /_/ /_/ /____/  ___/ /_/

2023-04-26T23:10:00.529Z [DataSourceLoader] info: Use data source from BigQuery
[INFO]  socket-mode:SocketModeClient:0 Going to establish a new connection to Slack ...
2023-04-26T23:10:00.782Z [SlackApp] info: Sensei is up running, listening on port 3000
2023-04-26T23:10:00.986Z [BigQuery] info: Loaded databases: ecommerce
[INFO]  socket-mode:SocketModeClient:0 Now connected to Slack
2023-04-26T23:10:01.414Z [BigQuery] info: Loaded table: ecommerce.distribution_centers
2023-04-26T23:10:01.448Z [BigQuery] info: Loaded table: ecommerce.users
2023-04-26T23:10:01.452Z [BigQuery] info: Loaded table: ecommerce.events
2023-04-26T23:10:01.454Z [BigQuery] info: Loaded table: ecommerce.products
2023-04-26T23:10:01.456Z [BigQuery] info: Loaded table: ecommerce.inventory_items
2023-04-26T23:10:01.504Z [BigQuery] info: Loaded table: ecommerce.orders
2023-04-26T23:10:01.529Z [BigQuery] info: Loaded table: ecommerce.order_items
2023-04-26T23:10:01.530Z [BigQuery] info: All 1 databases are loaded.
2023-04-26T23:10:04.334Z [BigQuery] info: Enrichment finished.

* Теперь самое интересное, давайте поиграем с Дсенсеем в Slack: * Создайте новый канал и добавьте в него sensei (вы также можете найти "sensei" в разделе "Apps" слева и напрямую отправить ему запрос):

 ![screenshot](https://cdn.hackernoon.com/images/he6KSSVIuuS6WX9zjZEcfE9GCsF2-2023-05-04T16:27:08.010Z-clh9cbdyi00090bs6ba8u1hnr)


  • Начнем с команд для проверки загрузки схем. Отправьте /info dbs, чтобы получить всю базу данных, и вот ответ:

    ``текст Ваши базы данных:

    <ч/>

    электронная торговля ```

    * Отправьте /infotables ecommerce, чтобы получить все таблицы в наборе данных ecommerce, и вот ответ:

    ``текст Ваши таблицы в электронной торговле:

    <ч/>

    центры_распределения события inventory_items order_items заказы продукты пользователи <код>`` * Отправьте/info schema ecommerce products, чтобы получить подробную схему таблицыproducts`. Вот ответ:

    ```текст Схема таблицы ecommerce.products: описание типа имени

    <ч/>
     id INTEGER 
     FLOAT стоимость 
     категория STRING 
     имя STRING 
     марка STRING 
     розничная_цена FLOAT 
    отдел STRING 
     артикул STRING
    
    

    distribution_center_id ЦЕЛОЕ ЧИСЛО
    ```

    * После проверки загрузки схем мы проверим некоторые данные. Скажем, мы хотим узнать количество заказов в этом месяце, мы можем просто отправить "@sensei, сколько новых заказов у ​​меня есть в этом месяце?", и Дсенсей ответит в треде:

    screenshot

    * Мы можем связаться с Дсенсеем в треде, например, с количеством заказов, которые у нас есть в этом месяце, мы хотим знать, как оно по сравнению с прошлым месяцем. Дсенсей запомнит контекст всех разговоров с тредом, чтобы мы могли напрямую задать дополнительный вопрос, отправив в треде «@sensei как он соотносится с прошлым месяцем?», и мы получим:

    screenshot

    прикольно, да?

    * Он может отвечать на более сложные вопросы, которые требуют выполнения более подробных запросов sql. Например, мы хотим знать бренды, которые обрабатывают их более эффективно, и ограничиваемся только брендами с более чем 100 заказами, чтобы уменьшить предвзятость, что влечет за собой вопрос: «@sensei для тех брендов, у которых более 100 заказов, назовите мне 5 лучших брендов, которые быстрее всего доставляют свои заказы?".

    screenshot

    * Теперь у нас все настроено, наслаждайтесь аналитикой с DSensei!

Заключение

В заключение следует отметить, что использование возможностей чат-ботов для доступа к данным и их анализа может значительно повысить эффективность и результативность процессов анализа данных в организациях. DSensei — отличный Slack-бот с открытым исходным кодом, который может помочь вам достичь этой цели, позволяя вам получать доступ к данным и анализировать их с помощью команд на естественном языке. Выполнив действия, описанные в этом посте, вы сможете легко настроить DSensei и связать его с источником данных BigQuery, чтобы начать пользоваться его функциями.

Мы увлеченно развиваем этот проект и будем рады, если вы станете частью нашего сообщества в Discord, где вы сможете получать последние новости. , сообщайте об ошибках и запрашивайте новые функции. Также не стесняйтесь отправлять любые отзывы на GitHub напрямую.

Попробуйте живую демонстрацию DSensei на нашем канале Slack

.

:::информация Изображение для этой статьи было создано с помощью Kadinksy v2.

Подсказка: проиллюстрируйте робота в стиле Диснея в приложении для обмена сообщениями.

:::


Оригинал