Looker Explore Assistantで回答例をexamplesテーブルに登録し回答精度を向上させてみた(回答例の手動作成ver)
さがらです。
Looker Explore Assistantで回答例をexamplesテーブルに登録し回答精度を向上させてみたので、その内容を本記事でまとめてみます。(LLMのテクニックでいう、Few-shot promptingの実装になります。)
※Looker Explore Assistantのセットアップ自体は、下記のブログをご覧ください。注意点として、下記のブログは最新ではないリポジトリを使用しているため、最新のリポジトリを用いる場合は若干手順が異なっている可能性があります。最新のリポジトリで試す際は、リポジトリの各READMEも併せてご覧ください。
やりたいこと
Looker Explore Assistantで問い合わせを行い、以下のグラフを作りたいとします。
このグラフを作るために、Explore Assistantで「地図上で、直近30日の間の男女別の平均消費額を知りたい」と問い合わせをしてみましたが、性別がピボットされておらず作りたいグラフとは一致していません。
今回、Explore Assistantで1つ目の作りたいグラフを描写するための、回答例の登録をやってみます。
回答例の登録
まずデフォルトの回答例ですが、セットアップ時に用いたlooker-explore-assistant/explore-assistant-examples/examples.json
に記載がされており、これをPythonプログラムあるいはシェルスクリプトでBigQuery上のexplore_assistant_examples
にロードしているはずです。(実際のExploreの内容と関係ない内容でもロードしないと、Explore Assistantが機能しないため。)
この回答例を記述したjsonを編集して、再度BigQuery上のexplore_assistant_examples
にアップロードしていく、ということが今回行うことになります。
新しいjsonファイルでも、既存のexamples.json
でも良いので、jsonファイルを開きます。
その後、すでに記載のある例と同じ書き方で、input
とoutput
を記入してます。
input
outputでほしいグラフを表示させるための、問い合わせ例文を記入します。
ここでは、冒頭で記述した「地図上で、直近30日の間の男女別の平均消費額を知りたい」とします。
output
事前にExplore上で手動で作成したグラフを表示した状態で、右上の歯車マークからShare
を押します。
その後、Expanded URL
の中で、fields=
から&vis=
の前までをコピーします。これがoutputの内容になります。
注意点として、Explore上でis in the last 30 days
としていたのが30+days
と変換されており、このままだとExplore Assistant上でエラーになります。
30+days
をlast 30 days
に変更するのを忘れないでください。(おそらく、他にも同じようなエラーがあり得ると思うので、その際は随時調整をお願いします。)
記入後のjsonのイメージ
下図のような形式になっていればOKです。
この状態で、PythonプログラムあるいはシェルスクリプトでBigQuery上のexplore_assistant_examples
にロードします。
- Pythonプログラムの場合
source .venv/bin/activate
python load_examples.py --project_id YOUR_PROJECT_ID --explore_id YOUR_EXPLORE_ID --table_id explore_assistant_examples --json_file examples.json
- シェルスクリプトの場合 ※新しいリポジトリだとシェルスクリプトが提供されています。
looker-explore-assistant/explore-assistant-examples/.env
の内容の変更と、新しいjsonファイルを作成した場合はlooker-explore-assistant/explore-assistant-examples/load_examples.sh
のJSON_FILE
の値を事前に編集するのを忘れないでください。
source .venv/bin/activate
chmod +x load_examples.sh
./load_examples.sh
今回私はシェルスクリプトで実行しましたが、実行後、下図のように追加したinput
とoutput
がexplore_assistant_examples
テーブルに反映されていればOKです。
Explore Assistantでの動作確認
この上で、Explore Assistant上で冒頭で試した「地図上で、直近30日の間の男女別の平均消費額を知りたい」で再度問い合わせをしてみます。
すると、狙い通り性別がピボットされた状態でグラフが表示されました!(厳密にはグラフの可視化のオプションは異なっているのですが、これはグラフの可視化オプションの設定まで含めていないためです。含めた場合でも動くと思うのですが、要検証ですね…)
最後に
Looker Explore Assistantで回答例をexamplesテーブルに登録し回答精度を向上させることを試してみました。
LLMの活用テクニックとしてFew-shot promptingという回答例を示すことで精度を向上させる方法がありますが、同じテクニックがExplore Assistantでも効果が見込めるということがわかりました。
補足事項:自動で回答例を作成したい方へ
また、この記事の内容を読んで「1つ1つ例を作るのは辛いよ…」と感じた方もいると思います。
そんな方向けに、looker-explore-assistant/explore-assistant-training
内でNotebookが用意されており、これを使うことでLooker上のクエリ履歴に応じた回答例を自動で作成してくれる機能があります。(Looker上でクエリ履歴がないと動かないことや、関係ないクエリも参照してしまう可能性があることだけご注意ください。)
私はまだ試せていないのですが、すでにLooker上で多数の分析を行っている場合には役立つ場面もあると思います。参考になると幸いです。