![Создайте настраиваемого AI Slack Bot для упрощенной аналитики данных на естественном языке](https://hackernoon.imgix.net/images/illustrate-a-disney-like-robot-on-a-messaging-app-clh9c2m68000001s6gpo00gdl.png)
Создайте настраиваемого 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» в «Идентификатор учетной записи службы», при желании вы также можете добавить некоторое описание. Нажмите "СОЗДАТЬ И ПРОДОЛЖИТЬ".
* Назначьте сервисному аккаунту роли «Просмотр данных BigQuery» и «Пользователь задания BigQuery» и нажмите «Готово».
* Найдите только что созданный сервисный аккаунт в списке, откройте меню «Действие» и нажмите кнопку «Управление ключами».
* Во вкладке "Ключи" нажмите "ДОБАВИТЬ КЛЮЧ" -> «Создать новый ключ», чтобы открыть диалоговое окно создания ключа. * В диалоговом окне создания ключа выберите тип ключа «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
.
- Найдите свой ключ API OpenAI на этой странице, скопируйте токен и поместите его в
- Настроить ключ BigQuery:
- В файле
.env
задайте дляBQ_KEY
путь к файлу ключа, сгенерированному выше для сервисного аккаунта, например/Users/foo/gcp. /dsensei.json
- В файле
- [Необязательно] Набор данных и таблицы белого списка.
- Возможно, вы захотите ограничить набор данных/таблиц, к которым может получить доступ этот инструмент. Это можно сделать, перечислив набор данных в строке с разделителями-запятыми в поле
DATABASES
и/илис разделителями-запятыми. >dataset.tablename
список в полеTABLES
.
Запустите DSensei и проверьте в Slack!
Все, теперь у нас все настроено, давайте запустим Dsensei и проверим его в Slack!
* [Необязательно] Для демонстрационных целей мы копируем общедоступный образец набора данных электронной торговли a> в наш проект 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, сколько новых заказов у меня есть в этом месяце?
", и Дсенсей ответит в треде:* Мы можем связаться с Дсенсеем в треде, например, с количеством заказов, которые у нас есть в этом месяце, мы хотим знать, как оно по сравнению с прошлым месяцем. Дсенсей запомнит контекст всех разговоров с тредом, чтобы мы могли напрямую задать дополнительный вопрос, отправив в треде «
@sensei как он соотносится с прошлым месяцем?
», и мы получим:прикольно, да?
* Он может отвечать на более сложные вопросы, которые требуют выполнения более подробных запросов sql. Например, мы хотим знать бренды, которые обрабатывают их более эффективно, и ограничиваемся только брендами с более чем 100 заказами, чтобы уменьшить предвзятость, что влечет за собой вопрос: «
@sensei для тех брендов, у которых более 100 заказов, назовите мне 5 лучших брендов, которые быстрее всего доставляют свои заказы?
".* Теперь у нас все настроено, наслаждайтесь аналитикой с DSensei!
Заключение
В заключение следует отметить, что использование возможностей чат-ботов для доступа к данным и их анализа может значительно повысить эффективность и результативность процессов анализа данных в организациях. DSensei — отличный Slack-бот с открытым исходным кодом, который может помочь вам достичь этой цели, позволяя вам получать доступ к данным и анализировать их с помощью команд на естественном языке. Выполнив действия, описанные в этом посте, вы сможете легко настроить DSensei и связать его с источником данных BigQuery, чтобы начать пользоваться его функциями.
Мы увлеченно развиваем этот проект и будем рады, если вы станете частью нашего сообщества в Discord, где вы сможете получать последние новости. , сообщайте об ошибках и запрашивайте новые функции. Также не стесняйтесь отправлять любые отзывы на GitHub напрямую.
Попробуйте живую демонстрацию DSensei на нашем канале Slack
.:::информация Изображение для этой статьи было создано с помощью Kadinksy v2.
Подсказка: проиллюстрируйте робота в стиле Диснея в приложении для обмена сообщениями.
:::
Оригинал