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

始める前に

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.

    Enable the APIs

接続を作成する

クラウド リソース接続を作成し、接続のサービス アカウントを取得します。

次のオプションのいずれかを選択します。

コンソール

  1. [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. 接続を作成するには、[追加] をクリックし、続いて [外部データソースへの接続] をクリックします。

  3. [接続タイプ] リストで、[Vertex AI リモートモデル、リモート関数、BigLake(Cloud リソース)] を選択します。

  4. [接続 ID] フィールドに接続の名前を入力します。

  5. [接続を作成] をクリックします。

  6. [接続へ移動] をクリックします。

  7. [接続情報] ペインで、次の手順で使用するサービス アカウント ID をコピーします。

bq

  1. コマンドライン環境で接続を作成します。

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID

    --project_id パラメータは、デフォルト プロジェクトをオーバーライドします。

    次のように置き換えます。

    接続リソースを作成すると、BigQuery は、一意のシステム サービス アカウントを作成し、それを接続に関連付けます。

    トラブルシューティング: 次の接続エラーが発生した場合は、Google Cloud SDK を更新します。

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. 後の手順で使用するため、サービス アカウント 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 {}
}        
次のように置き換えます。

サービス アカウントにアクセス権を付与する

接続のサービス アカウントに 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 が発生します。

ロールを付与する手順は次のとおりです。

コンソール

  1. [IAM と管理] ページに移動します。

    [IAM と管理] に移動

  2. [追加] をクリックします。

    [プリンシパルを追加] ダイアログが開きます。

  3. [新しいプリンシパル] フィールドに、前の手順でコピーしたサービス アカウント ID を入力します。

  4. [ロールを選択] フィールドで、[Vertex AI] を選択し、[Vertex AI ユーザー] を選択します。

  5. [保存] をクリックします。

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 モデルを使用している場合にのみ必要です。

  1. Google Cloud コンソールで、Vertex AI の [Model Garden] ページに移動します。

    Model Garden に移動

  2. 使用する Claude モデルを検索またはブラウジングします。

  3. モデルカードをクリックします。

  4. モデルページで [有効にする] をクリックします。

  5. 必要な有効化情報を記入し、[次へ] をクリックします。

  6. [利用規約] セクションで、チェックボックスをオンにします。

  7. [同意する] をクリックして利用規約に同意し、モデルを有効にします。

BigQuery ML リモートモデルを作成する

  1. Google Cloud コンソールで [BigQuery] ページに移動します。

    [BigQuery] に移動

  2. SQL エディタを使用してリモートモデルを作成します。

    CREATE OR REPLACE MODEL
    `PROJECT_ID.DATASET_ID.MODEL_NAME`
    REMOTE WITH CONNECTION `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 モデルの名前。

      モデルの種類によっては、モデルの特定のバージョンを指定できます。各モデルタイプでサポートされているモデル バージョンについては、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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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 の値が高いほど、より多様で創造的な結果を導くことができます。temperature0 の値は確定的であり、最も高い確率のレスポンスが常に選択されることを意味します。

  • 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));