AI.GENERATE 関数を使用してテキストを生成する
このチュートリアルでは、AI.GENERATE 関数を使用して、テキストまたはマルチモーダル データからテキストを生成する方法について説明します。AI.GENERATE 関数を使用すると、ホストされている Gemini モデルに Cloud リソース接続を使用して接続できるため、独自のモデルを作成して維持する必要がなくなります。
このチュートリアルでは、次のタスクを行う方法を説明します。
- テキスト コンテンツを要約して関数のデフォルトの形式で結果を出力する。
- テキスト コンテンツを要約して構造化された結果を出力する。
- 動画コンテンツの文字起こしと翻訳を行う。
- 音声ファイルの内容を分析する。
費用
このドキュメントでは、課金対象である次のコンポーネントを使用します。 Cloud de Confiance by S3NS
- BigQuery ML: You incur costs for the data that you process in BigQuery.
- Gemini Enterprise Agent Platform: You incur costs for calls to the Agent Platform model.
BigQuery の料金の詳細については、BigQuery ドキュメントの
BigQuery の料金をご覧ください。 Agent Platform の生成 AI の料金の詳細については、
Agent Platform の料金
のページをご覧ください。 In the Cloud de Confiance console, on the project selector page,
select or create a Cloud de Confiance project. Roles required to select or create a project
Verify that billing is enabled for your Cloud de Confiance project.
BigQuery API を有効にします。
API を有効にするために必要なロール
API を有効にするには、 これらの事前定義ロールには、このドキュメントのタスクを実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。 カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。 ML モデルを保存する BigQuery データセットを作成します。 Cloud de Confiance コンソールで、[BigQuery] ページに移動します。 [エクスプローラ] ペインで、プロジェクト名をクリックします。 「アクションを表示」> [データセットを作成] をクリックします。 [データセットを作成する] ページで、次の操作を行います。 [データセット ID] に [**ロケーション タイプ**] で [**マルチリージョン**] を選択してから、
[**US**] を選択します。 残りのデフォルトの設定は変更せず、[データセットを作成] をクリックします。 新しいデータセットを作成するには、
データ ロケーションが データセットが作成されたことを確認します。 定義済みのデータセット リソースを使用して Cloud リソース接続を作成し、接続のサービス アカウントを取得します。前の手順で作成したデータセットと同じロケーションに接続を作成します。 接続を作成する手順は次のとおりです。 [BigQuery] ページに移動します。 [エクスプローラ] ペインで、[ データを追加] をクリックします。 [データを追加] ダイアログが開きます。 [フィルタ条件] ペインの [データソースのタイプ] セクションで、[ビジネス アプリケーション] を選択します。 または、[データソースを検索] フィールドに「 [特徴量データソース] セクションで、[Vertex AI] をクリックします。 [Vertex AI モデル: BigQuery フェデレーション] ソリューション カードをクリックします。 [接続タイプ] リストで、[Vertex AI リモートモデル、リモート関数、BigLake、Spanner(Cloud リソース)] を選択します。 [接続 ID] フィールドに「 [接続を作成] をクリックします。 [接続に移動] をクリックします。 [接続情報] ペインで、次の手順で使用するためにサービス アカウント ID をコピーします。 接続のサービス アカウントに Vertex AI ユーザーロールを付与します。 ロールを付与する手順は次のとおりです。 [IAM と管理] ページに移動します。 [追加] をクリックします。 [プリンシパルを追加] ダイアログが開きます。 [新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。 [ロールを選択] フィールドで、[Vertex AI] を選択し、[Vertex AI ユーザー] を選択します。 [別のロールを追加] をクリックします。 [ロールを選択] フィールドで、[Cloud Storage] を選択し、続いて [Storage オブジェクト閲覧者] を選択します。 [保存] をクリックします。 Cloud de Confiance コンソールで、[BigQuery] ページに移動します。 クエリエディタで、次のクエリを実行します。 出力は次のようになります。 Cloud de Confiance コンソールで、[BigQuery] ページに移動します。 クエリエディタで、次のクエリを実行します。 出力は次のようになります。 公開動画コンテンツのオブジェクト テーブルを作成し、動画の文字起こしと翻訳を行うには、次の手順に沿って操作します。 Cloud de Confiance コンソールで、[BigQuery] ページに移動します。 クエリエディタで、次のクエリを実行してオブジェクト テーブルを作成します。 クエリエディタで、次のクエリを実行して 出力は次のようになります。 公開音声コンテンツのオブジェクト テーブルを作成し、音声ファイルの内容を分析するには、次の手順に沿って操作します。 Cloud de Confiance コンソールで、[BigQuery] ページに移動します。 クエリエディタで、次のクエリを実行してオブジェクト テーブルを作成します。 クエリエディタで、次のクエリを実行して音声ファイルを分析します。 結果は次のようになります。始める前に
roles/resourcemanager.projectCreator), which contains the
resourcemanager.projects.create permission. Learn how to grant
roles.
serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。詳しくは、ロールを付与する方法をご覧ください。必要なロール
AI.GENERATE 関数を使用するには、次の Identity and Access Management(IAM)ロールが必要です。
roles/bigquery.dataEditor)。roles/bigquery.connectionsAdmin)。roles/resourcemanager.projectIamAdmin)。roles/bigquery.jobUser)。必要な権限
bigquery.datasets.createbigquery.connections.*resourcemanager.projects.getIamPolicy と resourcemanager.projects.setIamPolicy
bigquery.tables.getDataデータセットを作成する
コンソール
bqml_tutorial と入力します。bq
bq mk --dataset コマンドを使用します。
US に設定された bqml_tutorial という名前のデータセットを作成します。bq mk --dataset \
--location=US \
--description "BigQuery ML tutorial dataset." \
bqml_tutorial
bq ls API
datasets.insert メソッドを呼び出します。{
"datasetReference": {
"datasetId": "bqml_tutorial"
}
}
接続を作成する
Vertex AI」と入力します。test_connection」と入力します。サービス アカウントにアクセス権を付与する
テキストを要約してデフォルトの形式で出力する
AI.GENERATE 関数を使用してテキストを生成し、AI.GENERATE 関数のデフォルトの形式で結果を出力するには、次の手順に沿って操作します。
WITH
bbc_news AS (
SELECT body FROM `bigquery-public-data.bbc_news.fulltext` LIMIT 5
)
SELECT AI.GENERATE(body) AS news FROM bbc_news;
+---------------------------------------------+------------------------------------+---------------+
| news.result | news.full_response | news.status |
+---------------------------------------------+------------------------------------+---------------+
| This article presents a debate about the | {"candidates":[{"avg_logprobs": | |
| "digital divide" between rich and poor | -0.31465074559841777, content": | |
| nations. Here's a breakdown of the key.. | {"parts":[{"text":"This article.. | |
+---------------------------------------------+------------------------------------+---------------+
| This article discusses how advanced | {"candidates":[{"avg_logprobs": | |
| mapping technology is aiding humanitarian | -0.21313422900091983,"content": | |
| efforts in Darfur, Sudan. Here's a... | {"parts":[{"text":"This article.. | |
+---------------------------------------------+------------------------------------+---------------+
| ... | ... | ... |
+---------------------------------------------+------------------------------------+---------------+
テキストを要約して構造化された結果を出力する
AI.GENERATE 関数を使用してテキストを生成し、AI.GENERATE 関数の output_schema 引数を使用して出力の形式を指定するには、次の手順に沿って操作します。
WITH
bbc_news AS (
SELECT
body
FROM
`bigquery-public-data`.bbc_news.fulltext
LIMIT 5
)
SELECT
news.good_sentiment,
news.summary
FROM
bbc_news,
UNNEST(ARRAY[AI.GENERATE(body, output_schema => 'summary STRING, good_sentiment BOOL')]) AS news;
+----------------+--------------------------------------------+
| good_sentiment | summary |
+----------------+--------------------------------------------+
| true | A World Bank report suggests the digital |
| | divide is rapidly closing due to increased |
| | access to technology in developing.. |
+----------------+--------------------------------------------+
| true | A review of sports games, focusing on the |
| | rivalry between EA Sports and ESPN, and |
| | the recent deal where EA acquired the.. |
+----------------+--------------------------------------------+
| ... | ... |
+----------------+--------------------------------------------+
動画コンテンツの文字起こしと翻訳を行う
CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.video`
WITH CONNECTION `us.test_connection`
OPTIONS (
object_metadata = 'SIMPLE',
uris =
['gs://cloud-samples-data/generative-ai/video/*']);
pixel8.mp4 ファイルの文字起こしと翻訳を行います。SELECT
AI.GENERATE(
(OBJ.GET_ACCESS_URL(ref, 'r'), 'Transcribe the video in Japanese and then translate to English.'),
endpoint => 'gemini-2.5-flash',
output_schema => 'japanese_transcript STRING, english_translation STRING'
).* EXCEPT (full_response, status)
FROM
`bqml_tutorial.video`
WHERE
REGEXP_CONTAINS(uri, 'pixel8.mp4');
+--------------------------------------------+--------------------------------+
| english_translation | japanese_transcript |
+--------------------------------------------+--------------------------------+
| My name is Saeka Shimada. I'm a | 島田 さえか です 。 東京 で フ |
| photographer in Tokyo. Tokyo has many | ォトグラファー を し て い ま |
| faces. The city at night is totally... | す 。 東京 に は いろんな 顔 が |
+--------------------------------------------+--------------------------------+
音声ファイルの内容を分析する
CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.audio`
WITH CONNECTION `us.test_connection`
OPTIONS (
object_metadata = 'SIMPLE',
uris =
['gs://cloud-samples-data/generative-ai/audio/*']);
SELECT
AI.GENERATE(
(OBJ.GET_ACCESS_URL(ref, 'r'), 'Summarize the content of this audio file.'),
endpoint => 'gemini-2.5-flash',
output_schema => 'topic ARRAY<STRING>, summary STRING'
).* EXCEPT (full_response, status), uri
FROM
`bqml_tutorial.audio`;
+--------------------------------------------+-----------------------------------------------------------+
| summary | topic | uri |
+--------------------------------------------+-----------------------------------------------------------+
| The audio contains a distinctive 'beep' | beep sound | gs://cloud-samples-data/generativ... |
| sound, followed by the characteristic | | |
| sound of a large vehicle or bus backing.. | | |
+--------------------------------------------+--------------------+--------------------------------------+
| | vehicle backing up | |
| +--------------------+ |
| | bus | |
| +--------------------+ |
| | alarm | |
+--------------------------------------------+--------------------+--------------------------------------+
| The speaker introduces themselves | Introduction | gs://cloud-samples-data/generativ... |
| as Gemini and expresses their excitement | | |
| and readiness to dive into something.. | | |
+--------------------------------------------+--------------------+--------------------------------------+
| | Readiness | |
| +--------------------+ |
| | Excitement | |
| +--------------------+ |
| | Collaboration | |
+--------------------------------------------+--------------------+--------------------------------------+
| ... | ... | ... |
+--------------------------------------------+--------------------+--------------------------------------+
クリーンアップ