使用 ML.GENERATE_TEXT 函数生成文本
本文档介绍了如何创建表示 Vertex AI 模型的 BigQuery ML 远程模型,然后将该远程模型与 ML.GENERATE_TEXT
函数结合使用来生成文本。
支持以下类型的远程模型:
- 基于预训练 Vertex AI 模型的远程模型。
- 基于 Anthropic Claude 模型(预览版)的远程模型。
- 基于受支持的开放模型的远程模型。
根据您选择的 Vertex AI 模型,您可以根据对象表中的非结构化数据输入或标准表中的文本输入生成文本。
所需权限
如需创建连接,您需要拥有以下 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.
创建连接
为远程模型创建一个 Cloud 资源连接,并获取连接的服务账号。
从下列选项中选择一项:
控制台
转到 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
使用 google_bigquery_connection
资源。
如需向 BigQuery 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为客户端库设置身份验证。
以下示例在 US
区域中创建一个名为 my_cloud_resource_connection
的 Cloud 资源连接:
如需在 Google Cloud 项目中应用 Terraform 配置,请完成以下部分中的步骤。
准备 Cloud Shell
- 启动 Cloud Shell。
-
设置要在其中应用 Terraform 配置的默认 Google Cloud 项目。
您只需为每个项目运行一次以下命令,即可在任何目录中运行它。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。
准备目录
每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。
-
在 Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须具有
.tf
扩展名,例如main.tf
。在本教程中,该文件称为main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您按照教程进行操作,可以在每个部分或步骤中复制示例代码。
将示例代码复制到新创建的
main.tf
中。(可选)从 GitHub 中复制代码。如果端到端解决方案包含 Terraform 代码段,则建议这样做。
- 查看和修改要应用到您的环境的示例参数。
- 保存更改。
-
初始化 Terraform。您只需为每个目录执行一次此操作。
terraform init
(可选)如需使用最新的 Google 提供程序版本,请添加
-upgrade
选项:terraform init -upgrade
应用更改
-
查看配置并验证 Terraform 将创建或更新的资源是否符合您的预期:
terraform plan
根据需要更正配置。
-
通过运行以下命令并在提示符处输入
yes
来应用 Terraform 配置:terraform apply
等待 Terraform 显示“应用完成!”消息。
- 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台的界面中找到资源,以确保 Terraform 已创建或更新它们。
向服务账号授予访问权限
您必须向远程模型使用的连接的服务账号授予 Vertex AI User 角色。如果您使用远程模型根据对象表数据生成文本,还必须向对象表使用的连接的服务账号授予 Vertex AI User 角色。
向远程模型连接的服务账号授予角色
向远程模型连接的服务账号授予 Vertex AI User 角色。
如果您打算在创建远程模型时将端点指定为网址(例如 endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/text-embedding-004'
),请在您在网址中指定的项目中授予此角色。
如果您打算在创建远程模型时使用模型名称指定端点(例如 endpoint = 'text-embedding-004'
),请在打算创建远程模型的项目中授予此角色。
在其他项目中授予此角色会导致错误 bqcx-1234567890-xxxx@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource
。
如需授予该角色,请按以下步骤操作:
控制台
前往 IAM 和管理页面。
点击
Add。系统随即会打开添加主账号对话框。
在新的主账号字段中,输入您之前复制的服务账号 ID。
在选择角色字段中,选择 Vertex AI,然后选择 Vertex AI User。
点击保存。
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 User 角色。
如需查找对象表连接的服务账号,请按以下步骤操作:
转到 BigQuery 页面。
在探索器窗格中,展开包含对象表的数据集。
选择对象表。
在编辑器窗格中,点击详细信息标签页。
请记下连接 ID 字段中的连接名称。
在浏览器窗格中,展开外部连接文件夹。
选择与对象表的连接 ID 字段中的连接匹配的连接。
复制服务账号 ID 字段中的值。
如需授予该角色,请按以下步骤操作:
控制台
前往 IAM 和管理页面。
点击
Add。系统随即会打开添加主账号对话框。
在新的主账号字段中,输入您之前复制的服务账号 ID。
在选择角色字段中,选择 Vertex AI,然后选择 Vertex AI User。
点击保存。
gcloud
使用 gcloud projects add-iam-policy-binding
命令。
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None
请替换以下内容:
PROJECT_NUMBER
:您的项目编号MEMBER
:您之前复制的服务账号 ID
启用 Anthropic Claude 模型
仅当您想使用 Claude 模型时,才需要执行此步骤。
在 Google Cloud 控制台中,进入 Vertex AI Model Registry 页面。
搜索或浏览您要使用的 Claude 模型。
点击模型卡片。
在模型页面上,点击启用。
填写所需的启用信息,然后点击下一步。
在条款及条件部分,选中相应复选框。
点击同意以同意条款及条件,并启用该模型。
部署开放模型
如果您想使用受支持的开放模型,则必须先将该模型部署到 Vertex AI。如需详细了解如何执行此操作,请参阅部署开放模型。
创建 BigQuery 机器学习远程模型
创建远程模型:
开放模型
在 Google Cloud 控制台中,转到 BigQuery 页面。
使用 SQL 编辑器创建远程模型:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS (ENDPOINT = 'https://ENDPOINT_REGION-aiplatform.googleapis.com/v1/projects/ENDPOINT_PROJECT_ID/locations/ENDPOINT_REGION/endpoints/ENDPOINT_ID');
请替换以下内容:
PROJECT_ID
:您的项目 ID。DATASET_ID
:包含模型的数据集的 ID。 此数据集必须与您使用的连接位于同一位置。MODEL_NAME
:模型的名称。REGION
:连接使用的区域。CONNECTION_ID
:BigQuery 连接的 ID。您可以通过在 Google Cloud 控制台中查看连接详情并复制连接 ID 中显示的完全限定连接 ID 的最后一部分中的值来获取此值。例如
projects/myproject/locations/connection_location/connections/myconnection
。ENDPOINT_REGION
:部署开放模型的区域。ENDPOINT_PROJECT_ID
:部署开放模型的项目。ENDPOINT_ID
:开放模型使用的 HTTPS 端点的 ID。您可以通过在在线预测页面上找到开放模型,然后复制 ID 字段中的值来获取端点 ID。
所有其他模型
在 Google Cloud 控制台中,转到 BigQuery 页面。
使用 SQL 编辑器创建远程模型:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS (ENDPOINT = 'ENDPOINT');
请替换以下内容:
PROJECT_ID
:您的项目 ID。DATASET_ID
:包含模型的数据集的 ID。 此数据集必须与您使用的连接位于同一位置。MODEL_NAME
:模型的名称。REGION
:连接使用的区域。CONNECTION_ID
:BigQuery 连接的 ID。您可以通过在 Google Cloud 控制台中查看连接详情并复制连接 ID 中显示的完全限定连接 ID 的最后一部分中的值来获取此值。例如
projects/myproject/locations/connection_location/connections/myconnection
。ENDPOINT
:要使用的 Vertex AI 模型的名称。对于预训练 Vertex AI 模型和 Claude 模型,请指定模型的名称。对于其中一些模型,您可以将模型的特定版本作为名称的一部分进行指定。如需了解支持的模型名称和版本,请参阅
ENDPOINT
。
使用表中的提示根据文本数据生成文本
将 ML.GENERATE_TEXT
函数与远程模型结合使用并使用表列中的提示数据来生成文本:
gemini-2.0-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
值,用于控制 token 选择的随机程度。temperature
值必须大于0.0
,并且小于或等于1.0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性回答的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。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
列用于提示。 - 返回较长的回答。
- 将 JSON 响应展平为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.flash_2_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 8192 AS max_output_tokens, TRUE AS flatten_json_output));
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
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
列用于提示。 - 返回简短回答。
- 将 JSON 响应展平为单独的列。
- 检索并返回公开 Web 数据以建立回答依据
- 使用两项安全设置过滤掉不安全的回答。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT( 100 AS max_output_tokens, 0.5 AS top_p, TRUE AS flatten_json_output, TRUE AS ground_with_google_search, [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category, 'BLOCK_LOW_AND_ABOVE' AS threshold), STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
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
列用于提示。 - 返回简短回答。
- 将 JSON 响应展平为单独的列。
- 检索并返回公开 Web 数据以建立回答依据
- 使用两项安全设置过滤掉不安全的回答。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT( 100 AS max_output_tokens, 0.5 AS top_p, TRUE AS flatten_json_output, TRUE AS ground_with_google_search, [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category, 'BLOCK_LOW_AND_ABOVE' AS threshold), STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_K
:[1,40]
范围内的一个INT64
值,用于确定模型考虑选择的初始词元池。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。 默认值为40
。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
列用于提示。 - 返回概率中等的简短回答。
- 将 JSON 响应展平为单独的列。
- 检索并返回公开 Web 数据以建立回答依据
- 使用两项安全设置过滤掉不安全的回答。
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 如果您未指定值,模型会确定合适的值。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。
示例
以下示例显示了具有以下特征的请求:
- 将
prompts
表的prompt
列用于提示。 - 将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
开放模型
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE PROJECT_ID.DATASET_ID.TABLE_NAME, STRUCT(TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_K AS top_k, TOP_P AS top_p, FLATTEN_JSON AS flatten_json_output) );
请替换以下内容:
PROJECT_ID
:您的项目 ID。DATASET_ID
:包含该模型的数据集的 ID。MODEL_NAME
:模型的名称。TABLE_NAME
:包含提示的表的名称。该表必须具有名为prompt
的列,或者您可以通过别名来使用其他名称的列。TOKENS
:一个INT64
值,用于设置回答中可生成的词元数上限。 此值必须在范围[1,4096]
内。 指定较低的值可获得较短的回答,指定较高的值可获得较长的回答。 如果您未指定值,模型会确定合适的值。TEMPERATURE
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。如果您未指定值,模型会确定合适的值。
较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_K
:[1,40]
范围内的一个INT64
值,用于确定模型考虑选择的初始词元池。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。 如果您未指定值,模型会确定合适的值。TOP_P
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 如果您未指定值,模型会确定合适的值。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。
示例
以下示例显示了具有以下特征的请求:
- 将
prompts
表的prompt
列用于提示。 - 将模型的 JSON 回答解析为单独的列。
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_K
:[1,40]
范围内的一个INT64
值,用于确定模型考虑选择的初始词元池。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。 默认值为40
。TOP_P
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 默认值为0.95
。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。STOP_SEQUENCES
:一个ARRAY<STRING>
值,如果模型的回答中包含指定的字符串,则用于移除这些字符串。字符串需要完全匹配,包括大小写。默认值为空数组。
示例
以下示例显示了具有以下特征的请求:
- 将
prompts
表的prompt
列用于提示。 - 将模型的 JSON 回答解析为单独的列。
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_K
:[1,40]
范围内的一个INT64
值,用于确定模型考虑选择的初始词元池。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。 默认值为40
。TOP_P
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 默认值为0.95
。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。STOP_SEQUENCES
:一个ARRAY<STRING>
值,如果模型的回答中包含指定的字符串,则用于移除这些字符串。字符串需要完全匹配,包括大小写。默认值为空数组。
示例
以下示例显示了具有以下特征的请求:
- 将
prompts
表的prompt
列用于提示。 - 将模型的 JSON 回答解析为单独的列。
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_K
:[1,40]
范围内的一个INT64
值,用于确定模型考虑选择的初始词元池。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。 默认值为40
。TOP_P
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 默认值为0.95
。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。STOP_SEQUENCES
:一个ARRAY<STRING>
值,如果模型的回答中包含指定的字符串,则用于移除这些字符串。字符串需要完全匹配,包括大小写。默认值为空数组。
示例
以下示例显示了具有以下特征的请求:
- 将
prompts
表的prompt
列用于提示。 - 将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
使用查询中的提示根据文本数据生成文本
您可以将 ML.GENERATE_TEXT
函数与远程模型结合使用并使用提供提示数据的查询来生成文本:
gemini-2.0-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
值,用于控制 token 选择的随机程度。temperature
值必须大于0.0
,并且小于或等于1.0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性回答的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。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
列中输入文本摘要。 - 将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .05 AS TEMPERATURE, TRUE AS flatten_json_output));
示例 2
以下示例显示了具有以下特征的请求:
- 通过将提供提示前缀的字符串与表列串联起来,使用查询创建提示数据。
- 返回简短回答。
- 不会将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, .1 AS TEMPERATURE, FALSE AS flatten_json_output));
示例 3
以下示例显示了具有以下特征的请求:
- 提示在
articles
表的body
列中输入文本摘要。 - 将 JSON 响应展平为单独的列。
- 检索并返回公开 Web 数据以建立回答依据
- 使用两项安全设置过滤掉不安全的回答。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .1 AS TEMPERATURE, TRUE AS flatten_json_output, TRUE AS ground_with_google_search, [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category, 'BLOCK_LOW_AND_ABOVE' AS threshold), STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
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
列中输入文本摘要。 - 将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .05 AS TEMPERATURE, TRUE AS flatten_json_output));
示例 2
以下示例显示了具有以下特征的请求:
- 通过将提供提示前缀的字符串与表列串联起来,使用查询创建提示数据。
- 返回简短回答。
- 不会将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, .1 AS TEMPERATURE, FALSE AS flatten_json_output));
示例 3
以下示例显示了具有以下特征的请求:
- 提示在
articles
表的body
列中输入文本摘要。 - 将 JSON 响应展平为单独的列。
- 检索并返回公开 Web 数据以建立回答依据
- 使用两项安全设置过滤掉不安全的回答。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .1 AS TEMPERATURE, TRUE AS flatten_json_output, TRUE AS ground_with_google_search, [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category, 'BLOCK_LOW_AND_ABOVE' AS threshold), STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
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
列中输入文本摘要。 - 将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .05 AS TEMPERATURE, TRUE AS flatten_json_output));
示例 2
以下示例显示了具有以下特征的请求:
- 通过将提供提示前缀的字符串与表列串联起来,使用查询创建提示数据。
- 返回简短回答。
- 不会将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, .1 AS TEMPERATURE, FALSE AS flatten_json_output));
示例 3
以下示例显示了具有以下特征的请求:
- 提示在
articles
表的body
列中输入文本摘要。 - 将 JSON 响应展平为单独的列。
- 检索并返回公开 Web 数据以建立回答依据
- 使用两项安全设置过滤掉不安全的回答。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .1 AS TEMPERATURE, TRUE AS flatten_json_output, TRUE AS ground_with_google_search, [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category, 'BLOCK_LOW_AND_ABOVE' AS threshold), STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_K
:[1,40]
范围内的一个INT64
值,用于确定模型考虑选择的初始词元池。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。 默认值为40
。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
列中输入文本摘要。 - 将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .05 AS TEMPERATURE, TRUE AS flatten_json_output));
示例 2
以下示例显示了具有以下特征的请求:
- 通过将提供提示前缀的字符串与表列串联起来,使用查询创建提示数据。
- 返回简短回答。
- 不会将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, .1 AS TEMPERATURE, FALSE AS flatten_json_output));
示例 3
以下示例显示了具有以下特征的请求:
- 提示在
articles
表的body
列中输入文本摘要。 - 将 JSON 响应展平为单独的列。
- 检索并返回公开 Web 数据以建立回答依据
- 使用两项安全设置过滤掉不安全的回答。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .1 AS TEMPERATURE, TRUE AS flatten_json_output, TRUE AS ground_with_google_search, [STRUCT('HARM_CATEGORY_HATE_SPEECH' AS category, 'BLOCK_LOW_AND_ABOVE' AS threshold), STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)] AS safety_settings));
Claude
SELECT * FROM ML.GENERATE_TEXT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, (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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 如果您未指定值,模型会确定合适的值。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。
示例 1
以下示例显示了具有以下特征的请求:
- 提示在
articles
表的body
列中输入文本摘要。 - 将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT(TRUE AS flatten_json_output));
示例 2
以下示例显示了具有以下特征的请求:
- 通过将提供提示前缀的字符串与表列串联起来,使用查询创建提示数据。
- 返回简短回答。
- 不会将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, FALSE AS flatten_json_output));
开放模型
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) );
PROJECT_ID
:您的项目 ID。DATASET_ID
:包含该模型的数据集的 ID。MODEL_NAME
:模型的名称。PROMPT_QUERY
:提供提示数据的查询。TOKENS
:一个INT64
值,用于设置回答中可生成的词元数上限。 此值必须在范围[1,4096]
内。 指定较低的值可获得较短的回答,指定较高的值可获得较长的回答。 如果您未指定值,模型会确定合适的值。TEMPERATURE
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。如果您未指定值,模型会确定合适的值。
较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_K
:[1,40]
范围内的一个INT64
值,用于确定模型考虑选择的初始词元池。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。 如果您未指定值,模型会确定合适的值。TOP_P
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 如果您未指定值,模型会确定合适的值。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。
示例 1
以下示例显示了具有以下特征的请求:
- 提示在
articles
表的body
列中输入文本摘要。 - 将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .05 AS TEMPERATURE, TRUE AS flatten_json_output));
示例 2
以下示例显示了具有以下特征的请求:
- 通过将提供提示前缀的字符串与表列串联起来,使用查询创建提示数据。
- 返回简短回答。
- 不会将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, .1 AS TEMPERATURE, 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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_K
:[1,40]
范围内的一个INT64
值,用于确定模型考虑选择的初始词元池。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。 默认值为40
。TOP_P
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 默认值为0.95
。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。STOP_SEQUENCES
:一个ARRAY<STRING>
值,如果模型的回答中包含指定的字符串,则用于移除这些字符串。字符串需要完全匹配,包括大小写。默认值为空数组。
示例 1
以下示例显示了具有以下特征的请求:
- 提示在
articles
表的body
列中输入文本摘要。 - 将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .05 AS TEMPERATURE, TRUE AS flatten_json_output));
示例 2
以下示例显示了具有以下特征的请求:
- 通过将提供提示前缀的字符串与表列串联起来,使用查询创建提示数据。
- 返回简短回答。
- 不会将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, .1 AS TEMPERATURE, 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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_K
:[1,40]
范围内的一个INT64
值,用于确定模型考虑选择的初始词元池。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。 默认值为40
。TOP_P
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 默认值为0.95
。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。STOP_SEQUENCES
:一个ARRAY<STRING>
值,如果模型的回答中包含指定的字符串,则用于移除这些字符串。字符串需要完全匹配,包括大小写。默认值为空数组。
示例 1
以下示例显示了具有以下特征的请求:
- 提示在
articles
表的body
列中输入文本摘要。 - 将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .05 AS TEMPERATURE, TRUE AS flatten_json_output));
示例 2
以下示例显示了具有以下特征的请求:
- 通过将提供提示前缀的字符串与表列串联起来,使用查询创建提示数据。
- 返回简短回答。
- 不会将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, .1 AS TEMPERATURE, 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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_K
:[1,40]
范围内的一个INT64
值,用于确定模型考虑选择的初始词元池。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。 默认值为40
。TOP_P
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 默认值为0.95
。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。STOP_SEQUENCES
:一个ARRAY<STRING>
值,如果模型的回答中包含指定的字符串,则用于移除这些字符串。字符串需要完全匹配,包括大小写。默认值为空数组。
示例 1
以下示例显示了具有以下特征的请求:
- 提示在
articles
表的body
列中输入文本摘要。 - 将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( .05 AS TEMPERATURE, TRUE AS flatten_json_output));
示例 2
以下示例显示了具有以下特征的请求:
- 通过将提供提示前缀的字符串与表列串联起来,使用查询创建提示数据。
- 返回简短回答。
- 不会将模型的 JSON 回答解析为单独的列。
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 100 AS max_output_tokens, .1 AS TEMPERATURE, FALSE AS flatten_json_output));
根据对象表数据生成文本
将 ML.GENERATE_TEXT
函数与远程模型结合使用,使用对象表提供要分析的内容,并在 prompt
参数中提供提示数据来生成文本:
gemini-2.0-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
函数,您必须在存储桶级层将 Storage Admin 角色授予service-A@gcp-sa-aiplatform.iam.gserviceaccount.com
服务账号。PROMPT
:用于分析内容的提示。TOKENS
:一个INT64
值,用于设置回答中可生成的词元数上限。 此值必须在范围[1,8192]
内。 指定较低的值可获得较短的回答,指定较高的值可获得较长的回答。 默认为128
。TEMPERATURE
:一个FLOAT64
值,用于控制 token 选择的随机程度。temperature
值必须大于0.0
,并且小于或等于1.0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性回答的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。TOP_P
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 默认值为0.95
。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。STOP_SEQUENCES
:一个ARRAY<STRING>
值,如果模型的回答中包含指定的字符串,则用于移除这些字符串。字符串需要完全匹配,包括大小写。默认值为空数组。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
示例
以下示例会翻译和转写名为 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, .01 AS TEMPERATURE, 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, .5 AS TEMPERATURE, TRUE AS FLATTEN_JSON_OUTPUT));
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
函数,您必须在存储桶级层将 Storage Admin 角色授予service-A@gcp-sa-aiplatform.iam.gserviceaccount.com
服务账号。PROMPT
:用于分析内容的提示。TOKENS
:一个INT64
值,用于设置回答中可生成的词元数上限。 此值必须在范围[1,8192]
内。 指定较低的值可获得较短的回答,指定较高的值可获得较长的回答。 默认为128
。TEMPERATURE
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
1.0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_P
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 默认值为0.95
。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。STOP_SEQUENCES
:一个ARRAY<STRING>
值,如果模型的回答中包含指定的字符串,则用于移除这些字符串。字符串需要完全匹配,包括大小写。默认值为空数组。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
示例
以下示例会翻译和转写名为 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
函数,您必须在存储桶级层将 Storage Admin 角色授予service-A@gcp-sa-aiplatform.iam.gserviceaccount.com
服务账号。PROMPT
:用于分析内容的提示。TOKENS
:一个INT64
值,用于设置回答中可生成的词元数上限。 此值必须在范围[1,8192]
内。 指定较低的值可获得较短的回答,指定较高的值可获得较长的回答。 默认为128
。TEMPERATURE
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
1.0
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_P
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 默认值为0.95
。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。STOP_SEQUENCES
:一个ARRAY<STRING>
值,如果模型的回答中包含指定的字符串,则用于移除这些字符串。字符串需要完全匹配,包括大小写。默认值为空数组。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
示例
以下示例会翻译和转写名为 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
函数,您必须在存储桶级层将 Storage Admin 角色授予service-A@gcp-sa-aiplatform.iam.gserviceaccount.com
服务账号。PROMPT
:用于分析内容的提示。TOKENS
:一个INT64
值,用于设置回答中可生成的词元数上限。 此值必须在范围[1,2048]
内。 指定较低的值可获得较短的回答,指定较高的值可获得较长的回答。 默认为2048
。TEMPERATURE
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制 token 选择的随机程度。默认为
0.4
。较低的
temperature
值适合需要更具确定性和较少开放性或创造性响应的提示,而较高的temperature
值可以产生更具多样性或创造性的结果。temperature
的值为0
表示确定性,即始终选择概率最高的回答。TOP_K
:[1,40]
范围内的一个INT64
值,用于确定模型考虑选择的初始词元池。指定较低的值可获得随机程度较低的响应,指定较高的值可获得随机程度较高的响应。 默认值为32
。TOP_P
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 默认值为0.95
。FLATTEN_JSON
:一个BOOL
值,用于确定是否在单独的列中返回生成的文本和安全属性。默认值为FALSE
。STOP_SEQUENCES
:一个ARRAY<STRING>
值,如果模型的回答中包含指定的字符串,则用于移除这些字符串。字符串需要完全匹配,包括大小写。默认值为空数组。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
示例
以下示例会分析名为 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));