そのほか
2024/10/07
與田 龍人

LookerDashboardSummarizationを構築する方法

Looker ダッシュボードサマリ化拡張機能は、Vertex AI でホストされる大規模言語モデル (LLM) を活用し、Looker ダッシュボードのデータをリアルタイムで要約する拡張機能です。この機能は WebSocket を利用して、ストリーミングダッシュボードのサマリ生成を実現します。

はじめに

Looker ダッシュボードサマリ化拡張機能は、Vertex AI でホストされる大規模言語モデル (LLM) を活用し、Looker ダッシュボードのデータをリアルタイムで要約する拡張機能です。この機能は WebSocket を利用して、ストリーミングダッシュボードのサマリ生成を実現されます。

機能概要

この拡張機能は、以下の3つの主要な機能に分かれます。


1.サマリ生成


ダッシュボードのデータを基に簡潔なサマリを生成します。


2.処方 (Prescription)


ダッシュボードデータに基づき、運用アクションを提案し、異常値を指摘します。


3.行動 (Action)


Looker の API を活用し、インサイトを組織のビジネスツールへエクスポートします。


さらに、以下のエクスポート機能も提供しています。



  • Google Chat エクスポート(Oauth 統合)

  • Slack エクスポート(Oauth 統合、リッチテキスト対応)


使用技術


  • フロントエンド: React, TypeScript, Webpack, Looker Extension SDK, Looker Query API

  • バックエンド: Google Cloud Platform, Vertex AI, Cloud Run, WebSockets, Export API (Slack, Google Chat)


1. Generative AI & WebSocket サーバーのセットアップ

このセクションでは、Generative AI と WebSocket を使用したサーバーを Cloud Run でセットアップする手順を説明します。


ローカル開発環境のセットアップ


1.リポジトリをクローンします。



git clone https://github.com/looker-open-source/dashboard-summarization.git


2.テンプレートディレクトリへ移動します。



cd dashboard-summarization/websocket-service/src





3.依存関係をインストールします。



npm install





4.Node.js のバージョンが古い場合、npm install が失敗することがあります。必要に応じて Node.js のバージョンを更新するか、バージョンマネージャを使用して適切なバージョンに変更してください。


5.looker-example.inilooker.ini にリネームし、以下のように Looker API のクレデンシャル情報を設定します。



[mycompany]
base_url=
client_id=
client_secret=
verify_ssl=true


6.開発サーバーを起動します。



npm run start


開発サーバーが curl http://localhost:5000 で起動することを確認します。



 


2. バックエンドのデプロイ

次に、デプロイメント手順を説明します。これには Docker ファイルのビルドと、Artifact Registry への提出が含まれます。


デプロイ手順


1.まず、Artifact Registry にリポジトリを作成します。デプロイリージョンを指定して以下のコマンドを実行します。



gcloud artifacts repositories create dashboard-summarization-docker-repo --repository-format=docker --location=REGION


2.テンプレートディレクトリに移動します。



cd dashboard-summarization/websocket-service/src


3.looker-example.inilooker.ini にリネームし、Looker API のクレデンシャル情報を設定します。



[mycompany]
base_url=
client_id=
client_secret=
verify_ssl=true


4.cloudbuild.yaml ファイルを更新します。



steps:
# Docker Build
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t',
'-docker.pkg.dev//dashboard-summarization-docker-repo/websocketserviceimage',
'.']

# Docker Push
- name: 'gcr.io/cloud-builders/docker'
args: ['push',
'-docker.pkg.dev//dashboard-summarization-docker-repo/websocketserviceimage']

# = Your deployment region
# = Your GCP project ID


5.Docker ファイルをビルドし、Artifact Registry に提出します。REGION 変数をデプロイリージョンに置き換えて以下のコマンドを実行します。



gcloud auth login && gcloud auth application-default login && gcloud builds submit --region= --config cloudbuild.yaml

#=Your deployment region


6.この時点で返される Docker イメージ URL を保存します。または、Artifact Registry から Docker イメージ URL を取得します。


# 以下のような形式で返される



-docker.pkg.dev//dashboard-summarization-docker-repo/websocketserviceimage:latest


7.Terraform ディレクトリに移動します。



cd .. && cd terraform


8.variables.tf ファイル内のプロジェクト、リージョン、Docker URL、サービス名を更新します。



# project_id=
# deployment_region=
# docker_image=


variable "project_id" {
type = string
default = "" # あなたのGCPプロジェクトID
}

variable "deployment_region" {
type = string
default = "asia-northeast1" # あなたのデプロイ地域(例: 東京リージョン)
}

variable "docker_image" {
type = string
default = "asia-northeast1-docker.pkg.dev//dashboard-summarization-docker-repo/websocketserviceimage:latest"
# 先ほどのDockerイメージURL
}

variable "cloud_run_service_name" {
type = string
default = "websocket-service" # サービス名
}


9.リソースをデプロイします。環境に Application Default Credentials をエクスポートしていることを確認してください。



terraform init
terraform plan
terraform apply


20.デプロイされた Cloud Run URL エンドポイントを保存します。


オプション: BigQuery へのログ記録設定


Vertex AI への各リクエストは請求可能な文字数で記録され、コストの監視や見積もりに使用できます。Google Cloud のログシンクを設定し、以下のフィルターを使用して BigQuery にログを保存します。



resource.type = "cloud_run_revision"
resource.labels.service_name = "websocket-service"
resource.labels.location = "us-central1"
severity>=DEFAULT
jsonPayload.component="dashboard-summarization-logs"




3. Looker Extension Framework のセットアップ

ローカル開発環境のセットアップ


1.ルートディレクトリに移動します。



cd ../..


2.ファイルをコピーして保存し、適切な環境変数を設定します。WEBSOCKET_SERVICE には Cloud Run のエンドポイント URL を設定します。



SLACK_CLIENT_ID=
SLACK_CLIENT_SECRET=
CHANNEL_ID=
SPACE_ID=
WEBSOCKET_SERVICE=


3.依存関係をインストールします。



npm install --legacy-peer-deps


4.開発サーバーを起動します。



npm run build


bundle.js が作成されます。


5.Looker にログインし、新しい LookML プロジェクトを作成します。Develop => Manage LookML Projects => New LookML Project を選択し、Blank Project を選びます。


6.manifest.lkml ファイルを Looker プロジェクトにドラッグ&ドロップします。必要に応じて ID やラベルを変更してください。




4. フロントエンドのデプロイ手順

ローカルサーバーを起動してコードをロードする必要があります。デプロイメントの際、次の手順でプロダクションビルドを実行します。


1.プロダクションビルドを実行します。



npm run build


2.dist ディレクトリに生成された bundle.js ファイルを Looker プロジェクトにドラッグ&ドロップします。manifest.lkml ファイルを更新し、url の代わりに file を指定します。


 


3.デプロイ後ダッシュボード画面から拡張機能を選択して、実際のサマライズを確認できます。




まとめ

Looker ダッシュボードサマリ化拡張機能は、リアルタイムのデータサマリを提供し、データに基づくアクションをビジネスツールにエクスポートする強力なツールです。この記事に従って、環境をセットアップし、デプロイ手順を実行することで、リアルタイムでのダッシュボードデータの活用を開始できます。

New call-to-action