見出し画像

【Tech Blog】Tableauから生成AI Gemini にプロンプトを送る ~カスタムSQLを使ってBigQuery MLのGeminiモデルを呼び出す~

こんにちは、データ分析とAIの愛好家の皆さん!
今回は、TableauとBigQuery ML、そしてGoogleの最新AI技術であるGeminiモデルを組み合わせる方法について、詳しく解説します。
この記事を通じて、強力なデータ可視化ツールであるTableauから、BigQuery MLの機械学習機能を活用し、さらにGeminiモデルの自然言語処理能力を利用する方法を学びます。


ユースケース例

ユーザーレビューの一覧からレビューを1つ選択し、Geminiに返答案を作成するリクエストを送ると、Geminiからの回答が表示される、というようなインタラクションを作成することができます。

Tableauダッシュボードの例:

前提条件

この記事を最大限に活用するために、以下の前提条件を満たしていることを確認してください:

  1. Google Cloud Platformのアカウントを持っていること

  2. BigQueryへのアクセス権があること

  3. Tableauデスクトップがインストールされていること

  4. SQLの基本的な知識があること

ステップ1: BigQueryで外部接続を設定する

まず、BigQueryとGeminiモデルを接続するための外部接続を設定します:

1.Google Cloud Consoleにログインします。

2.BigQueryを開きます。

3.外部接続を作成します:
   a.エクスプローラのメニューから「追加」を選択します。

   b.接続タイプとして「外部データソースへの接続」を選択します。

   c.外部データソースの設定を入力し、「接続を作成」をクリックします
      ・接続タイプ: Vertex AI リモートモデル、リモート関数、BigLake (Cloud リソース)
      ・接続ID: ex_connection_gemini(任意)
      ・ロケーションタイプ: マルチリージョン US(任意)

4.画像外部接続のサービスアカウントIDを記録しておきます。ステップ2で必要となります。

ステップ2: IAMで権限を付与する

  1. [IAMと管理] > [IAM] > [アクセス権を付与]から以下のように設定します。

    • 新しいプリンシパル: ステップ1で記録しておいたサービスアカウントD

    • ロール: Vertex AI ユーザー

ステップ3: BigQueryでGeminiモデルを作成する

外部接続が設定されたら、BigQueryでGeminiモデルを作成します:

  1. BigQueryのクエリエディタを開きます。

  2. 以下のSQLを実行してGeminiモデルを作成します:

---データセット内へgemini_1_5_flash(名前は任意)というモデルを作成する
CREATE OR REPLACE MODEL [your-dataset].gemini_1_5_flash
 
---作成した外部接続先を指定する
REMOTE WITH CONNECTION `[your-region].ex_connection_gemini`
 
---モデルがホストしている箇所を指す
OPTIONS(
  ENDPOINT = 'gemini-1.5-flash'
)

注意:

  • your-datasetとyour-regionは、実際のデータセット名とリージョン名に置き換えてください。以降のソースコードでも同様です。

  • ENDPOINTは、'gemini-pro'なども指定可能です。しかし'gemini-pro'はなかなかプロンプトに従ってくれなかったので、今回は'gemini-1.5-flash'を使用しています。
    ENDPOINTリファレンス: The CREATE MODEL statement for remote models over LLMs | BigQuery | Google Cloud

ステップ4: Geminiモデルをテストする

モデルが正しく作成されたことを確認するために、簡単なテストを行います:

1.新しいクエリウィンドウで、以下のSQLを実行します:

SELECT 
  JSON_VALUE(ml_generate_text_result.candidates[0].content.parts[0].text) as response
FROM ML.GENERATE_TEXT(
  MODEL `[your-project].[your-dataset].gemini_1_5_flash`,
  (SELECT 'こんにちは、あなたは誰?' AS prompt),
  STRUCT(
      1000 AS max_output_tokens -- 出力トークン数の設定(Option)
  )
)

2.クエリ結果にGeminiからの返答が格納されていることを確認します。

ステップ5: TableauでBigQueryに接続する

BigQueryの特定のデータセットやテーブルに接続します:

1.Tableau Desktopで、BigQueryのデータセットに接続します。
今回は、あらかじめ用意しておいた「レストランに関するレビューのデータセット(テーブル名:japanese_restaurant_review)」に接続しました。

2.接続が確立されたら、右側のペインに対象のテーブルをドラッグ・アンド・ドロップします。

ステップ6: パラメータを作成し、アクションを設定する

パラメータは、以下の手順で2つ作成します。1つは「レビューコメント格納用」、1つは「Geminiへの命令格納用」です。
レビューコメント格納用のパラメータは、テーブルからコメントを選択したら選択コメントがパラメータに格納されるようにアクションを設定します。

1.シート1に移動し、ディメンションの中から「Review」を行シェルフにドラッグ・アンド・ドロップしておきます。

2.データペインで右クリックして「パラメーターの作成」を選択し、レビューコメント格納用パラメータを作成します。

  • パラメータ名: review_text (任意)

  • データ型: 文字列

  • 現在の値: 空欄 (任意)

  • ワークブックが開いているときの値: 現在の値

  • 許容値: すべて

3.同様に、Geminiへの命令格納用パラメーターを作成します。

  • パラメータ名: request_text (任意)

  • データ型: 文字列

  • 現在の値: コメントに対する回答案を200文字以内で作成してください。 (任意)

  • ワークブックが開いているときの値: 現在の値

  • 許容値: すべて

パラメーターの「request_text」フィールド上で右クリックし、「パラメーターの表示」を選択しておきます。

4.テーブルからレビューコメントをクリックしたらパラメータ(review_text)にコメント文字列を格納するように、アクションを設定します。
「ワークシート」メニュー → アクション → アクションの追加 → パラメーターの変更 の順に選択し、パラメーターアクションを設定します。

  • 名前: レビューテキスト更新 (任意)

  • ソースシート: シート1

  • アクションの実行対象: 選択

  • ターゲットパラメーター: review_text

  • 選択項目をクリアした結果: 現在の値を保持

  • ソースフィールド: review (japanese_restaurant_reviews)

  • 集計: なし

ステップ7: カスタムSQLを作成する

Geminiモデルを呼び出すカスタムSQLを作成します:

  1. 「データソース」タブに移動し、「新しいカスタムSQL」を右のペインにドラッグ・アンド・ドロップします。ドロップ時は、既存のjapanese_restaurant_reviewテーブルとはRelation(関係)の関係になるようにします。

  2. 以下のSQLを入力します:

SELECT
  review,
  JSON_VALUE(ml_generate_text_result.candidates[0].content.parts[0].text) AS response
FROM ML.GENERATE_TEXT(
  MODEL [your-dataset].gemini_1_5_flash,
    (SELECT 
      CONCAT(
        '## 前提\n',
        '- あなたは、レストランの店長です。顧客価値や体験を重視しながらレストランを発展させていく義務を背負っています。\n',
        '## 命令\n',
        '- 顧客からいただいた{コメント}の内容を分析し、{リクエスト}に対して回答してください。\n',     
        '## リクエスト\n',
        <パラメーター.request_text>,
        '\n',
        '## コメント\n',
        <パラメーター.review_text>,
        '\n',
        '## 回答\n'
      ) AS prompt,
      review
      FROM [your-dataset].japanese_restaurant_reviews
      WHERE review = <パラメーター.review_text>
      LIMIT 1),
  STRUCT(
    1000 AS max_output_tokens
  )
)

3.「プレビュー結果」をクリックして、クエリが正常に実行されることを確認します。
4.「OK」をクリックしてカスタムSQLを保存します。
5. Relationのキーはそれぞれのreviewカラムとなっていることを確認します。

ステップ8: Tableauでビジュアライゼーションを作成する

カスタムSQLの結果を使ってビジュアライゼーションを作成します:

  1. 「シート2」を作成します。

  2. 「行」シェルフに「review」フィールドをドラッグします。

  3. マークカードの「テキスト」に「response」フィールドをドラッグします。

  4. 必要に応じて、フォントサイズや色を調整します。

これで、Geminiモデルからのレスポンスがシート上に表示される準備が整いました。

動作確認

1.シート1に戻って、コメントをクリックして選択します。

2.シート2を表示してみると、レビューコメントと並んでGeminiからの返答が表示されています。

3.シート1に戻って、request_text欄の命令を変更してみます。
「お客様のコメントは、ポジティブ、ネガティブ、ニュートラルのどれですか?」

4.シート2を表示してみると、Geminiからの返答が更新されています。

これらのワークシートやデータを使って、各自好きなようにダッシュボードを作成してみてください!

おわりに

今回は、Tableau、BigQuery ML、そしてGeminiモデルを組み合わせて、インタラクティブなAI応答を実現する手法を解説しました。
技術の進化に伴い、データ分析やAIの活用範囲はますます広がっており、これらのツールを使いこなすことで、より高度な分析や意思決定支援が可能となります。
ぜひ、今回の手法を実践し、あなた自身のプロジェクトにも応用してみてください。引き続き、データの世界を探求し、新たな発見を楽しんでください。お読みいただき、ありがとうございました!


カホエンタープライズはホームセンター「グッデイ」におけるDX化の経験をもとに、様々な企業のDX化を支援しております。
Tableauを用いたデータ活用に関する支援はもちろん、実務に直結するデータ活用スキル習得を目指したDX人材の育成支援等、様々なサービスメニューを用意しております。
データ活用・管理に関してお困り等ございましたら、是非お気軽にご相談ください!

カホエンタープライズにできること
①データ活用に関する支援
・Tableauライセンス販売
・Tableauダッシュボード画面構築支援
・データ分析基盤(DWH)構築・運用支援
・Tableau操作トレーニング
・Tableau内製化支援(伴走支援)
②Google Workspace活用支援
・Google Workspaceライセンス販売
・Google Workspace導入・活用支援
・Google Workspace操作トレーニング
③KOX
・データ活用プラットフォーム「KOX」の提供
④DX人材育成支援
・DX人材育成プログラム「Data Academy」の提供

<問い合わせ先>
株式会社カホエンタープライズ
担当者:湯野 礼之輔(ゆの れいのすけ)
Mail:sales@kaho-enterprise.co.jp
TEL:070-8814-5939

この記事が気に入ったらサポートをしてみませんか?