コンテンツに移動
AI & 機械学習

BigQuery を使用して Gemini と Google スプレッドシートを統合する方法

2024年6月18日
Karl Weinmeister

Director, Developer Relations

※この投稿は米国時間 2024 年 6 月 8 日に、Google Cloud blog に投稿されたものの抄訳です。

私は Google スプレッドシートをよく使用します。かなり頻繁に使用している方もいらっしゃるでしょう。私はさまざまな用途に Gemini も活用しているため、Gemini を Google スプレッドシートのワークフローに組み込むのはまさに理にかなっています。

スプレッドシートの要約や数式の作成などの機能を使用すれば、スプレッドシートでの生産性を向上させることができます。Google AI One プレミアム プランでは、Gmail、ドキュメント、スプレッドシートで Gemini を使用できるようになりました。

これらの組み込み機能を利用して、カスタム インテグレーションで何が可能になるかを見ていきましょう。たとえば、Gemini を使用して、一度に複数のデータ行を生成または拡充するにはどうすればよいでしょうか。このブログ投稿では、この処理を行う手順をご紹介します。

以下のデータセットを可視化します。オンライン小売店データセットを使用して、商品説明から新しい列に色を抽出します。この新しい列により、お客様は色フィルタを使用して、探しているものを簡単に見つけられます。

https://storage.googleapis.com/gweb-cloudblog-publish/original_images/image2_7dxSA8c.gif

直接的なアプローチ

では、スプレッドシートから Gemini API を呼び出す方法を見てみましょう。ここで使用する Google Workspace の主要な関数は、urlFetchApp です。この関数は、HTTP リクエストの作成やウェブ コンテンツの取得に使用できます。これを使用して、ヘッダー、タイムアウトの設定、リダイレクトの追跡、認証の処理をカスタマイズできます。

urlFetchApp を使用して、モデルとエンドポイントを渡して、generateContent REST API を呼び出すことができます。

POST https://{service-endpoint}/v1/{model}:generateContent

必要な手順はすべて、こちらの Google スプレッドシートのカスタム関数に記載されています。サービス アカウントを設定して Apps Scripts プロパティを構成すると、2 つの入力、プロンプトに含めるセルの範囲、そしてプロンプトを含むカスタム関数が作成されます。

読み込んでいます...

関数自体が、これらのパラメータをプロンプトに埋め込みます。

読み込んでいます...

この関数によって呼び出されたヘルパー関数が、認証と HTTP リクエストの作成を処理します。

実際の動作を確認されたい方は、Google Cloud Next 2024 セッション Apps Script and Gemini: Build custom AI-powered Google Workspace solutions(Apps Script と Gemini: AI を活用したカスタムの Google Workspace ソリューションを構築する)をご覧ください。このスクリプトの AI Studio バージョンもご覧いただけます。

BigQuery を介したインテグレーション

次に、BigQuery を Apps Script と Gemini 間のブローカーとして使用する方法を見てみましょう。これは、大規模なデータセットや、ユーザーが BigQuery とスプレッドシートをすでに統合している場合に適した強固なアプローチです。

Google Cloud の BigQuery Apps Script サービスは、BigQuery のオブジェクトと関数、およびスプレッドシートで直接クエリを実行する機能を提供します。

このサービスを使用して、BigQuery はデータの列全体で、Vertex AI の Gemini Pro モデルに対して直接リクエストを行うことができます。BigQuery で行う必要があるのは、使用するモデルを指定して、モデルのエンドポイントを作成するだけです。

このプロセスは次のように表すことができます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_spHzff2.max-700x700.png

プロセスの概要

このインテグレーションでは、カスタム関数ではなく、Apps Script 関数にリンクされたメニュー項目を作成します。前述したような関数を作成することもできますが、ここでは別のスタイルを検討します。

まず、生の入力データを見てみましょう。このシナリオでは、製品説明から色を抽出します。

説明(C2):

WHITE HANGING HEART T-LIGHT HOLDER

次に、入力データと連結した、指示を含むプロンプト列を作成します。

ColorPrompt (I2):

"Extract the color(s) from the product description, all in capital letters... If there are multiple, return a valid comma separated list of colors (without the word and). Here is the product description: " & C2

このプロンプトからの回答例を以下に示します。これはプロンプトセルのすぐ右のセルに入力されます。

色(J2):

WHITE

これを行うには、プロンプトセルを選択した状態でメニューから [クエリ] を選択します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image3_pTyDvxh.max-800x800.png

仕組み

メニューは onOpen() トリガーで作成され、各メニュー項目はクラウドベースの JavaScript プラットフォームである Apps Script の関数にリンクされます。

メニュー項目

機能

Query

選択したプロンプトを使用して Gemini でクエリを実行し、回答を右の列に入力します。

Setup

ソリューションを実行するために必要なアーティファクト(データセット、一時テーブル、モデル)を BigQuery で作成します。

Configure > Temperature

トークン選択のランダム性の度合いを制御します。0 は決定論的です。

Configure > Max Output Tokens

回答で生成できるトークンの最大数。トークンは 1 単語より小さく、4 文字程度です。

ソリューションの核となるのは、BigQuery の ML.GENERATE_TEXT 関数です。クラウドベースの JavaScript プラットフォームである Apps Script から、各プロンプトと構成パラメータを使用して SQL クエリを実行できます。

読み込んでいます...

回答は任意の順序で返されるため、それらをマップに保存して、元のプロンプトの順序と一致させることができます。プロンプト自体は一時テーブルに保存されます。スプレッドシートからクエリ文字列にすべての値を直接含めることもできますが、テーブルを使用すると、1 MB の最大クエリ長を超える大規模なデータベースを処理できます。

データセット、テーブル、エンドポイントは、setup() 関数で構成されます。ユーザーが選択したプロジェクト内で、次のように入力します。

読み込んでいます...

実際に試してみる

こちらから Apps Script コードにアクセスできます。新しいスプレッドシート(sheet.new は便利な URL ショートカット)を作成し、[拡張機能] > [Apps Script] でそれを追加します。次に、BigQuery API サービスを Apps Script プロジェクトに追加します。

スプレッドシートを更新すると、メニューが表示されます。

BigQuery API をまだ有効にしていない場合は、有効にする必要があります。また、Vertex AI への BigQuery 接続を作成する必要があります。提供されるコードは、接続 ID genai-connection を使用しています。

コードを始めて実行するときに、Google Cloud プロジェクトにアクセスするために Apps Script を認証するよう求められます。Vertex AI にアクセスするには、サービス アカウントを構成するが必要がある場合もあります。構成されていない場合は、この処理を直接行えるように、ダイアログに URL とサービス アカウントのメールアドレスが表示されます。

次のステップ

スプレッドシートから直接 Gemini でクエリを実行すると、さまざまな種類の新しいタスクが可能になることがわかりました。ここで説明したインテグレーション コードは、独自のワークフローに合わせてカスタマイズできます。

BigQuery での生成 AI の使用について詳しくは、Bookshelf Analytics の Codelab をご覧ください。Apps Script についてさらに詳しく知りたい方は、まずは 「Apps Script の基礎」再生リストをご覧ください。

Gemini モデルとスプレッドシートを統合することで、より多くのユーザーが AI のインサイトを取得して、カスタムタスクにかかる時間と労力を削減できるようになります。

ー Cloud プロダクト DevRel 担当責任者 Karl Weinmeister

投稿先