1. Прежде чем начать
В этой лаборатории кода (1) вы настроите расширение суммирования панели Looker Dashboard локально, чтобы опробовать его и развивать локально. Затем (2) вы развернете расширение в рабочей среде, чтобы другие пользователи Looker в вашем экземпляре Looker могли его использовать. Наконец, (3) вы можете выполнить дополнительные шаги для точной настройки и улучшения функциональности расширения. Все необязательные разделы следует заполнять в последовательном порядке.
Обзор расширения суммирования Looker Dashboard
Функционально расширение суммирования панели Looker Dashboard отправляет данные панели мониторинга Looker в модель Gemini от Vertex AI. Затем модель Gemini возвращает сводку данных вашей информационной панели и рекомендации по следующим шагам. Расширение отображает сводную информацию и следующие шаги в виде плитки на вашей информационной панели, интегрируя ее в вашу информационную панель. Кроме того, расширение может экспортировать сводку и следующие шаги в Slack или Google Chat. Расширение использует интерфейсное приложение React в сочетании с серверной службой веб-сокетов для отправки и получения данных в модель Gemini от Vertex AI и обратно.
Предварительные условия
- Базовое знание разработки Node, Docker и Terraform.
- Знакомство с настройкой проекта Looker LookML.
Что вы узнаете
- Как настроить и разработать расширение локально
- Как развернуть расширение в рабочей среде, чтобы его могли использовать другие пользователи Looker в вашем экземпляре Looker.
- Как дополнительно настроить производительность расширения и расширить его функциональность.
- Как управлять развернутым расширением в рабочей среде
Что вам понадобится
- Экземпляр Looker либо по оригинальной лицензии Looker, либо по активной пробной версии Looker Core, либо по активной лицензии Looker Core.
- разрешения на
develop
иdeploy
на вашем экземпляре Looker. - Разрешения на редактирование панели мониторинга, которую вы хотели бы опробовать с помощью расширения.
- Ключ API Looker из вашего экземпляра Looker.
- Проект Google Cloud, для которого включена оплата.
- Cloud Run API, Vertex AI API и API реестра артефактов включены в проекте.
- Доступ к локальной среде с установленным интерфейсом командной строки gcloud. Шаги кодовой лаборатории предполагают среду в стиле Linux.
2. Настройка бэкэнда для локальной разработки
В этом разделе вы настроите серверную службу веб-сокетов, чтобы опробовать ее и разработать локально. Сервис будет иметь доступ к Vertex AI.
- Установите Node версии 18 или выше, установленную в вашей локальной среде. Следуйте этим инструкциям , чтобы установить Node.
- Клонируйте репозиторий расширения в свой локальный домашний каталог и перейдите в корневой каталог репозитория. Для целей этой лаборатории кода все примеры кода будут предполагать, что ваш клонированный репозиторий находится в вашем локальном домашнем каталоге.
cd ~
git clone git@github.com:looker-open-source/dashboard-summarization.git
- Перейдите в корневой каталог клонированного репозитория и переименуйте файл
.env.example
в.env
чтобы вы могли устанавливать переменные среды в последующих разделах этой лаборатории кода.
cd ~/dashboard-summarization
mv .env.example .env
- Перейдите в каталог
src
серверной части веб-сокета клонированного репозитория. Этот каталог содержит исходный код сервера.
cd ~/dashboard-summarization/websocket-service/src
- Установите зависимости службы с помощью NPM .
npm install
- Переименуйте файл
looker-example.ini
вlooker.ini
.
mv looker-example.ini looker.ini
- Внутри обновления файла Looker.ini:
-
client_id
иclient_secret
соответствуют значениям из вашего ключа API Looker. -
base_url
с URL-адресом вашего экземпляра Looker в формате:https://<YOUR_LOOKER_URL_MINUS_PROTOCOL>:19999
- Текст в скобках (заголовок раздела) с хостом URL-адреса вашего экземпляра Looker.
Например, если ваш идентификатор клиента — ABC123
, ваш секрет клиента — XYZ789
, а URL-адрес вашего экземпляра Looker — https://mycompany.cloud.looker.com
, ваш файл looker.ini
будет выглядеть именно так:
[mycompany]
base_url=https://mycompany.cloud.looker.com:19999
client_id=ABC123
client_secret=XYZ789
verify_ssl=true
- Определите идентификатор своего проекта Google Cloud и установите его в переменной среды
PROJECT
. ЗаменитеYOUR_PROJECT_ID
идентификатором вашего проекта.
export PROJECT="YOUR_PROJECT_ID"
- Vertex AI предоставляет модель Gemini в нескольких регионах, перечисленных здесь . Определите, в каком регионе ваш локальный бэкэнд будет отправлять и получать данные из модели Vertex AI Gemini. Установите регион в переменной среды
REGION
. ЗаменитеYOUR_VERTEX_REGION
своим регионом, напримерus-central1
.
export REGION="YOUR_VERTEX_REGION"
- Теперь запустите локальную службу.
npm start
- Ваша локальная серверная служба веб-сокета будет работать по адресу http://localhost:5000.
Вы завершили настройку серверной службы WebSocket в вашей локальной среде!
Служба служит интерфейсом между вашим внешним расширением и моделью Vertex AI Gemini. Служба будет получать данные информационной панели и LookML из вашего внешнего расширения, а также данные, запрашиваемые из Looker, и запрашивать модель Gemini от Vertex AI. Затем служба будет передавать ответ Gemini на расширение внешнего интерфейса, которое будет отображаться на вашей панели управления.
Вы также можете внести изменения в исходный код серверной службы. Вам нужно будет сначала остановить процесс службы, внести изменения в код, а затем снова запустить npm start
.
3. Настройка интерфейса для локальной разработки
В этом разделе вы настроите расширение внешнего интерфейса, которое сможете опробовать и разработать локально.
- В той же локальной среде, что и на предыдущих шагах, перейдите в корневой каталог клонированного репозитория и установите зависимости внешнего сервера для вашего внешнего интерфейса.
cd ~/dashboard-summarization
npm install
- Запустите локальный сервер фронтенд-разработки.
npm run develop
- Ваш локальный интерфейсный сервер теперь обслуживает JavaScript расширения по адресу http://localhost:8080/bundle.js.
- Откройте веб-браузер и войдите в свой экземпляр Looker.
- Следуйте этим инструкциям , чтобы настроить пустой проект LookML. Назовите проект Dashboard-summarization. Теперь пустой проект LookML должен автоматически открыться в Looker IDE на текущей вкладке браузера.
- Создайте файл манифеста проекта в корне проекта LookML. Файл будет называться манифест.lkml. Если вы не знаете, как это сделать, следуйте этим инструкциям по добавлению файла в проект LookML.
- Замените содержимое нового файла манифеста.lkml содержимым файла манифеста.lkml в корневом каталоге вашего закрытого репозитория. Нажмите кнопку «Сохранить изменения» в правом верхнем углу, чтобы сохранить изменения в файле.
- На отдельной вкладке браузера перейдите к списку подключений к базе данных в вашем экземпляре Looker. Следуйте этим инструкциям , если вы не знаете, как это сделать.
- Выберите имя одного подключения к базе данных Looker. Не имеет значения, какое соединение вы выберете. Если у вас нет разрешения на просмотр подключений к базе данных, обратитесь к администратору Looker и запросите имя одного подключения к базе данных Looker.
- Вернитесь на вкладку браузера с открытым проектом LookML в Looker IDE. Создайте файл модели в своем проекте LookML и назовите его «dashboard-summarization».
- Замените содержимое файла Dashboard-summarization.model.lkml приведенным ниже примером кода. Обязательно замените строку в двойных кавычках именем подключения к базе данных, которое вы выбрали на шаге 9. Сохраните изменения в файле.
connection: "<YOUR_CONNECTION_NAME>"
- Настройте репозиторий для сохранения вашего проекта. Нажмите кнопку «Настроить Git» в правом верхнем углу. Выберите «Вместо этого создайте пустой репозиторий». Выберите «Создать репозиторий».
- Теперь у вас есть базовый репозиторий для хранения файлов проекта LookML. Вернитесь к проекту в Looker IDE, выбрав «Назад к проекту» или вернитесь назад вручную.
- Нажмите кнопку «Проверить LookML» в правом верхнем углу. Кнопка изменится на «Зафиксировать изменения и нажать».
- Нажмите кнопку «Зафиксировать изменения и нажать». Добавьте любое сообщение и нажмите «Зафиксировать».
- Выберите «Развернуть в производство» в правом верхнем углу Looker IDE. Теперь вы добавили расширение в свой экземпляр Looker!
- Перейдите к панели управления Looker, в которую вы хотите добавить расширение.
- Следуйте инструкциям , чтобы добавить плитку расширения на панель мониторинга. Добавьте новое расширение на свою панель мониторинга в виде плитки.
- Убедитесь, что локальная серверная служба веб-сокета, которую вы настроили ранее, работает.
Поздравляем! Теперь вы можете опробовать расширение суммирования Looker Dashboard на своей информационной панели. Ваше расширение отправит метаданные вашей панели мониторинга в локальную серверную службу веб-сокета и отобразит выходные данные Gemini из вашей внутренней службы прямо на плитке расширения панели мониторинга.
Пока ваш локальный интерфейсный сервер работает, вы можете вносить изменения в исходный код javascript расширения, и сервер автоматически создаст и обработает эти изменения. Вам нужно будет перезагрузить страницу расширения или панели управления, чтобы увидеть изменения.
4. Развертывание серверной части в рабочей среде
В этом разделе вы настроите серверную службу веб-сокета для обслуживания любых экземпляров расширения сводной панели вашей информационной панели на любой информационной панели в вашем экземпляре Looker. Это позволит другим пользователям Looker опробовать расширение на своих информационных панелях без необходимости настраивать собственную серверную службу. В этих шагах предполагается, что вы уже успешно развернули серверную часть для локальной разработки в той же локальной среде.
- Следуйте этим инструкциям , чтобы настроить учетные данные приложения по умолчанию в вашей локальной среде с идентификатором вашего проекта для следующих шагов.
- Создайте репозиторий реестра артефактов для образов Docker вашей серверной службы. Замените
YOUR_REGION
на регион, в котором вы хотите разместить свой репозиторий.
gcloud artifacts repositories create dashboard-summarization-repo \
--repository-format=docker \
--location=YOUR_REGION \
- Перейдите в каталог
src
серверной части веб-сокета вашего клонированного репозитория.
cd ~/dashboard-summarization/websocket-service/src
- Отредактируйте файл
cloudbuild.yaml
и замените все экземплярыYOUR_REGION
иYOUR_PROJECT_ID
на свой регион и идентификатор проекта. Сохраните изменения в файле. - Отправьте сборку с помощью Cloud Build, которая создаст образ Docker серверной службы и поместит его в только что созданный репозиторий реестра артефактов. Замените
YOUR_REGION
на регион, в котором вы хотите использовать сервис Cloud Build.
gcloud builds submit --region=YOUR_REGION --config cloudbuild.yaml
- Помните, что ваш новый URL-адрес образа Docker находится по адресу
YOUR_REGION-docker.pkg.dev/YOUR_PROJECT_ID/dashboard-summarization-repo/websocketserviceimage:latest
. ЗаменитеYOUR_PROJECT_ID
идентификатором вашего проекта. ЗаменитеYOUR_REGION
регионом из шага 2, который вы использовали для создания репозитория реестра артефактов. - Перейдите в каталог
websocket-service/terraform
в вашем клонированном репозитории.
cd ~/dashboard-summarization/websocket-service/terraform
- Определите, в каком месте Google Cloud Run вы хотите запустить серверную службу веб-сокета. Выбирайте из этих мест .
- Отредактируйте файлvariable.tf и замените
YOUR_PROJECT_ID
иYOUR_DOCKER_IMAGE_URL
соответствующими значениями. Проверьте шаг 6, чтобы узнать URL-адрес вашего образа Docker. ЗаменитеYOUR_REGION
на регион, который вы выбрали на предыдущем шаге. 8. Сохраните изменения в файле. - Разверните ресурсы, которые будет использовать ваша серверная служба, с помощью terraform.
terraform init
terraform plan
terraform apply
- Сохраните конечную точку развернутого URL-адреса Cloud Run для следующего раздела.
Поздравляю! Вы развернули серверную службу веб-сокета, и теперь она работает в Google Cloud Run. Теперь любые экземпляры вашего расширения суммирования Looker Dashboard могут взаимодействовать с вашей серверной службой. Мы рекомендуем всегда иметь хотя бы один экземпляр серверной службы веб-сокета, работающий в Cloud Run. Постоянство вашей серверной службы поддерживает целостность потоковой передачи данных между вашей серверной службой веб-сокета и внешним интерфейсом вашего расширения и помогает поддерживать сеанс каждого пользователя, когда он использует ваше расширение.
5. Развертывание интерфейса в рабочей среде
В этом последнем разделе вы выполните заключительные шаги по развертыванию внешнего интерфейса расширения, который будет доступен всем пользователям Looker в вашем экземпляре Looker.
- Перейдите в корневой каталог вашего клонированного репозитория.
cd ~/dashboard-summarization
- Отредактируйте файл .
env
файл. ЗаменитеYOUR_CLOUD_RUN_URL
конечной точкой URL-адреса Cloud Run из предыдущего раздела. Сохраните изменения файла. Это укажет интерфейс производственного расширения на вашу серверную службу веб-сокета, работающую в Cloud Run. - Создайте JavaScript расширения. Каталог
dist
будет автоматически создан с файломbundle.js
и другими файлами в нем.
npm run build
- Откройте веб-браузер и войдите в свой экземпляр Looker. Откройте боковую левую панель навигации и включите переключатель «Режим разработки» внизу.
- Открыв боковую левую панель навигации, выберите «Разработка», затем прокрутите вниз и выберите «Сводная панель», проект LookML вашего расширения. Теперь вы должны находиться в Looker IDE для проекта LookML.
- Перетащите все файлы из ранее созданного каталога dist в корневой каталог проекта в «Браузере файлов». Следуйте этим инструкциям , если вам нужна дополнительная помощь.
- Откройте файл
manifest.lkml
в Looker IDE. Внутри файла замените строку
url: "http://localhost:8080/bundle.js"
с
file: "bundle.js"
Замените YOUR_CLOUD_RUN_URL
конечной точкой URL-адреса Cloud Run из конца последнего раздела. Сохраните изменения в файле.
- Нажмите кнопку «Проверить LookML» в правом верхнем углу. Кнопка изменится на «Зафиксировать изменения и нажать».
- Нажмите кнопку «Зафиксировать изменения и нажать». Добавьте любое сообщение и нажмите «Зафиксировать».
- Выберите «Развернуть в производство» в правом верхнем углу Looker IDE.
Поздравляю! Теперь вы разрешили всем пользователям Looker в вашем экземпляре Looker добавлять расширение суммирования панели мониторинга Looker на свои панели мониторинга. Поскольку другие пользователи Looker используют расширение, все экземпляры расширения будут выполнять вызовы к вашей развернутой серверной службе веб-сокета, работающей в Google Cloud Run.
Имейте в виду, что если вы вносите какие-либо изменения в исходный код, вы должны:
- Снова создайте JavaScript вашего расширения.
- Замените сгенерированные файлы, которые вы добавили в проект LookML, вновь сгенерированными файлами из каталога
dist
. - Проверка, фиксация и развертывание изменений проекта LookML в рабочей среде.
Попробуйте расширение суммирования Looker Dashboard! Мы призываем вас внести свой вклад в расширение и помочь ему лучше удовлетворять потребности сообщества Looker. Пожалуйста, не стесняйтесь создавать запрос на включение в репозиторий .
Ознакомьтесь со следующими дополнительными разделами, чтобы включить экспорт Slack/Google Chat, точно настроить сводки Gemini и следующие шаги, а также настроить ведение журнала Gemini.
6. [Необязательно] Настройка возможностей экспорта
Теперь, когда вы и ваши пользователи Looker опробовали расширение Looker Dashboard Summarization, давайте поделимся информацией о расширении с большей аудиторией. Следуйте этому разделу, чтобы разрешить вашему расширению отправлять сводки и дальнейшие действия в Google Chat или Slack. Чтобы продолжить работу с этим разделом лаборатории кода, вы должны быть знакомы с настройкой Oauth.
Включить экспорт Google Chat
- Включите Chat API в своем проекте Google Cloud.
- Выполните шаг 1 инструкций по настройке Google Workspace OAuth . Для областей действия необходимо включить
spaces.messages.create
. - Выполните шаг 2 инструкций по настройке Google Workspace OAuth . Добавьте URL-адрес экземпляра средства просмотра в качестве URI в разделе «Авторизованные источники JavaScript», например
https://mycompany.cloud.looker.com
. Обратите внимание на сгенерированный идентификатор клиента. - Определите идентификатор пространства Google Chat, в которое вы хотите экспортировать сводки. Если вы не знаете, как это сделать, следуйте этим указаниям .
- Отредактируйте файл .
env
файл. ЗаменитеYOUR_GOOGLE_CLIENT_ID
на идентификатор клиента. ЗаменитеYOUR_GOOGLE_SPACE_ID
на идентификатор пространства Google Chat. Сохраните изменения файла. Это позволит настроить внешний интерфейс вашего расширения таким образом, чтобы он мог отправлять свои аналитические данные в нужное вам пространство Google Chat. - Если вы используете интерфейс вашего расширения локально, пересоберите расширение. В противном случае, если вы развертываете интерфейс вашего расширения, повторно разверните интерфейс вашего расширения.
Включить экспорт в Slack
- Выполните шаги 1 и 2 официальной документации для разработчиков Slack, чтобы настроить приложение OAuth . Для областей действия необходимо включить
chat:write
иchannels:read
. Запишите сгенерированный идентификатор клиента и секрет клиента. - Определите идентификатор канала Slack, в который вы хотите экспортировать сводки.
- Отредактируйте файл .
env
файл. ЗаменитеYOUR_SLACK_CLIENT_ID
на идентификатор клиента. ЗаменитеYOUR_SLACK_CLIENT_SECRET
секретом клиента. ЗаменитеYOUR_SLACK_CHANNEL_ID
на идентификатор канала. Сохраните изменения файла. Это настроит внешний интерфейс вашего расширения на отправку аналитических данных на нужный вам канал Slack. - Если вы используете интерфейс вашего расширения локально, пересоберите расширение. В противном случае, если вы развертываете интерфейс вашего расширения, повторно разверните интерфейс вашего расширения.
Теперь ваше расширение может экспортировать свои сводки непосредственно в Slack или Google Chat. Имейте в виду, что расширение может отправлять сводки только в определенное жестко запрограммированное пространство чата Google или канал Slack. Вы можете добавить дополнительные области Oauth и изменить код для получения и отображения списка пространств и каналов для отправки сводок.
7. [Необязательно] Настройте сводку и следующие шаги.
Расширение запрашивает модель Gemini со всеми метаданными панели мониторинга и данными запросов. Вы можете повысить точность, детализацию и глубину сводок и инструкций, добавив как можно больше метаданных и контекста в саму панель мониторинга. Попробуйте выполнить эти действия для каждой информационной панели, частью которой является ваше расширение:
- Следуйте этим инструкциям , чтобы добавить детали информационной панели на информационную панель. Это поможет информировать LLM об общем контексте информационной панели.
- Следуйте этим инструкциям , чтобы добавить примечания к каждой плитке панели мониторинга. Это поможет проинформировать LLM о контексте каждого отдельного запроса на информационной панели. Небольшие контекстные заметки будут учитываться при составлении резюме.
Чем больше информации вы можете добавить на свои информационные панели, тем лучше будет сводка расширения и последующие шаги. Вы можете изменить код, чтобы включить дополнительные метаданные информационной панели в приглашение к модели Gemini.
8. [Необязательно] Настройка ведения журнала модели Gemini
Каждый раз, когда пользователь сообщает расширению о создании сводных данных для информационной панели, расширение будет вызывать Vertex AI для каждого запроса на информационной панели, а также один последний вызов для форматирования всех сводных данных. Следуйте этому разделу, чтобы регистрировать вызовы Vertex AI, совершаемые вашим внутренним номером, чтобы вы могли оценить и отслеживать затраты и трафик Vertex AI. Вам следует следовать этим указаниям только в том случае, если вы развернули серверную службу веб-сокета.
- Определите местоположение Cloud Run для развернутой серверной службы веб-сокета.
- Следуйте этим инструкциям , чтобы настроить приемник журналов, который будет направлять журналы в Big Query. Назначением приемника должен быть BigQuery. Установите фильтр включения, используя следующий пример кода, в котором
YOUR_CLOUD_RUN_LOCATION
заменен местоположением Cloud Run из предыдущего шага.
resource.type = "cloud_run_revision"
resource.labels.service_name = "websocket-service"
resource.labels.location = "YOUR_CLOUD_RUN_LOCATION"
severity>=DEFAULT
jsonPayload.component="dashboard-summarization-logs"
9. Поздравляем!
Вы настроили расширение суммирования Looker Dashboard локально, чтобы опробовать его. Вы также развернули расширение в Google Cloud, чтобы другие пользователи тоже могли его опробовать! Теперь вы и другие пользователи можете получить доступ к сводным данным на базе Gemini и следующим шагам прямо со своих информационных панелей.
10. Что дальше
- Измените кодовую базу вашего расширения, чтобы адаптировать его функциональность к потребностям вашей организации.
- Вносите свой вклад в репозиторий расширения и улучшайте его для себя и своего сообщества Looker.
- Разработайте собственное расширение , чтобы расширить возможности Looker.
- Интегрируйте свое расширение в панель мониторинга в виде плитки, чтобы улучшить ее работу.