ML.GENERATE_TEXT 関数を使用してテキストを生成する
このドキュメントでは、ホストされた Vertex AI モデルを表す BigQuery ML リモートモデルを作成する方法について説明します。ホストされている Vertex AI モデルは、組み込みの Vertex AI テキストモデルまたはマルチモーダル モデル、または Anthropic Claude モデルのいずれかです。選択した Vertex AI モデルに応じて、ML.GENERATE_TEXT
関数を使用して、オブジェクト テーブル内の非構造化データまたは標準テーブル内のテキストを分析できます。
必要な権限
接続を作成するには、次の Identity and Access Management(IAM)ロールのメンバーシップが必要です。
roles/bigquery.connectionAdmin
接続のサービス アカウントに権限を付与するには、次の権限が必要です。
resourcemanager.projects.setIamPolicy
BigQuery ML を使用してモデルを作成するには、次の IAM 権限が必要です。
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
推論を実行するには、次の権限が必要です。
- テーブルに対する
bigquery.tables.getData
- モデルに対する
bigquery.models.getData
bigquery.jobs.create
- テーブルに対する
始める前に
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
接続を作成する
クラウド リソース接続を作成し、接続のサービス アカウントを取得します。
次のオプションのいずれかを選択します。
コンソール
[BigQuery] ページに移動します。
接続を作成するには、[
追加] をクリックし、続いて [外部データソースへの接続] をクリックします。[接続タイプ] リストで、[Vertex AI リモートモデル、リモート関数、BigLake(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
main.tf
ファイルに次のセクションを追加します。
## This creates a cloud resource connection. ## Note: The cloud resource nested object has only one output only field - serviceAccountId. resource "google_bigquery_connection" "connection" { connection_id = "CONNECTION_ID" project = "PROJECT_ID" location = "REGION" cloud_resource {} }
CONNECTION_ID
: 接続の IDPROJECT_ID
: 実際の Google Cloud プロジェクト IDREGION
: 接続のリージョン
サービス アカウントにアクセス権を付与する
接続のサービス アカウントに Vertex AI ユーザーロールを付与します。
リモートモデルの作成時にエンドポイントを URL(endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/text-embedding-004'
など)として指定する場合は、URL に指定する同じプロジェクト内でこのロールを付与してください。
リモートモデルの作成時にモデル名(endpoint = 'text-embedding-004'
など)を使用してエンドポイントを指定する場合は、リモートモデルを作成するプロジェクト内でこのロールを付与してください。
別のプロジェクト内でロールを付与すると、エラー bqcx-1234567890-xxxx@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource
が発生します。
ロールを付与する手順は次のとおりです。
コンソール
[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 モデルを有効にする
この手順は、Claude モデルを使用している場合にのみ必要です。
Google Cloud コンソールで、Vertex AI の [Model Garden] ページに移動します。
使用する Claude モデルを検索またはブラウジングします。
モデルカードをクリックします。
モデルページで [有効にする] をクリックします。
必要な有効化情報を記入し、[次へ] をクリックします。
[利用規約] セクションで、チェックボックスをオンにします。
[同意する] をクリックして利用規約に同意し、モデルを有効にします。
BigQuery ML リモートモデルを作成する
Google Cloud コンソールで [BigQuery] ページに移動します。
SQL エディタを使用してリモートモデルを作成します。
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS (ENDPOINT = 'ENDPOINT');
次のように置き換えます。
PROJECT_ID
: プロジェクト IDDATASET_ID
: モデルを格納するデータセットの ID。このデータセットは、使用している接続と同じロケーションに存在している必要があります。MODEL_NAME
: モデルの名前REGION
: 接続で使用されるリージョンCONNECTION_ID
: BigQuery 接続の IDGoogle Cloud コンソールで接続の詳細を表示する場合、これは [接続 ID] に表示される完全修飾接続 ID の最後のセクションの値です。例:
projects/myproject/locations/connection_location/connections/myconnection
ENDPOINT
: 使用するサポートされている Vertex AI モデルの名前。モデルの種類によっては、モデルの特定のバージョンを指定できます。各モデルタイプでサポートされているモデル バージョンについては、
ENDPOINT
をご覧ください。
テーブルのプロンプトを使用してテキストデータからテキストを生成する
リモートモデルで ML.GENERATE_TEXT
関数を使用し、テーブル列のプロンプト データを使用してテキストを生成します。
gemini-1.5-flash
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, 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) );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。TABLE_NAME
: プロンプトを含むテーブルの名前。このテーブルには、prompt
という名前の列が必要です。または、エイリアスを使用して別の名前の列を使用することもできます。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,8192]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,2.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 検索によるグラウンディングを使用するかどうかを決定する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
例
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - 生成されたテキストと安全性属性を別々の列で返します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
gemini-1.5-pro
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, 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) );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。TABLE_NAME
: プロンプトを含むテーブルの名前。このテーブルには、prompt
という名前の列が必要です。または、エイリアスを使用して別の名前の列を使用することもできます。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,8192]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,2.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 検索によるグラウンディングを使用するかどうかを決定する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
例
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - 生成されたテキストと安全性属性を別々の列で返します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
gemini-pro
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, 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, STOP_SEQUENCES AS stop_sequences, GROUND_WITH_GOOGLE_SEARCH AS ground_with_google_search, SAFETY_SETTINGS AS safety_settings) );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。TABLE_NAME
: プロンプトを含むテーブルの名前。このテーブルには、prompt
という名前の列が必要です。または、エイリアスを使用して別の名前の列を使用することもできます。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,8192]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは40
です。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。GROUND_WITH_GOOGLE_SEARCH
: Vertex AI モデルがレスポンスを生成するときに Google 検索によるグラウンディングを使用するかどうかを決定する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
例
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - 短く、中程度の確率のレスポンスを返します。
- JSON レスポンスを個別の列にフラット化します。
- レスポンスのグラウンディング用に一般公開のウェブデータを取得して返します。
- 2 つの安全性設定を使用して、安全でないレスポンスを除外します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, 40 AS top_k, 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, 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
という名前の列が必要です。または、エイリアスを使用して別の名前の列を使用することもできます。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,4096]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。値を指定しない場合、モデルは適切な値を決定します。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。値を指定しない場合、モデルは適切な値を決定します。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。
例
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - 生成されたテキストと安全性属性を別々の列で返します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
text-bison
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, 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, STOP_SEQUENCES AS stop_sequences) );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。TABLE_NAME
: プロンプトを含むテーブルの名前。このテーブルには、prompt
という名前の列が必要です。または、エイリアスを使用して別の名前の列を使用することもできます。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,1024]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは40
です。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。
例
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - 生成されたテキストと安全性属性を別々の列で返します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
text-bison32
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, 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, STOP_SEQUENCES AS stop_sequences) );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。TABLE_NAME
: プロンプトを含むテーブルの名前。このテーブルには、prompt
という名前の列が必要です。または、エイリアスを使用して別の名前の列を使用することもできます。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,8192]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは40
です。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。
例
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - 生成されたテキストと安全性属性を別々の列で返します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
text-unicorn
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, 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, STOP_SEQUENCES AS stop_sequences) );
次のように置き換えます。
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。TABLE_NAME
: プロンプトを含むテーブルの名前。このテーブルには、prompt
という名前の列が必要です。または、エイリアスを使用して別の名前の列を使用することもできます。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,1024]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは40
です。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。
例
次の例は、これらの特性を持つリクエストを示しています。
- プロンプトに
prompts
テーブルのprompt
列を使用します。 - 生成されたテキストと安全性属性を別々の列で返します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
クエリのプロンプトを使用してテキストデータからテキストを生成する
リモートモデルで ML.GENERATE_TEXT
関数を使用し、プロンプト データを提供するクエリを使用してテキストを生成します。
gemini-1.5-flash
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_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) );
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。PROMPT_QUERY
: プロンプト データを提供するクエリ。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,8192]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,2.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 検索によるグラウンディングを使用するかどうかを決定する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
例 1
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- 生成されたテキストと安全性属性を別々の列で返します。
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
次の例は、これらの特性を持つリクエストを示しています。
- クエリを使用して、プロンプトの接頭辞とテーブル列を連結する文字列を連結して、プロンプト データを作成します。
- 短いレスポンスを返します。
- 生成されたテキストと安全性属性を別々の列で返しません。
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));
gemini-1.5-pro
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_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) );
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。PROMPT_QUERY
: プロンプト データを提供するクエリ。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,8192]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,2.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 検索によるグラウンディングを使用するかどうかを決定する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
例 1
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- 生成されたテキストと安全性属性を別々の列で返します。
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
次の例は、これらの特性を持つリクエストを示しています。
- クエリを使用して、プロンプトの接頭辞とテーブル列を連結する文字列を連結して、プロンプト データを作成します。
- 短いレスポンスを返します。
- 生成されたテキストと安全性属性を別々の列で返しません。
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));
gemini-pro
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_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, STOP_SEQUENCES AS stop_sequences, GROUND_WITH_GOOGLE_SEARCH AS ground_with_google_search, SAFETY_SETTINGS AS safety_settings) );
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。PROMPT_QUERY
: プロンプト データを提供するクエリ。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,8192]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは40
です。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。GROUND_WITH_GOOGLE_SEARCH
: Vertex AI モデルがレスポンスを生成するときに Google 検索によるグラウンディングを使用するかどうかを決定する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
例 1
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- 生成されたテキストと安全性属性を別々の列で返します。
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
次の例は、これらの特性を持つリクエストを示しています。
- クエリを使用して、プロンプトの接頭辞とテーブル列を連結する文字列を連結して、プロンプト データを作成します。
- 短いレスポンスを返します。
- 生成されたテキストと安全性属性を別々の列で返しません。
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
次の例は、これらの特性を持つリクエストを示しています。
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( 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`, (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
: モデルの名前。PROMPT_QUERY
: プロンプト データを提供するクエリ。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,4096]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。値を指定しない場合、モデルは適切な値を決定します。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。値を指定しない場合、モデルは適切な値を決定します。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。
例 1
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- 生成されたテキストと安全性属性を別々の列で返します。
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
次の例は、これらの特性を持つリクエストを示しています。
- クエリを使用して、プロンプトの接頭辞とテーブル列を連結する文字列を連結して、プロンプト データを作成します。
- 短いレスポンスを返します。
- 生成されたテキストと安全性属性を別々の列で返しません。
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));
text-bison
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_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, STOP_SEQUENCES AS stop_sequences) );
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。PROMPT_QUERY
: プロンプト データを提供するクエリ。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,1024]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは40
です。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。
例 1
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- 生成されたテキストと安全性属性を別々の列で返します。
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
次の例は、これらの特性を持つリクエストを示しています。
- クエリを使用して、プロンプトの接頭辞とテーブル列を連結する文字列を連結して、プロンプト データを作成します。
- 短いレスポンスを返します。
- 生成されたテキストと安全性属性を別々の列で返しません。
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));
text-bison32
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_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, STOP_SEQUENCES AS stop_sequences) );
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。PROMPT_QUERY
: プロンプト データを提供するクエリ。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,8192]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは40
です。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。
例 1
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- 生成されたテキストと安全性属性を別々の列で返します。
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
次の例は、これらの特性を持つリクエストを示しています。
- クエリを使用して、プロンプトの接頭辞とテーブル列を連結する文字列を連結して、プロンプト データを作成します。
- 短いレスポンスを返します。
- 生成されたテキストと安全性属性を別々の列で返しません。
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));
text-unicorn
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_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, STOP_SEQUENCES AS stop_sequences) );
PROJECT_ID
: プロジェクト ID。DATASET_ID
: モデルを格納するデータセットの ID。MODEL_NAME
: モデルの名前。PROMPT_QUERY
: プロンプト データを提供するクエリ。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,1024]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは40
です。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。
例 1
次の例は、これらの特性を持つリクエストを示しています。
articles
テーブルのbody
列のテキストの概要を求めます。- 生成されたテキストと安全性属性を別々の列で返します。
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
次の例は、これらの特性を持つリクエストを示しています。
- クエリを使用して、プロンプトの接頭辞とテーブル列を連結する文字列を連結して、プロンプト データを作成します。
- 短いレスポンスを返します。
- 生成されたテキストと安全性属性を別々の列で返しません。
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));
オブジェクト テーブルのデータからテキストを生成する
リモートモデルで ML.GENERATE_TEXT
関数を使用してテキストを生成します。オブジェクト テーブルを使用して分析するコンテンツを提供し、prompt
パラメータでプロンプト データを指定します。
gemini-1.5-flash
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
: モデルの名前。TABLE_NAME
: 分析するコンテンツを含むオブジェクト テーブルの名前。分析できるコンテンツの種類の詳細については、入力をご覧ください。オブジェクト テーブルで使用される Cloud Storage バケットは、モデルを作成し、
ML.GENERATE_TEXT
関数を呼び出すプロジェクトに含まれている必要があります。オブジェクト テーブルで使用される Cloud Storage バケットを含むプロジェクトとは異なるプロジェクトでML.GENERATE_TEXT
関数を呼び出す場合は、service-A@gcp-sa-aiplatform.iam.gserviceaccount.com
サービス アカウントにバケットレベルでストレージ管理者ロールを付与する必要があります。PROMPT
: コンテンツの分析に使用するプロンプト。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,8192]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,2.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。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
例
この例では、videos
という名前のオブジェクト テーブルから動画コンテンツを分析し、各動画のコンテンツを記述します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.video_model`, TABLE `mydataset.videos`, STRUCT('What is happening in this video?' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));
この例では、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));
gemini-1.5-pro
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
: モデルの名前。TABLE_NAME
: 分析するコンテンツを含むオブジェクト テーブルの名前。分析できるコンテンツの種類の詳細については、入力をご覧ください。オブジェクト テーブルで使用される Cloud Storage バケットは、モデルを作成し、
ML.GENERATE_TEXT
関数を呼び出すプロジェクトに含まれている必要があります。オブジェクト テーブルで使用される Cloud Storage バケットを含むプロジェクトとは異なるプロジェクトでML.GENERATE_TEXT
関数を呼び出す場合は、service-A@gcp-sa-aiplatform.iam.gserviceaccount.com
サービス アカウントにバケットレベルでストレージ管理者ロールを付与する必要があります。PROMPT
: コンテンツの分析に使用するプロンプト。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,8192]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは128
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,2.0]
の範囲内の値にする必要があります。デフォルトは0
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。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
例
この例では、videos
という名前のオブジェクト テーブルから動画コンテンツを分析し、各動画のコンテンツを記述します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.video_model`, TABLE `mydataset.videos`, STRUCT('What is happening in this video?' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));
この例では、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));
gemini-pro-vision
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_K AS top_k, 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
: モデルの名前。TABLE_NAME
: 分析するコンテンツを含むオブジェクト テーブルの名前。分析できるコンテンツの種類の詳細については、入力をご覧ください。オブジェクト テーブルで使用される Cloud Storage バケットは、モデルを作成し、
ML.GENERATE_TEXT
関数を呼び出すプロジェクトに含まれている必要があります。オブジェクト テーブルで使用される Cloud Storage バケットを含むプロジェクトとは異なるプロジェクトでML.GENERATE_TEXT
関数を呼び出す場合は、service-A@gcp-sa-aiplatform.iam.gserviceaccount.com
サービス アカウントにバケットレベルでストレージ管理者ロールを付与する必要があります。PROMPT
: コンテンツの分析に使用するプロンプト。TOKENS
:INT64
値。レスポンスで生成できるトークンの最大数を設定します。この値は[1,2048]
の範囲内である必要があります。レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。デフォルトは2048
です。TEMPERATURE
:FLOAT64
値。トークン選択のランダム性の度合いを制御します。[0.0,1.0]
の範囲内の値にする必要があります。デフォルトは0.4
です。temperature
の値が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、temperature
の値が高いほど、より多様で創造的な結果を導くことができます。temperature
の0
の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。TOP_K
:[1,40]
の範囲内のINT64
値。これにより、モデルが選択を検討するトークンの初期プールが決まります。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは32
です。TOP_P
:FLOAT64
値。[0.0,1.0]
の範囲内の値にする必要があります。これは、トークンが選択される確率を特定する際に役立ちます。ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。デフォルトは0.95
です。FLATTEN_JSON
: 生成されたテキストと安全性属性を別々の列で返すかどうかを決定するBOOL
値。デフォルトはFALSE
です。STOP_SEQUENCES
:ARRAY<STRING>
値。指定された文字列がモデルからのレスポンスに含まれている場合に、その文字列を削除します。文字列は、大文字と小文字の区別を含めて完全に一致します。デフォルトは空の配列です。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
例
この例では、videos
という名前のオブジェクト テーブルから動画コンテンツを分析し、各動画のコンテンツを記述します。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.video_model`, TABLE `mydataset.videos`, STRUCT('What is happening in this video?' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));