BI
2024/12/11
森田 和登

Looker Explore Assistantで希望通りのグラフを出力させる方法(Few-Shot Prompting)

Looker Explore Assistantは、自然言語ベースでデータの探索や可視化を実行することができるLookerの新たな拡張機能です。本ブログ記事では、Few-Shot Promptingというテクニックを用いてExplore Assistantで想定したグラフを出力させる方法を紹介します。

1 はじめに

本記事は Looker Advent Calender 2024 の11日目の記事です。


Looker Explore Assistantは、自然言語ベースでデータの探索や可視化を実行することができるため、ユーザにLookMLやSQLクエリの知識がない場合でも、直感的にデータからインサイトを導出できるLookerの新たな拡張機能です。


しかし、Explore Assistantはまだ完璧なツールではありません。作成してほしいグラフやデータから明らかにしたい問いをただ入力しただけでは、想定したグラフや求めていたインサイトを出力してくれるとは限りません。


Explore Assistantの精度を向上させるテクニックの一つとして、Few-Shot Promptingが挙げられます。Few-Shot Promptingは、「プロンプトと出力のセット」をいくつか例として用意することで、LLMの出力精度を向上させるテクニックです。


そこで本ブログ記事では、Explore Assistantで想定したグラフを出力させるために「プロンプトと出力のセット」を定義する方法を紹介します。

2 事前準備

本記事では、事前にExplore Assistantのセットアップを完了していることを前提としています。


セットアップの方法については、以下の記事に詳しく書かれているので参照してください。


クローンしたリポジトリにおける explore-assistant-examples/examples.json にプロンプトと出力の例を記述します。


以下がexamples.jsonに記述するプロンプトと出力のサンプルです。



[{
"input": "Top 10 Brand by Sales",
"output": "fields=products.brand,order_items.total_sale_price&sorts=order_items.total_sale_price desc 0&limit=10&column_limit=50"
}, {
"input": "users by traffic source",
"output": "fields=users.traffic_source,users.count&sorts=users.count desc 0&limit=500"
}]


3 手順

本節では、ご自身のデータに合わせてexamples.jsonを編集し、希望通りのグラフを出力させるための手順を説明します。


なお、基本的な手順は以下の記事に詳しく書かれていて、大いに参考にさせていただきました。


STEP 1:

Looker上のExploreでExplore Assistantに出力してもらいたいグラフを作成します。


以下の例では、あるECサイトのサンプルデータを用いて「初回購入日別のユーザー数」の折れ線グラフを作成しています。



 


STEP 2:

グラフを作成したExploreの画面右上にある歯車のマーク>共有をクリックします。


「拡張URL」のうち、"fields=" 以降をコピーします。



 


STEP 3:

examples.json の”output”に貼り付けます。


ただし、JSONファイルの形式に合うように修正する必要がある場合があります。詳しくは後述します。


 


STEP 4:

examples.json の”input”に適切な文章(プロンプト)を入力します。



{
"input": "初回購入日別のユーザー数を教えて",
"output": "fields=users.count,user_order_facts.first_order_date&f[order_items.created_date]=90+days&sorts=users.count+desc+0&limit=500&column_limit=50&vis=......"
}



以上がexamples.json の大まかな記述方法です。


あとはこの記事を参考にJSONファイルをBigQueryにロードすれば、Explore Assistantに反映されます。





4 “output”を記述する際の注意点

前節のSTEP 3において、拡張URLを貼り付けるだけではエラーが出てしまう場合があると書きました。


以下では、現時点でわかっている範囲で、拡張URLの修正方法を共有します。



 


拡張URLはエンコードされているので、JSONファイルに合うように変更する


Lookerでコピーした拡張URLを編集する必要がある場合があります。フィルターとして日本語が含まれている場合などは、ChatGPTなどを用いてJSONファイルに合うように変更してください。

 ・(例)”Levi’s” ではなく"Levi\\u0027s”


 


バックスラッシュによるエスケープが必要


主に可視化の設定箇所で、"\"を用いたエスケープが必要な場合があります。

 ・(例)vis={"type": "looker_column"} ではなくvis={\"type\":\"looker_column\"}


 


"+"が機能しない場合がある


フィルターの設定箇所f[...]"+"が含まれているとエラーが出る場合がありました。

 ・"1+years""last 1 years"

 ・"NOT+NULL" → "NOT NULL"


5 おわりに

本ブログ記事では、Looker Explore Assistantで想定した通りのグラフを出力させるために、「プロンプトと出力の例」を定義する具体的な手順をお伝えしました。「”output”を記述する際の注意点」で述べた内容は、これまでExplore Assistantを触るなかで判明したものなので、さらに多くの修正事項がある可能性があることに注意してください。


また、実際にExplore Assistantを運用する場合には、「プロンプトと出力の例」で定義したもの以上のグラフやインサイトを出力してほしい場面が山ほどあると思います。そのような場合にExplore Assistantの精度をどのように高めることができるかについては、今後検証していきたいと思います。


6 参考

New call-to-action