使用数据调优模型

本文档介绍了如何创建引用 Vertex AI 模型的 BigQuery ML 远程模型,然后配置该模型以执行监督调优。Vertex AI 模型必须是以下模型之一:

  • gemini-1.5-pro-002
  • gemini-1.5-flash-002
  • gemini-1.0-pro-002预览版

创建远程模型后,您可以使用 ML.EVALUATE 函数来评估模型并确认模型的性能是否适合您的应用场景。然后,您可以将该模型与 ML.GENERATE_TEXT 函数结合使用来分析 BigQuery 表中的文本。

如需了解详情,请参阅 Vertex AI Gemini API 模型监督式调优

所需权限

  • 如需创建连接,您需要拥有以下 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,Vertex AI, and Compute Engine APIs.

    Enable the APIs

创建连接

创建 Cloud 资源连接并获取连接的服务账号。

从下列选项中选择一项:

控制台

  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 参数会替换默认项目。

    替换以下内容:

    • REGION:您的连接区域
    • PROJECT_ID:您的 Google Cloud 项目 ID
    • CONNECTION_ID:您的连接的 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

使用 google_bigquery_connection 资源。

如需向 BigQuery 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证

以下示例会在 US 区域中创建一个名为 my_cloud_resource_connection 的 Cloud 资源连接:


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。

准备 Cloud Shell

  1. 启动 Cloud Shell
  2. 设置要在其中应用 Terraform 配置的默认 Google Cloud 项目。

    您只需为每个项目运行一次以下命令,即可在任何目录中运行它。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。

准备目录

每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。

  1. Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有 .tf 扩展名,例如 main.tf。在本教程中,该文件称为 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。

    将示例代码复制到新创建的 main.tf 中。

    (可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。

  3. 查看和修改要应用到您的环境的示例参数。
  4. 保存更改。
  5. 初始化 Terraform。您只需为每个目录执行一次此操作。
    terraform init

    (可选)如需使用最新的 Google 提供程序版本,请添加 -upgrade 选项:

    terraform init -upgrade

应用更改

  1. 查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
    terraform plan

    根据需要更正配置。

  2. 通过运行以下命令并在提示符处输入 yes 来应用 Terraform 配置:
    terraform apply

    等待 Terraform 显示“应用完成!”消息。

  3. 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。

向连接的服务账号授予访问权限

向您的服务账号授予访问 Vertex AI 的权限。未授予权限会导致错误。从下列选项中选择一项:

控制台

  1. 前往 IAM 和管理页面。

    转到“IAM 和管理”

  2. 点击 授予访问权限

  3. 新的主账号部分,输入您之前复制的服务账号 ID。

  4. 点击选择角色

  5. 过滤条件中,输入 Vertex AI Service Agent,然后选择该角色。

  6. 点击保存

gcloud

使用 gcloud projects add-iam-policy-binding 命令

gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.serviceAgent' --condition=None

替换以下内容:

  • PROJECT_NUMBER:您的项目编号。
  • MEMBER:您之前复制的服务账号 ID。

与您的连接关联的服务账号是 BigQuery 连接委托服务代理的实例,因此可以为其分配服务代理角色。

创建使用监督式调优的模型

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,运行以下查询以创建远程模型

    CREATE OR REPLACE MODEL
    `PROJECT_ID.DATASET_ID.MODEL_NAME`
    REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
    OPTIONS (
      ENDPOINT = 'ENDPOINT',
      MAX_ITERATIONS = MAX_ITERATIONS,
      LEARNING_RATE_MULTIPLIER = LEARNING_RATE_MULTIPLIER,
      DATA_SPLIT_METHOD = 'DATA_SPLIT_METHOD',
      DATA_SPLIT_EVAL_FRACTION = DATA_SPLIT_EVAL_FRACTION,
      DATA_SPLIT_COL = 'DATA_SPLIT_COL',
      EVALUATION_TASK = 'EVALUATION_TASK',
      PROMPT_COL = 'INPUT_PROMPT_COL',
      INPUT_LABEL_COLS = INPUT_LABEL_COLS)
    AS SELECT PROMPT_COLUMN, LABEL_COLUMN
    FROM `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`;

    替换以下内容:

    • PROJECT_ID:要在其中创建模型的项目的项目 ID。
    • DATASET_ID:包含模型的数据集的 ID。 此数据集必须位于支持的流水线作业和模型上传区域中。
    • MODEL_NAME:模型的名称。
    • REGION:连接使用的区域。
    • CONNECTION_ID:BigQuery 连接的 ID。此连接必须与您使用的数据集位于同一位置

      当您在 Google Cloud 控制台中查看连接详情时,它是连接 ID 中显示的完全限定连接 ID 的最后一部分中的值,例如 projects/myproject/locations/connection_location/connections/myconnection

    • ENDPOINTSTRING 值,指定要使用的模型的名称。
    • MAX_ITERATIONSINT64 值,指定为进行监督式调优而运行的步数。MAX_ITERATIONS 值必须在 1 之间。

      Gemini 模型使用周期而非步骤进行训练,因此 BigQuery ML 会将 MAX_ITERATIONS 值转换为周期。MAX_ITERATIONS 的默认值为输入数据的行数,相当于一个 epoch。如需使用多个 epoch,请指定训练数据中行数的倍数。例如,如果您有 100 行输入数据,并且您想使用两个 epoch,请为参数值指定 200。如果您提供的值不是输入数据行数的倍数,BigQuery ML 会向上舍入到最近的纪元。 例如,如果您有 100 行输入数据,并为 MAX_ITERATIONS 值指定 101,则系统会进行两次迭代来执行训练。

      如需详细了解用于调优 Gemini 模型的参数,请参阅创建调优作业

    • DATA_SPLIT_METHODSTRING 值,指定将输入数据拆分为训练集和评估集的方法。有效选项如下:
      • AUTO_SPLIT:BigQuery ML 会自动拆分数据。数据的拆分方式因输入表中的行数而异。此设置为默认值。
      • RANDOM:数据在拆分为各个集之前会随机化。如需自定义数据拆分,您可以将此选项与 DATA_SPLIT_EVAL_FRACTION 选项结合使用。
      • CUSTOM:使用 DATA_SPLIT_COL 选项中提供的列拆分数据。DATA_SPLIT_COL 值必须是 BOOL 类型的列的名称。值为 TRUENULL 的行用作评估数据,值为 FALSE 的行用作训练数据。
      • SEQ:使用 DATA_SPLIT_COL 选项中提供的列拆分数据。DATA_SPLIT_COL 值必须是以下任一类型的列的名称:
        • NUMERIC
        • BIGNUMERIC
        • STRING
        • TIMESTAMP

        数据根据指定列从小到大排序。

        n 行用作评估数据,其中 n 是为 DATA_SPLIT_EVAL_FRACTION 指定的值。其余行用作训练数据。

      • NO_SPLIT:不拆分数据;所有输入数据都用作训练数据。

      如需详细了解这些数据拆分选项,请参阅 DATA_SPLIT_METHOD

    • DATA_SPLIT_EVAL_FRACTIONFLOAT64 值,指定在执行监督式调优时用作评估数据的数据比例。必须是 [0, 1.0] 范围内的值。默认值为 0.2

      当您指定 RANDOMSEQ 作为 DATA_SPLIT_METHOD 选项的值时,请使用此选项。如需自定义数据拆分,您可以将 DATA_SPLIT_METHOD 选项与 DATA_SPLIT_EVAL_FRACTION 选项结合使用。

    • DATA_SPLIT_COLSTRING 值,指定用于将输入数据分类到训练集或评估集中的列的名称。在指定 CUSTOMSEQ 作为 DATA_SPLIT_METHOD 选项的值时使用。
    • EVALUATION_TASKSTRING 值,指定您要对模型进行调优以执行的任务类型。有效选项包括:
      • TEXT_GENERATION
      • CLASSIFICATION
      • SUMMARIZATION
      • QUESTION_ANSWERING
      • UNSPECIFIED

      默认值为 UNSPECIFIED

    • INPUT_PROMPT_COLSTRING 值,包含执行监督式调优时使用的训练数据表中提示列的名称。默认值为 prompt
    • INPUT_LABEL_COLSARRAY<<STRING> 值,包含要在监督式调优中使用的训练数据表中标签列的名称。只能在数组中指定一个元素。默认值为空数组。这会使 label 成为 LABEL_COLUMN 参数的默认值。
    • PROMPT_COLUMN:训练数据表中包含用于评估 LABEL_COLUMN 列中内容的提示的列。此列必须是 STRING 类型或转换为 STRING。如果您为 INPUT_PROMPT_COL 选项指定了值,则必须为 PROMPT_COLUMN 指定相同的值。否则,此值必须为 prompt。如果您的表没有 prompt 列,请使用别名指定现有表列。例如 AS SELECT hint AS prompt, label FROM mydataset.mytable
    • LABEL_COLUMN:训练数据表中包含用于训练模型的样本的列。此列必须是 STRING 类型或转换为 STRING。如果您为 INPUT_LABEL_COLS 选项指定了值,则必须为 LABEL_COLUMN 指定相同的值。否则,此值必须为 label。如果您的表没有 label 列,请使用别名指定现有表列。例如 AS SELECT prompt, feature AS label FROM mydataset.mytable
    • TABLE_PROJECT_ID:包含训练数据表的项目的项目 ID。
    • TABLE_DATASET:包含训练数据表的数据集的名称。
    • TABLE_NAME:包含用于训练模型的数据的表的名称。

评估调优后的模型

  1. 在 Google Cloud 控制台中,转到 BigQuery 页面。

    转到 BigQuery

  2. 在查询编辑器中,运行以下查询以评估调优后模型:

    SELECT
    *
    FROM
    ML.EVALUATE(
      MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`,
      TABLE `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`,
      STRUCT('TASK_TYPE' AS task_type, TOKENS AS max_output_tokens,
        TEMPERATURE AS temperature, TOP_K AS top_k,
        TOP_P AS top_p));

    替换以下内容:

    • PROJECT_ID:包含该模型的项目的 ID。
    • DATASET_ID:包含该模型的数据集的 ID。
    • MODEL_NAME:模型的名称。
    • TABLE_PROJECT_ID:包含评估数据表的项目的项目 ID。
    • TABLE_DATASET:包含训练数据表的数据集的名称。
    • TABLE_NAME:包含评估数据的表的名称。

      表中必须有一列的名称与模型训练期间提供的提示列名称匹配。您可以在模型训练期间使用 prompt_col 选项提供此值。如果未指定 prompt_col,系统会使用训练数据中名为 prompt 的列。如果没有名为 prompt 的列,则会返回错误。

      表中必须有一列的名称与模型训练期间提供的标签列名称匹配。您可以在模型训练期间使用 input_label_cols 选项提供此值。如果未指定 input_label_cols,系统会使用训练数据中名为 label 的列。如果没有名为 label 的列,则会返回错误。

    • TASK_TYPE:一个 STRING 值,用于指定要为其评估模型的任务类型。有效选项包括:
      • TEXT_GENERATION
      • CLASSIFICATION
      • SUMMARIZATION
      • QUESTION_ANSWERING
      • UNSPECIFIED
    • TOKENS:一个 INT64 值,用于设置回答中可生成的词元数上限。此值必须在范围 [1,1024] 内。 指定较低的值可获得较短的回答,指定较高的值可获得较长的回答。默认值为 128
    • TEMPERATURE[0.0,1.0] 范围内的一个 FLOAT64 值,用于控制词元选择中的随机程度。默认值为 0

      较低的 temperature 值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的 temperature 值可以产生更具多样性或创造性的结果。temperature 的值为 0 表示确定性,即始终选择概率最高的回答。

    • TOP_K[1,40] 范围内的一个 INT64 值,用于确定模型考虑选择的初始词元池。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。默认值为 40
    • TOP_P[0.0,1.0] 范围内的 FLOAT64 值有助于确定选择了 TOP_K 确定的池中的哪些词元。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。默认值为 0.95

生成文本

使用 ML.GENERATE_TEXT 函数生成文本:

提示列

使用表列提供提示来生成文本。

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

请替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • DATASET_ID:包含该模型的数据集的 ID。
  • MODEL_NAME:模型的名称。
  • TABLE_NAME:包含提示的表的名称。此表必须有一列的名称与调优后的模型中的特征列的名称匹配。在创建模型时,可以使用 PROMPT_COL 选项设置模型中的特征列名称。否则,模型中的特征列名称默认为 prompt,您也可以使用别名来使用其他名称的列。
  • TOKENS:一个 INT64 值,用于设置回答中可生成的词元数上限。 此值必须在范围 [1,8192] 内。 指定较低的值可获得较短的回答,指定较高的值可获得较长的回答。 默认值为 128
  • TEMPERATURE[0.0,1.0] 范围内的一个 FLOAT64 值,用于控制词元选择的随机程度。默认值为 1.0

    较低的 temperature 值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的 temperature 值可以产生更具多样性或创造性的结果。temperature 的值为 0 表示确定性,即始终选择概率最高的回答。

  • TOP_P:范围 [0.0,1.0] 内的一个 FLOAT64 值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 默认值为 0.95
  • FLATTEN_JSON:一个 BOOL 值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为 FALSE
  • STOP_SEQUENCES:一个 ARRAY<STRING> 值,如果模型的回答中包含指定的字符串,则用于移除这些字符串。字符串需要完全匹配,包括大小写。默认值为空数组。
  • GROUND_WITH_GOOGLE_SEARCH:一个 BOOL 值,用于确定 Vertex AI 模型在生成回答时是否使用通过 Google 搜索建立依据。通过建立依据,模型可以在生成回答时使用网络上的其他信息来生成更具体的真实模型回答。如果 flatten_json_output 和此字段都设置为 True,结果中会包含一个额外的 ml_generate_text_grounding_result 列,其中提供了模型用于收集更多信息的来源。默认值为 FALSE
  • SAFETY_SETTINGS:一个 ARRAY<STRUCT<STRING AS category, STRING AS threshold>> 值,用于配置内容安全阈值以过滤回答。结构体中的第一个元素指定危害类别,结构体中的第二个元素指定相应的屏蔽阈值。模型会过滤掉违反这些设置的内容。您只能指定每个类别一次。例如,您不能同时指定 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.mymodel`,
    TABLE mydataset.prompts,
    STRUCT(
      0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p,
      TRUE AS flatten_json_output));

提示查询

使用查询提供提示来生成文本。

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

请替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • DATASET_ID:包含该模型的数据集的 ID。
  • MODEL_NAME:模型的名称。
  • PROMPT_QUERY:提供提示数据的查询。
  • TOKENS:一个 INT64 值,用于设置回答中可生成的词元数上限。 此值必须在范围 [1,8192] 内。 指定较低的值可获得较短的回答,指定较高的值可获得较长的回答。 默认值为 128
  • TEMPERATURE[0.0,1.0] 范围内的一个 FLOAT64 值,用于控制词元选择的随机程度。默认值为 1.0

    较低的 temperature 值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的 temperature 值可以产生更具多样性或创造性的结果。temperature 的值为 0 表示确定性,即始终选择概率最高的回答。

  • TOP_P:范围 [0.0,1.0] 内的一个 FLOAT64 值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 默认值为 0.95
  • FLATTEN_JSON:一个 BOOL 值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为 FALSE
  • STOP_SEQUENCES:一个 ARRAY<STRING> 值,如果模型的回答中包含指定的字符串,则用于移除这些字符串。字符串需要完全匹配,包括大小写。默认值为空数组。
  • GROUND_WITH_GOOGLE_SEARCH:一个 BOOL 值,用于确定 Vertex AI 模型在生成回答时是否使用通过 Google 搜索建立依据。通过建立依据,模型可以在生成回答时使用网络上的其他信息来生成更具体的真实模型回答。如果 flatten_json_output 和此字段都设置为 True,结果中会包含一个额外的 ml_generate_text_grounding_result 列,其中提供了模型用于收集更多信息的来源。默认值为 FALSE
  • SAFETY_SETTINGS:一个 ARRAY<STRUCT<STRING AS category, STRING AS threshold>> 值,用于配置内容安全阈值以过滤回答。结构体中的第一个元素指定危害类别,结构体中的第二个元素指定相应的屏蔽阈值。模型会过滤掉违反这些设置的内容。您只能指定每个类别一次。例如,您不能同时指定 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.mymodel`,
    (
      SELECT CONCAT('Summarize this text', body) AS prompt
      FROM mydataset.articles
    ),
    STRUCT(
      0.2 AS temperature, 650 AS max_output_tokens, 0.2 AS top_p,
      TRUE AS flatten_json_output));

示例 2

以下示例显示了具有以下特征的请求:

  • 通过将提供提示前缀的字符串与表列串联起来,使用查询创建提示数据。
  • 返回概率中等的简短回答。
  • 不在单独的列中返回生成的文本和安全属性。
SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `mydataset.mytuned_model`,
    (
      SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt
      FROM mydataset.input_table
    ),
    STRUCT(
      0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p,
      FALSE AS flatten_json_output));