ML.GENERATE_TEXT 関数を使用してテキストを生成する
このドキュメントでは、Vertex AI モデルを表す BigQuery ML リモートモデルを作成し、そのリモートモデルを ML.GENERATE_TEXT
関数と組み合わせてテキストを生成する方法について説明します。
対応しているリモートモデルのタイプは次のとおりです。
- 一般提供またはプレビューの Gemini モデルのいずれかに対するリモートモデル。
- Anthropic Claude モデルを介したリモートモデル。
- Llama モデルを介したリモートモデル
- Mistral AI モデルを介したリモートモデル
- サポートされているオープンモデルを介したリモートモデル。
選択した Vertex AI モデルに応じて、オブジェクト テーブルからの非構造化データ入力または標準テーブルからのテキスト入力に基づき、テキストを生成できます。
必要なロール
リモートモデルを作成してテキストを生成するには、次の Identity and Access Management(IAM)ロールが必要です。
- BigQuery データセット、テーブル、モデルの作成と使用: プロジェクトに対する BigQuery データ編集者(
roles/bigquery.dataEditor
)。 BigQuery 接続の作成、委任、使用: プロジェクトに対する BigQuery 接続管理者(
roles/bigquery.connectionsAdmin
)。デフォルト接続が構成されていない場合は、
CREATE MODEL
ステートメントの実行時に作成して設定できます。これを行うには、プロジェクトに対する BigQuery 管理者(roles/bigquery.admin
)が必要です。詳細については、デフォルト接続を構成するをご覧ください。接続のサービス アカウントに権限を付与する: Vertex AI エンドポイントを含むプロジェクトに対するプロジェクト IAM 管理者(
roles/resourcemanager.projectIamAdmin
)。これは、モデル名をエンドポイントとして指定して作成するリモートモデルの現在のプロジェクトです。これは、エンドポイントとして URL を指定して作成したリモートモデルの URL で識別されるプロジェクトです。リモートモデルを使用してオブジェクト テーブルの非構造化データを分析し、オブジェクト テーブルで使用する Cloud Storage バケットが Vertex AI エンドポイントとは異なるプロジェクトにある場合は、オブジェクト テーブルで使用される Cloud Storage バケットに対するストレージ管理者(
roles/storage.admin
)も必要です。BigQuery ジョブを作成する: プロジェクトに対する BigQuery ジョブユーザー(
roles/bigquery.jobUser
)。
これらの事前定義ロールには、このドキュメントのタスクを実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
- データセットを作成する:
bigquery.datasets.create
- 接続を作成、委任、使用する:
bigquery.connections.*
- サービス アカウントの権限を設定する:
resourcemanager.projects.getIamPolicy
とresourcemanager.projects.setIamPolicy
- モデルを作成して推論を実行する。
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
始める前に
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
データセットを作成する
リソースを格納する BigQuery データセットを作成します。
コンソール
Google Cloud コンソールで、[BigQuery] ページに移動します。
左側のペインで、
[エクスプローラ] をクリックします。左側のペインが表示されていない場合は、
左側のペインを開くをクリックしてペインを開きます。[エクスプローラ] ペインで、プロジェクト名をクリックします。
[アクションを表示] > [データセットを作成] をクリックします。
[データセットを作成する] ページで、次の操作を行います。
[データセット ID] に、データセットの名前を入力します。
[ロケーション タイプ] で、[リージョン] または [マルチリージョン] を選択します。
- [リージョン] を選択した場合は、[リージョン] リストからロケーションを選択します。
- [マルチリージョン] を選択した場合は、[マルチリージョン] リストから [US] または [ヨーロッパ] を選択します。
[データセットを作成] をクリックします。
bq
接続を作成する
デフォルトの接続が構成されているか、BigQuery 管理者ロールが付与されている場合は、この手順をスキップできます。
リモートモデルが使用する Cloud リソース接続を作成し、接続のサービス アカウントを取得します。前の手順で作成したデータセットと同じロケーションに接続を作成します。
次のオプションのいずれかを選択します。
コンソール
[BigQuery] ページに移動します。
[エクスプローラ] ペインで、[
データを追加] をクリックします。[データを追加] ダイアログが開きます。
[フィルタ条件] ペインの [データソースのタイプ] セクションで、[ビジネス アプリケーション] を選択します。
または、[データソースを検索] フィールドに「
Vertex AI
」と入力します。[特徴量データソース] セクションで、[Vertex AI] をクリックします。
[Vertex AI モデル: BigQuery フェデレーション] ソリューション カードをクリックします。
[接続タイプ] リストで、[Vertex AI リモートモデル、リモート関数、BigLake、Spanner(Cloud リソース)] を選択します。
[接続 ID] フィールドに接続の名前を入力します。
[接続を作成] をクリックします。
[接続へ移動] をクリックします。
[接続情報] ペインで、次の手順で使用するサービス アカウント ID をコピーします。
bq
コマンドライン環境で接続を作成します。
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
--project_id
パラメータは、デフォルト プロジェクトをオーバーライドします。次のように置き換えます。
REGION
: 接続のリージョンPROJECT_ID
: 実際の Google Cloud プロジェクト IDCONNECTION_ID
: 接続の ID
接続リソースを作成すると、BigQuery は、一意のシステム サービス アカウントを作成し、それを接続に関連付けます。
トラブルシューティング: 次の接続エラーが発生した場合は、Google Cloud SDK を更新します。
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
後の手順で使用するため、サービス アカウント ID を取得してコピーします。
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
出力は次のようになります。
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
google_bigquery_connection
リソースを使用します。
BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、クライアント ライブラリの認証を設定するをご覧ください。
次の例では、US
リージョンに my_cloud_resource_connection
という名前の Cloud リソース接続を作成します。
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は
.tf
にする必要があります(例:main.tf
)。このチュートリアルでは、このファイルをmain.tf
とします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tf
にサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行います。
terraform init
最新バージョンの Google プロバイダを使用する場合は、
-upgrade
オプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行します。プロンプトで「
yes
」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」というメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。 Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
リモートモデル接続のサービス アカウントにロールを付与する
リモートモデルが使用する接続のサービス アカウントに Vertex AI ユーザー ロールを付与する必要があります。
リモートモデルのエンドポイントを URL(endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/gemini-2.0-flash'
など)として指定する場合は、URL に指定する同じプロジェクト内でこのロールを付与してください。
モデル名(endpoint = 'gemini-2.0-flash'
など)を使用してリモートモデルのエンドポイントを指定する場合は、リモートモデルを作成するプロジェクト内でこのロールを付与してください。
別のプロジェクトでロールを付与すると、「bqcx-1234567890-wxyz@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource
」というエラーが発生します。
Vertex AI ユーザーロールを付与する手順は次のとおりです。
コンソール
[IAM と管理] ページに移動します。
[
追加] をクリックします。[プリンシパルを追加] ダイアログが開きます。
[新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。
[ロールを選択] フィールドで、[Vertex AI] を選択し、[Vertex AI ユーザー] を選択します。
[保存] をクリックします。
gcloud
gcloud projects add-iam-policy-binding
コマンドを使用します。
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None
次のように置き換えます。
PROJECT_NUMBER
: プロジェクトの番号MEMBER
: 先ほどコピーしたサービス アカウント ID
オブジェクト テーブル接続のサービス アカウントにロールを付与する
リモートモデルを使用してオブジェクト テーブルデータからテキストを生成する場合は、リモートモデルを作成するプロジェクト内で、オブジェクト テーブル接続のサービス アカウントに Vertex AI ユーザーロールを付与します。それ以外の場合は、この手順を省略できます。
オブジェクト テーブル接続のサービス アカウントを確認する手順は次のとおりです。
[BigQuery] ページに移動します。
左側のペインで、
[エクスプローラ] をクリックします。左側のペインが表示されていない場合は、
左側のペインを開くをクリックしてペインを開きます。[エクスプローラ] ペインで [データセット] をクリックし、オブジェクト テーブルを含むデータセットを選択します。
[概要 > テーブル] をクリックし、オブジェクト テーブルを選択します。
エディタペインで、[詳細] タブをクリックします。
[接続 ID] フィールドの接続名をメモします。
[エクスプローラ] ペインで、[接続] をクリックします。
オブジェクト テーブルの [接続 ID] フィールドの接続と一致する接続を選択します。
[サービス アカウント ID] フィールドの値をコピーします。
ロールを付与する手順は次のとおりです。
コンソール
[IAM と管理] ページに移動します。
[
追加] をクリックします。[プリンシパルを追加] ダイアログが開きます。
[新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。
[ロールを選択] フィールドで、[Vertex AI] を選択し、[Vertex AI ユーザー] を選択します。
[保存] をクリックします。
gcloud
gcloud projects add-iam-policy-binding
コマンドを使用します。
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None
次のように置き換えます。
PROJECT_NUMBER
: プロジェクトの番号MEMBER
: 先ほどコピーしたサービス アカウント ID
パートナー モデルを有効にする
このステップは、Anthropic Claude、Llama、Mistral AI モデルを使用する場合にのみ必要です。
Google Cloud コンソールで、Vertex AI の [Model Garden] ページに移動します。
使用するパートナー モデルを検索またはブラウジングします。
モデルカードをクリックします。
モデルページで [有効にする] をクリックします。
必要な有効化情報を記入し、[次へ] をクリックします。
[利用規約] セクションで、チェックボックスをオンにします。
[同意する] をクリックして利用規約に同意し、モデルを有効にします。
オープンモデルのデプロイ方法を選択する
サポートされているオープンモデルでリモートモデルを作成する場合は、CREATE MODEL
ステートメントで Vertex AI Model Garden または Hugging Face モデル ID を指定することで、リモートモデルの作成と同時にオープンモデルを自動的にデプロイできます。または、最初にオープンモデルを手動でデプロイし、CREATE MODEL
ステートメントでモデル エンドポイントを指定して、そのオープンモデルをリモートモデルで使用することもできます。詳細については、オープンモデルをデプロイするをご覧ください。
BigQuery ML リモートモデルを作成する
リモートモデルを作成します。
新しいオープンモデル
Google Cloud コンソールで、[BigQuery] ページに移動します。
SQL エディタを使用してリモートモデルを作成します。
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( {HUGGING_FACE_MODEL_ID = 'HUGGING_FACE_MODEL_ID' | MODEL_GARDEN_MODEL_NAME = 'MODEL_GARDEN_MODEL_NAME'} [, HUGGING_FACE_TOKEN = 'HUGGING_FACE_TOKEN' ] [, MACHINE_TYPE = 'MACHINE_TYPE' ] [, MIN_REPLICA_COUNT = MIN_REPLICA_COUNT ] [, MAX_REPLICA_COUNT = MAX_REPLICA_COUNT ] [, RESERVATION_AFFINITY_TYPE = {'NO_RESERVATION' | 'ANY_RESERVATION' | 'SPECIFIC_RESERVATION'} ] [, RESERVATION_AFFINITY_KEY = 'compute.googleapis.com/reservation-name' ] [, RESERVATION_AFFINITY_VALUES = RESERVATION_AFFINITY_VALUES ] [, ENDPOINT_IDLE_TTL = ENDPOINT_IDLE_TTL ] );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを保存するデータセットの ID。このデータセットは、使用している接続と同じロケーションに存在する必要があります。MODEL_NAME
: モデルの名前。REGION
: 接続で使用されるリージョン。CONNECTION_ID
: BigQuery 接続の ID。この値は、 Google Cloud コンソールで接続の詳細を表示し、[接続 ID] に表示される完全修飾された接続 ID の最後のセクションの値をコピーすることで取得できます。例:
projects/myproject/locations/connection_location/connections/myconnection
。HUGGING_FACE_MODEL_ID
: サポートされている Hugging Face モデルのモデル ID をprovider_name
/model_name
形式で指定するSTRING
値。例:deepseek-ai/DeepSeek-R1
。モデル ID を取得するには、Hugging Face Model Hub でモデル名をクリックし、モデルカードの上部からモデル ID をコピーします。MODEL_GARDEN_MODEL_NAME
:STRING
値。サポートされている Vertex AI Model Garden モデルのモデル ID とモデル バージョンをpublishers/publisher
/models/model_name
@model_version
形式で指定します。例:publishers/openai/models/gpt-oss@gpt-oss-120b
。モデル ID を取得するには、Vertex AI Model Garden でモデルカードをクリックし、[モデル ID] フィールドからモデル ID をコピーします。デフォルトのモデル バージョンを取得するには、モデルカードの [バージョン] フィールドからコピーします。使用できる他のモデル バージョンを確認するには、[モデルをデプロイ] をクリックし、[リソース ID] フィールドをクリックします。HUGGING_FACE_TOKEN
: 使用する Hugging Face ユーザー アクセス トークンを指定するSTRING
値。このオプションの値を指定できるのは、HUGGING_FACE_MODEL_ID
オプションの値も指定した場合のみです。トークンには少なくとも
read
ロールが必要です。より広範なスコープを持つトークンも使用できます。このオプションは、HUGGING_FACE_MODEL_ID
値で識別されるモデルが Hugging Face のゲート付きモデルまたは非公開モデルの場合に必要です。一部のゲート付きモデルでは、アクセス権が付与される前に、利用規約への明示的な同意が必要です。これらの条件に同意する手順は次のとおりです。
- Hugging Face ウェブサイトでモデルのページに移動します。
- モデルの利用規約を確認します。サービス契約へのリンクは通常、モデルカードにあります。
- ページに表示される指示に沿って利用規約に同意します。
MACHINE_TYPE
: モデルを Vertex AI にデプロイするときに使用するマシンタイプを指定するSTRING
値。サポートされているマシンタイプについては、マシンタイプをご覧ください。MACHINE_TYPE
オプションの値を指定しない場合、モデルの Vertex AI Model Garden のデフォルトのマシンタイプが使用されます。MIN_REPLICA_COUNT
: Vertex AI エンドポイントにモデルをデプロイするときに使用されるマシンレプリカの最小数を指定するINT64
値。このサービスは、エンドポイントの推論負荷に応じてレプリカ数を増減します。使用されるレプリカの数は、MIN_REPLICA_COUNT
の値より小さくなることも、MAX_REPLICA_COUNT
の値より大きくなることもありません。MIN_REPLICA_COUNT
値は[1, 4096]
の範囲内である必要があります。デフォルト値は1
です。MAX_REPLICA_COUNT
: Vertex AI エンドポイントにモデルをデプロイするときに使用されるマシンレプリカの最大数を指定するINT64
値。このサービスは、エンドポイントの推論負荷に応じてレプリカ数を増減します。使用されるレプリカの数は、MIN_REPLICA_COUNT
の値より小さくなることも、MAX_REPLICA_COUNT
の値より大きくなることもありません。MAX_REPLICA_COUNT
値は[1, 4096]
の範囲内である必要があります。デフォルト値はMIN_REPLICA_COUNT
値です。RESERVATION_AFFINITY_TYPE
: デプロイされたモデルが Compute Engine の予約を使用して、予測の提供時に仮想マシン(VM)の可用性を保証するかどうかを決定します。また、モデルが使用可能なすべての予約の VM を使用するか、特定の予約の VM のみを使用するかを指定します。詳細については、Compute Engine の予約アフィニティをご覧ください。Vertex AI と共有されている Compute Engine 予約のみを使用できます。詳細については、予約の使用を許可するをご覧ください。
サポートされている値は次のとおりです。
NO_RESERVATION
: モデルが Vertex AI エンドポイントにデプロイされている場合、予約は消費されません。NO_RESERVATION
を指定すると、予約アフィニティを指定しない場合と同じ効果があります。ANY_RESERVATION
: Vertex AI モデルのデプロイでは、現在のプロジェクト内にあるか、プロジェクトと共有されている、自動使用用に構成されている Compute Engine 予約から仮想マシン(VM)が使用されます。次の条件を満たす VM のみが使用されます。MACHINE_TYPE
値で指定されたマシンタイプを使用します。- リモートモデルを作成する BigQuery データセットが単一リージョンにある場合は、予約も同じリージョンに存在する必要があります。データセットが
US
マルチリージョンにある場合、予約はus-central1
リージョンに存在する必要があります。データセットがEU
マルチリージョンにある場合、予約はeurope-west4
リージョンに存在する必要があります。
使用可能な予約に十分な容量がない場合、または適切な予約が見つからない場合、システムはリソース要件を満たすオンデマンドの Compute Engine VM をプロビジョニングします。
SPECIFIC_RESERVATION
: Vertex AI モデルのデプロイでは、RESERVATION_AFFINITY_VALUES
値で指定した予約の VM のみが使用されます。この予約は、特定の使用量を対象とするように構成する必要があります。指定された予約に十分な容量がない場合、デプロイは失敗します。
RESERVATION_AFFINITY_KEY
: 文字列compute.googleapis.com/reservation-name
。RESERVATION_AFFINITY_TYPE
値がSPECIFIC_RESERVATION
の場合は、このオプションを指定する必要があります。RESERVATION_AFFINITY_VALUES
: Compute Engine 予約の完全なリソース名を指定するARRAY<STRING>
値。形式は
projects/myproject/zones/reservation_zone/reservations/reservation_name
です。例:
RESERVATION_AFFINITY_values = ['projects/myProject/zones/us-central1-a/reservations/myReservationName']
予約名とゾーンは、 Google Cloud コンソールの [予約] ページで取得できます。詳細については、予約を表示するをご覧ください。
RESERVATION_AFFINITY_TYPE
値がSPECIFIC_RESERVATION
の場合は、このオプションを指定する必要があります。ENDPOINT_IDLE_TTL
: オープンモデルが Vertex AI エンドポイントから自動的にデプロイ解除されるまでの非アクティブ期間を指定するINTERVAL
値。自動デプロイ解除を有効にするには、390 分(6.5 時間)から 7 日の間で間隔リテラルの値を指定します。たとえば、8 時間アイドル状態になった後にモデルをデプロイ解除するには、
INTERVAL 8 HOUR
を指定します。デフォルト値は 390 分(6.5 時間)です。モデルの非アクティブ状態とは、モデルに対して次のいずれかのオペレーションが実行されてから経過した時間です。
CREATE MODEL
ステートメントを実行します。DEPLOY_MODEL
引数をTRUE
に設定してALTER MODEL
ステートメントを実行します。- モデル エンドポイントに推論リクエストを送信する。たとえば、
ML.GENERATE_EMBEDDING
関数またはML.GENERATE_TEXT
関数を実行します。
これらのオペレーションを行うと、非アクティブ タイマーがゼロにリセットされます。リセットは、オペレーションを実行する BigQuery ジョブの開始時にトリガーされます。
モデルがデプロイ解除されると、モデルに送信された推論リクエストはエラーを返します。BigQuery モデル オブジェクトは、モデル メタデータを含め、変更されません。推論にモデルを再度使用するには、モデルで
ALTER MODEL
ステートメントを実行し、DEPLOY_MODEL
オプションをTRUE
に設定して、モデルを再デプロイする必要があります。
デプロイされたオープンモデル
Google Cloud コンソールで、[BigQuery] ページに移動します。
SQL エディタを使用してリモートモデルを作成します。
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( ENDPOINT = 'https://ENDPOINT_REGION-aiplatform.googleapis.com/v1/projects/ENDPOINT_PROJECT_ID/locations/ENDPOINT_REGION/endpoints/ENDPOINT_ID' );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを保存するデータセットの ID。このデータセットは、使用している接続と同じロケーションに存在する必要があります。MODEL_NAME
: モデルの名前。REGION
: 接続で使用されるリージョン。CONNECTION_ID
: BigQuery 接続の ID。この値は、 Google Cloud コンソールで接続の詳細を表示し、[接続 ID] に表示される完全修飾された接続 ID の最後のセクションの値をコピーすることで取得できます。例:
projects/myproject/locations/connection_location/connections/myconnection
。ENDPOINT_REGION
: オープンモデルがデプロイされているリージョン。ENDPOINT_PROJECT_ID
: オープンモデルがデプロイされているプロジェクト。ENDPOINT_ID
: オープンモデルで使用される HTTPS エンドポイントの ID。エンドポイント ID は、[オンライン予測] ページでオープンモデルを探して、その [ID] フィールドの値をコピーすることで取得できます。
その他のすべてのモデル
Google Cloud コンソールで、[BigQuery] ページに移動します。
SQL エディタを使用してリモートモデルを作成します。
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS (ENDPOINT = 'ENDPOINT');
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを保存するデータセットの ID。このデータセットは、使用している接続と同じロケーションに存在する必要があります。MODEL_NAME
: モデルの名前。REGION
: 接続で使用されるリージョン。CONNECTION_ID
: BigQuery 接続の ID。この値は、 Google Cloud コンソールで接続の詳細を表示し、[接続 ID] に表示される完全修飾された接続 ID の最後のセクションの値をコピーすることで取得できます。例:
projects/myproject/locations/connection_location/connections/myconnection
。ENDPOINT
: 使用する Vertex AI モデルのエンドポイント。事前トレーニング済みの Vertex AI モデル、Claude モデル、Mistral AI モデルの場合は、モデルの名前を指定します。これらのモデルの一部では、モデルの特定のバージョンを名前の一部として指定できます。サポートされている Gemini モデルでは、グローバル エンドポイントを指定して可用性を向上させることができます。
Llama モデルの場合は、
openapi/<publisher_name>/<model_name>
形式の OpenAI API エンドポイントを指定します。例:openapi/meta/llama-3.1-405b-instruct-maas
対応しているモデルの名前とバージョンについては、
ENDPOINT
をご覧ください。指定する Vertex AI モデルは、リモートモデルを作成するロケーションで使用できる必要があります。詳細については、ロケーションをご覧ください。
標準テーブルのデータからテキストを生成する
標準テーブルからのプロンプト データを使って、ML.GENERATE_TEXT
関数でテキストを生成します。
Gemini
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences, GROUND_WITH_GOOGLE_SEARCH AS ground_with_google_search, SAFETY_SETTINGS AS safety_settings, REQUEST_TYPE AS request_type) );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。TABLE_NAME
: プロンプトを含むテーブルの名前。このテーブルには、prompt
という名前の列が必要です。または、エイリアスを使用して別の名前の列を使用することもできます。PROMPT_QUERY
: プロンプト データを提供するクエリ。このクエリは、prompt
という名前の列を生成する必要があります。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,8192]
の範囲内である必要があります。 レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムな回答を減らしたい場合は小さい値を、ランダムな回答を増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。GROUND_WITH_GOOGLE_SEARCH
: Vertex AI モデルがレスポンスを生成するときに [Google 検索によるグラウンディング](/vertex-ai/generative-ai/docs/grounding/overview#ground-public) を使用するかどうかを決定するBOOL
値。グラウンディングを使用すると、モデルは回答の生成時にインターネットから追加情報を使用できるため、モデルの回答をより具体的で事実に基づくものにできます。flatten_json_output
とこのフィールドの両方がTrue
に設定されている場合、結果に追加のml_generate_text_grounding_result
列が含まれ、モデルが追加情報の収集に使用したソースが示されます。デフォルトはFALSE
です。SAFETY_SETTINGS
: レスポンスのフィルタリングに使用するコンテンツ セーフティのしきい値を構成するARRAY<STRUCT<STRING AS category, STRING AS threshold>>
値。構造体の最初の要素は有害性カテゴリを指定し、構造体の 2 番目の要素は対応するブロックのしきい値を指定します。モデルは、これらの設定に違反するコンテンツを除外します。各カテゴリを指定できるのは 1 回のみです。たとえば、STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
とSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
の両方を指定することはできません。特定のカテゴリに安全性設定がない場合は、BLOCK_MEDIUM_AND_ABOVE
安全性設定が使用されます。 サポートされているカテゴリは次のとおりです。HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
BLOCK_NONE
(制限付き)BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
(デフォルト)BLOCK_ONLY_HIGH
HARM_BLOCK_THRESHOLD_UNSPECIFIED
REQUEST_TYPE
: Gemini モデルに送信する推論リクエストのタイプを指定するSTRING
値。リクエストの種類によって、リクエストで使用する割り当てが決まります。有効な値は以下のとおりです。DEDICATED
:ML.GENERATE_TEXT
関数はプロビジョンド スループットの割り当てのみを使用します。プロビジョンド スループットの割り当てが使用できない場合、ML.GENERATE_TEXT
関数はエラーProvisioned throughput is not purchased or is not active
を返します。SHARED
: プロビジョンド スループットの割り当てを購入している場合でも、ML.GENERATE_TEXT
関数では動的共有割り当て(DSQ)のみが使用されます。UNSPECIFIED
:ML.GENERATE_TEXT
関数は、次のように割り当てを使用します。- プロビジョンド スループットの割り当てを購入していない場合、
ML.GENERATE_TEXT
関数は DSQ 割り当てを使用します。 - プロビジョンド スループットの割り当てを購入している場合、
ML.GENERATE_TEXT
関数は最初にプロビジョンド スループットの割り当てを使用します。リクエストがプロビジョンド スループットの割り当てを超えると、オーバーフロー トラフィックは DSQ 割り当てを使用します。
- プロビジョンド スループットの割り当てを購入していない場合、
デフォルトは
UNSPECIFIED
です。詳細については、Vertex AI プロビジョニング スループットを使用するをご覧ください。
例 1
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- モデルからの JSON レスポンスを解析し、個別の列に分割します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
例 2
次の例は、これらの特性を持つリクエストを示しています。
- クエリを使用して、プロンプトの接頭辞とテーブル列を連結する文字列を連結して、プロンプト データを作成します。
- 短いレスポンスを返します。
- モデルからの JSON レスポンスを解析して個別の列に分割したりはしません。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
例 3
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - モデルからの JSON レスポンスを解析し、個別の列に分割します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
例 4
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - 短いレスポンスを返します。
- JSON レスポンスを個別の列にフラット化します。
- レスポンスのグラウンディング用に一般公開のウェブデータを取得して返します。
- 2 つの安全性設定を使用して、安全でないレスポンスを除外します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT( 100 AS max_output_tokens, 0.5 AS top_p, TRUE AS flatten_json_output, TRUE AS ground_with_google_search, [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category, 'BLOCK_LOW_AND_ABOVE' AS threshold), STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));
例 5
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - より長いレスポンスを返します。
- JSON レスポンスを個別の列にフラット化します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.flash_2_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 8192 AS max_output_tokens, TRUE AS flatten_json_output));
例 6
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- JSON レスポンスを個別の列にフラット化します。
- レスポンスのグラウンディング用に一般公開のウェブデータを取得して返します。
- 2 つの安全性設定を使用して、安全でないレスポンスを除外します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .1 AS TEMPERATURE, TRUE AS flatten_json_output, TRUE AS ground_with_google_search, [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category, 'BLOCK_LOW_AND_ABOVE' AS threshold), STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));
Claude
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output) );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。TABLE_NAME
: プロンプトを含むテーブルの名前。このテーブルには、prompt
という名前の列が必要です。または、エイリアスを使用して別の名前の列を使用することもできます。PROMPT_QUERY
: プロンプト データを提供するクエリ。このクエリは、prompt
という名前の列を生成する必要があります。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,4096]
の範囲内である必要があります。 レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムな回答を減らしたい場合は小さい値を、ランダムな回答を増やしたい場合は大きい値を指定します。値を指定しない場合、モデルは適切な値を決定します。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムな回答を減らしたい場合は小さい値を、ランダムな回答を増やしたい場合は大きい値を指定します。値を指定しない場合、モデルは適切な値を決定します。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。
例 1
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- モデルからの JSON レスポンスを解析し、個別の列に分割します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
例 2
次の例は、これらの特性を持つリクエストを示しています。
- クエリを使用して、プロンプトの接頭辞とテーブル列を連結する文字列を連結して、プロンプト データを作成します。
- 短いレスポンスを返します。
- モデルからの JSON レスポンスを解析して個別の列に分割したりはしません。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
例 3
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - モデルからの JSON レスポンスを解析し、個別の列に分割します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
Llama
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences) );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。TABLE_NAME
: プロンプトを含むテーブルの名前。このテーブルには、prompt
という名前の列が必要です。または、エイリアスを使用して別の名前の列を使用することもできます。PROMPT_QUERY
: プロンプト データを提供するクエリ。このクエリは、prompt
という名前の列を生成する必要があります。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,4096]
の範囲内である必要があります。 レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムな回答を減らしたい場合は小さい値を、ランダムな回答を増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。
例 1
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- モデルからの JSON レスポンスを解析し、個別の列に分割します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
例 2
次の例は、これらの特性を持つリクエストを示しています。
- クエリを使用して、プロンプトの接頭辞とテーブル列を連結する文字列を連結して、プロンプト データを作成します。
- 短いレスポンスを返します。
- モデルからの JSON レスポンスを解析して個別の列に分割したりはしません。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
例 3
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - モデルからの JSON レスポンスを解析し、個別の列に分割します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
Mistral AI
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences) );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。TABLE_NAME
: プロンプトを含むテーブルの名前。このテーブルには、prompt
という名前の列が必要です。または、エイリアスを使用して別の名前の列を使用することもできます。PROMPT_QUERY
: プロンプト データを提供するクエリ。このクエリは、prompt
という名前の列を生成する必要があります。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,4096]
の範囲内である必要があります。 レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムな回答を減らしたい場合は小さい値を、ランダムな回答を増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。
例 1
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- モデルからの JSON レスポンスを解析し、個別の列に分割します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
例 2
次の例は、これらの特性を持つリクエストを示しています。
- クエリを使用して、プロンプトの接頭辞とテーブル列を連結する文字列を連結して、プロンプト データを作成します。
- 短いレスポンスを返します。
- モデルからの JSON レスポンスを解析して個別の列に分割したりはしません。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
例 3
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - モデルからの JSON レスポンスを解析し、個別の列に分割します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
オープンモデル
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (PROMPT_QUERY)}, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output) );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。TABLE_NAME
: プロンプトを含むテーブルの名前。このテーブルには、prompt
という名前の列が必要です。または、エイリアスを使用して別の名前の列を使用することもできます。PROMPT_QUERY
: プロンプト データを提供するクエリ。このクエリは、prompt
という名前の列を生成する必要があります。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,4096]
の範囲内である必要があります。 レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。 値を指定しない場合、モデルは適切な値を決定します。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。 値を指定しない場合、モデルは適切な値を決定します。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムな回答を減らしたい場合は小さい値を、ランダムな回答を増やしたい場合は大きい値を指定します。値を指定しない場合、モデルは適切な値を決定します。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムな回答を減らしたい場合は小さい値を、ランダムな回答を増やしたい場合は大きい値を指定します。値を指定しない場合、モデルは適切な値を決定します。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。
例 1
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- モデルからの JSON レスポンスを解析し、個別の列に分割します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
例 2
次の例は、これらの特性を持つリクエストを示しています。
- クエリを使用して、プロンプトの接頭辞とテーブル列を連結する文字列を連結して、プロンプト データを作成します。
- 短いレスポンスを返します。
- モデルからの JSON レスポンスを解析して個別の列に分割したりはしません。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
例 3
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - モデルからの JSON レスポンスを解析し、個別の列に分割します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
オブジェクト テーブルのデータからテキストを生成する
Gemini モデルで ML.GENERATE_TEXT
関数を使用して、オブジェクト テーブルの非構造化データを分析します。プロンプト データは prompt
パラメータで指定します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, STRUCT(PROMPT AS prompt, TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output, STOP_SEQUENCES AS stop_sequences, SAFETY_SETTINGS AS safety_settings) );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。これは Gemini モデルである必要があります。TABLE_NAME
: 分析するコンテンツを含むオブジェクト テーブルの名前。分析できるコンテンツの種類の詳細については、入力をご覧ください。オブジェクト テーブルで使用される Cloud Storage バケットは、モデルを作成し、
ML.GENERATE_TEXT
関数を呼び出すプロジェクトに含まれている必要があります。オブジェクト テーブルで使用される Cloud Storage バケットを含むプロジェクトとは異なるプロジェクトでML.GENERATE_TEXT
関数を呼び出す場合は、service-A@gcp-sa-aiplatform.iam.gserviceaccount.com
サービス アカウントにバケットレベルでストレージ管理者ロールを付与する必要があります。PROMPT
: コンテンツの分析に使用するプロンプト。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,4096]
の範囲内である必要があります。 レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。 値を指定しない場合、モデルは適切な値を決定します。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。 値を指定しない場合、モデルは適切な値を決定します。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムな回答を減らしたい場合は小さい値を、ランダムな回答を増やしたい場合は大きい値を指定します。値を指定しない場合、モデルは適切な値を決定します。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムな回答を減らしたい場合は小さい値を、ランダムな回答を増やしたい場合は大きい値を指定します。値を指定しない場合、モデルは適切な値を決定します。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。
例
この例では、feedback
という名前のオブジェクト テーブルから音声コンテンツを翻訳して音声文字変換します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.audio_model`, TABLE `mydataset.feedback`, STRUCT('What is the content of this audio clip, translated into Spanish?' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));
この例では、invoices
という名前のオブジェクト テーブルから PDF コンテンツを分類します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.classify_model`, TABLE `mydataset.invoices`, STRUCT('Classify this document based on the invoice total, using the following categories: 0 to 100, 101 to 200, greater than 200' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));