2024年9月26日

自然言語でデータを可視化できるLookerのExplore Assistantを試してみた


Content
tenです。

今回は、GitHubのLooker Open Sourceで公開されている「Explore Assistant」という拡張機能を試してみました。
本記事は、2024年9月22日時点の最新のリビジョン(9f8f60b) を利用しています。頻繁にアップデートされておりますので、ご注意ください。

Explore Assistantとは

Explore Assistantは、自然言語による問い合わせに基づいて、LookerのExploreを動的に生成する拡張機能です。
Exploreの生成には、LookMLで定義されたメタデータを利用しますので、Lookerの特徴でもある「共通の指標で、誰もが同じ分析結果を得られる」という強みを最大限に活かすことができます。

Explore Assistantは、Looker 拡張機能 (Looker Extension)という仕組みを利用して、Looker上にWebアプリケーションとして実装します。
実装手順はリポジトリのREADMEにも詳しく書かれておりますので、これを見ながら進めていきましょう。

下準備

リポジトリをクローンする

まず最初に、Explore Assistantのリポジトリを任意の場所にクローンします。

git clone https://github.com/looker-open-source/looker-explore-assistant.git

 

Google Cloudプロジェクトの作成(省略可)

必要に応じて、Google Cloudプロジェクトを作成します。

 

接続の作成

先ほど作成した (もしくは既存の) Google Cloudプロジェクトへの接続を作成します。

LookMLプロジェクトの作成

LookMLプロジェクトを作成し、先ほど作成した接続を含めたmodelファイルを作成しておきます。

Backendを構成する

次に生成AIとのやり取りを担うBackendを構成します。
Backendには以下の2通りの構成があります。要件に合わせて使い分けましょう。

1. Cloud Functions/Cloud Runで構成する
2. BigQuery/リモートモデルで構成する

今回は、より簡単に構成できる 2 で進めていきます。

 

BigQuery Backendをデプロイする

BackendをデプロイするTerraformが用意されていますので、これを使用します。
環境変数を以下の値に設定し、terraformコマンドを実行していきます。

cd explore-assistant-backend/terraform
export TF_VAR_project_id={PROJECT_ID}
export TF_VAR_use_bigquery_backend=1
export TF_VAR_use_cloud_function_backend=0

 

Terraformを初期化し、planでデプロイされるリソースを確認します。

terraform init
terraform plan

 

結果に問題がなければ、リソースを作成していきます。

terraform apply

 

サービスアカウントへの権限付与と接続の作成

explore-assistant-bq-sa という名前のサービスアカウントが作成されています。
BackendをBigQueryにする場合、こちらのサービスアカウントに「roles/bigquery.connectionUser」ロールを割り当てておきます。

また、サービスアカウントキーを作成し、Lookerで接続を作成します。
この接続は後の工程で利用しますので、名前を控えておきます。

Exampleを作成する

Explore Assistantでは、One-shotあるいはFew-shotと呼ばれるプロンプトのテクニックを使用して、精度を高めます。
実際にExplore Assistantを運用していく場合には、このExampleをどのようにメンテナンスしていくかも非常に重要な要素です。
今回は割愛しますが、Lookerのシステムアクティビティから上位のクエリを特定してExampleに追加することが推奨されております。
また、Exampleを自動生成するJupyter Notebookも用意されていますので、必要に応じて利用してみてください。

それでは進めていきましょう。

必要なパッケージのインストール

cd explore-assistant-examples
pip install -r requirements.txt

 

入出力例の作成

必要に応じて、入出力例を作成します。
今回は、リポジトリに含まれている examples.json および refinement_examples.json を使用して進めていきます。

load_examples.pyを実行

入出力例をBigQueryにアップロードします。
プロジェクトIDや、Lookerのモデル・Exploreについては適宜変更してください。

python load_examples.py --project_id {PROJECT_ID} --explore_id {MODEL}:{EXPLORE_ID} --table_id explore_assistant_examples --json_file examples.json
python load_examples.py --project_id {PROJECT_ID} --explore_id {MODEL}:{EXPLORE_ID} --table_id explore_assistant_refinement_examples --json_file refinement_examples.json
python load_examples.py --project_id {PROJECT_ID} --explore_id {MODEL}:{EXPLORE_ID} --table_id explore_assistant_samples --json_file samples.json --column_name samples

Frontendを構成する

最後に、Frontendを構成していきます。

.env ファイルの作成

explore-assistant-extension フォルダに .env ファイルを作成します。
VERTEX_BIGQUERY_LOOKER_CONNECTION_NAME および BIGQUERY_EXAMPLE_PROMPTS_CONNECTION_NAME は Backend で作成しておいた接続名を入力します。

VERTEX_BIGQUERY_LOOKER_CONNECTION_NAME={Lookerの接続名}
BIGQUERY_EXAMPLE_PROMPTS_CONNECTION_NAME={Lookerの接続名}
BIGQUERY_EXAMPLE_PROMPTS_DATASET_NAME={Exampleを保存するデータセット}
VERTEX_BIGQUERY_MODEL_ID={Terraformで作成されたリモートモデルのID}

 

embed_domain変数の編集

利用するLooker環境に合わせて embed_domain を編集します。
Looker (Google Cloud Core)であればデフォルトのまま、そうでない場合は hostUrl を window.origin に書き換えます。

ビルドする

下記のコマンドを実行し、ソースをビルドします。

npm run build

 

LookMLプロジェクトを設定

下準備で作成しておいたLookMLプロジェクトに、distフォルダに出力された bundle.js をアップロードします。

次に、manifest.lkml ファイルを作成します。
こちらもサンプルが含まれていますので、これを参考にします。

application: explore_assistant {
label: "Explore Assistant"
# url: "https://localhost:8080/bundle.js"
file: "bundle.js"
entitlements: {
core_api_methods: ["lookml_model_explore","create_sql_query","run_sql_query","run_query","create_query"]
navigation: yes
use_embeds: yes
use_iframes: yes
new_window: yes
new_window_external_urls: ["https://developers.generativeai.google/*"]
local_storage: yes
# external_api_urls: ["cloud function url"]
}
}

動作確認

LookMLをデプロイすると、ハンバーガーメニューの「アプリケーション」にExplore Assistantが表示されています。
こちらをクリックします。


次に利用するExploreを指定し、画面下部のテキストボックスから自然言語でリクエストしてみます。


グラフが表示されました!今回はインターフェースなどは英語のまま進めましたが、日本語でリクエストすることもできます。

さいごに

Explore Assistantを利用することで、自然言語でグラフを表示することができました。
この機能をうまく活用すると、誰もが自由にデータを分析できるようになりそうですよね。

今回は細かなカスタマイズは割愛しましたが、プロンプトの微調整やExampleの準備、LookMLのメタデータを充実化させることで、より生成AIのアウトプットの精度を高めることが可能です。
ぜひ、Explore Assistantを使いこなして、データドリブンな意思決定に役立ててみてください。

システムサポートでは、Google CloudやLookerの導入や活用を支援しております。
Explore Assistantを使ってみたいと感じた方は、お気軽にご相談ください!

Google Cloud導入・活用支援に関するご相談はこちら

2024年9月26日 自然言語でデータを可視化できるLookerのExplore Assistantを試してみた

Category Google Cloud

ご意見・ご相談・料金のお見積もりなど、
お気軽にお問い合わせください。

お問い合わせはこちら