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

