🔎

Duet AI in Bigqueryを触ってみる

2023/12/05に公開

この記事は、Money Forward Engineering 1 Advent Calendar 2023 5日目の投稿です。

4日目は4geruさんで「Kaigi on Rails のスタッフ体験記。」でした。

本日は私が「Duet AI in Bigqueryを触ってみる」について書いていきたいと思います。

はじめに

⁠まずは簡単な自己紹介をさせていただきます。
山崎隼也と申します。Money Forwardの分析基盤部でデータエンジニアをしています。
最近は分析基盤としてBigqueryを運用したり、AWS DMSを用いてデータ抽出ツールを開発したりしています。

Duet AIとは

https://cloud.google.com/ai/duet-ai

Duet AI は、Google の最先端の生成 AI 基盤モデルを搭載した常時接続の AI コラボレーション パートナーであり、生産性と創造性の向上を支援します

https://www.youtube.com/watch?v=g5TwQx60NXs

Duet AI自体はGoogle Consoleだけでなく、Google workspaceやIDEなど様々な環境で動作します。
今回は「Duet AI in Bigqueryを触ってみる」の文字通りDuet AI for Google Consoleの中でもBigqueryにフォーカスしてお伝えしていきます。

Duet AI in Bigquery

for SQL

Duet AIはBigquery クエリエディタ上で以下機能を提供します。

  • プロンプトからのクエリ自動生成
    • 自然言語でのクエリ生成やAIによる要約により、データ分析に関する疑問に素早く答えます。
  • SQLのコンテキストに応じた補完機能
    • 迅速に新しいデータセットの生成やクエリの反復処理を行うことが可能になります。
  • SQLの説明機能
    • クエリのAI要約により、クエリの理解を促進、また複雑なクエリも迅速に理解できます。

上記を組み合わせて使うことで、たとえ初学者でも間違ったクエリを書く可能性を抑えながらクエリを生成することができそうです。
また、熟練者であっても、自動作成や補完機能、説明機能を活用することでより高速にデータ分析のプロセスを実行することができるでしょう。

for python notebook

またDuet AI in BigqueryはBigquery studioの埋め込みpython notebook(Colab Enterprise の Notebook )に対しても以下機能を提供しています。

  • プロンプトからのPythonコード自動生成
  • コンテキストに応じたPythonコード補完機能

過去の遺産やノウハウを転用しながらサクサク書いていくことができそうです。

それでは実際にそれぞれの動作を確認していきましょう。

⁠動作確認

SQL

まずは簡単に動作を確認してみます。
動作を確認するための簡単なテーブルを作って、意図通り参照できるか確認してみます。
create a person table with 10 sample data.
というプロンプトを与えてみます。
プロンプトはクエリエディタ上に #{プロンプト} の形で渡します

ちょっと意図と違う気がしています。せっかくなのでExplain機能を使って説明してもらいましょう。

説明してもらいたいクエリを選択し、左側に出てきたExplain this queryをクリックします
※コンソールの言語が日本語だと出てきませんでした、言語はEnglish(United States)で作業しています

するとコンソール右側のduet AIコンソールに説明が表示されます。


もちろんお願いすれば日本語でも説明してくれます。
このクエリは一般公開データセットから新しいテーブルを同じデータセットに作ろうとしています。
これは私の意図と違うので、プロンプトを変更します。

create a person table with 10 sample data.you don't use public data set.

このようになりました。

ちなみに生成時、いくつかの候補からクエリを選択することができます。
先ほどとは違い、一から人物のデータを作ってくれています。ただ利用したいdataset名、テーブル名は既に決まっているので、さらに書き加えてみます。

create a person table with 10 sample data.you don't use public data set.
The table name is person. create in 'temporary' dataset

ぱっと見良さそうなので実行してみます、無事テーブルができたようです。
確認してみましょう。

I'd like to confirm temporary.person. please sort by number of people

お、ちゃんと記載通りの人物データが入っています。

let me know the number of people in each age in temporary.person

ちょっとしたクエリも生成してくれました。

Python notebook

次はPython notebookの挙動をみてみましょう。

AIで生成するをクリック

入力フォームが出ました。例として記載されていた文言をそのまま実行してみます。
10 random number use numpy

期待通りの出力です。

今度は一般公開データセットのpenguinsテーブルを使ってみます(notebook作成時のpenguinsの確認サンプルに続いて実行しています)
ペンギンの種族を予測してもらうモデルを作ってもらいましょう。

プロジェクト名.データセット名.penguins, create the model to detect the species
※都合により別データセットにpenguinsテーブルをコピーして使っています。

良さそうな見た目です。
ただこのままでは実行できませんでした。

sklearnはbigqueryを扱う際bigframes.mlを使う必要があります。
https://cloud.google.com/bigquery/docs/bigquery-dataframes
またRandomForestClassifierはn_estimatorという引数を持っていないようです
https://cloud.google.com/python/docs/reference/bigframes/latest/bigframes.ml.ensemble.RandomForestClassifier

上記を修正したところ、実行することができました。

⁠まとめ

  • Duet AI In Bigquery for SQLは既存の利用者にとって使いやすく、よりデータ分析を手軽にしてくれそうです。初心者に対しても、Explain機能を正しく利用すれば、リスクを軽減させながら分析を実行できます。初心者から経験者まで、誰もが利用しやすい環境を整える手助けとなることでしょう。

  • 一方 for Python notebookのコード生成精度に関してはまだ十分とは言い難いので、利用の際は生成されたコードが意図通りであるか、確認できる知識が必要です。

いずれにせようまく活用することで誰もがデータの利活用を促進できるきっかけになりそうだと感じました。Duet AI In Lookerなど、気になる機能が目白押しのDuet AIの動向を今後も追っていきたいと思います

明日もマネーフォワードのアドベントカレンダーをお楽しみください!
Money Forward Engineering 1 Advent Calendar 2023

Money Forward Engineering 2 Advent Calendar 2023

Money Forward Developers

Discussion