使用 ML.GENERATE_TEXT 函数生成文本
本文档介绍了如何创建表示托管式 Vertex AI 模型的 BigQuery ML 远程模型。托管式 Vertex AI 模型可以是内置 Vertex AI 文本或多模态模型,也可以是 Anthropic Claude 模型。然后,您可以根据所选的 Vertex AI 模型,使用 ML.GENERATE_TEXT
函数分析对象表中的非结构化数据或标准表中的文本。
所需权限
如需创建连接,您需要拥有以下 Identity and Access Management (IAM) 角色的成员资格:
roles/bigquery.connectionAdmin
如需向连接的服务账号授予权限,您需要以下权限:
resourcemanager.projects.setIamPolicy
如需使用 BigQuery ML 创建模型,您需要以下 IAM 权限:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
如需运行推理,您需要以下权限:
- 表的
bigquery.tables.getData
权限 - 模型的
bigquery.models.getData
权限 bigquery.jobs.create
- 表的
准备工作
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
创建连接
创建 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
将以下部分附加到 main.tf
文件中。
## This creates a cloud resource connection. ## Note: The cloud resource nested object has only one output only field - serviceAccountId. resource "google_bigquery_connection" "connection" { connection_id = "CONNECTION_ID" project = "PROJECT_ID" location = "REGION" cloud_resource {} }
CONNECTION_ID
:您的连接的 IDPROJECT_ID
:您的 Google Cloud 项目 IDREGION
:您的连接区域
向服务账号授予访问权限
向连接的服务账号授予 Vertex AI 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 模型
只有在使用 Claude 模型时,才需要执行此步骤。
在 Google Cloud 控制台中,前往 Vertex AI Model Garden 页面。
搜索或浏览要使用的 Claude 模型。
点击模型卡片。
在模型页面上,点击启用。
填写要求的启用信息,然后点击下一步。
在条款及条件部分,选中相应复选框。
点击同意以同意条款及条件,并启用该模型。
创建 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 = 'ENDPOINT');
替换以下内容:
PROJECT_ID
:您的项目 IDDATASET_ID
:包含模型的数据集的 ID。 此数据集必须与您使用的连接位于同一位置MODEL_NAME
:模型的名称REGION
:连接使用的区域CONNECTION_ID
:BigQuery 连接的 ID当您在 Google Cloud 控制台中查看连接详情时,它是连接 ID 中显示的完全限定连接 ID 的最后一部分中的值,例如
projects/myproject/locations/connection_location/connections/myconnection
ENDPOINT
:要使用的受支持的 Vertex AI 模型的名称。
使用表中的提示根据文本数据生成文本
将 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
:范围[0.0,2.0]
内的一个FLOAT64
值,用于控制词元选择的随机程度。默认值为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.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
:范围[0.0,2.0]
内的一个FLOAT64
值,用于控制词元选择的随机程度。默认值为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.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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制词元选择的随机程度。默认值为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
列用于提示。 - 分列返回生成的文本和安全属性。
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
值,用于控制词元选择的随机程度。默认值为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
列用于提示。 - 分列返回生成的文本和安全属性。
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
值,用于控制词元选择的随机程度。默认值为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
列用于提示。 - 分列返回生成的文本和安全属性。
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
值,用于控制词元选择的随机程度。默认值为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
列用于提示。 - 分列返回生成的文本和安全属性。
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
:范围[0.0,2.0]
内的一个FLOAT64
值,用于控制词元选择的随机程度。默认值为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.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
:范围[0.0,2.0]
内的一个FLOAT64
值,用于控制词元选择的随机程度。默认值为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.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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制词元选择的随机程度。默认值为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
列中输入文本摘要。 - 分列返回生成的文本和安全属性。
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 响应展平为单独的列。
- 检索并返回公开 Web 数据以建立回答依据
- 使用两项安全设置过滤掉不安全的回答。
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于确定所选词元的概率。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。 如果您未指定值,模型会确定合适的值。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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制词元选择的随机程度。默认值为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
列中输入文本摘要。 - 分列返回生成的文本和安全属性。
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制词元选择的随机程度。默认值为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
列中输入文本摘要。 - 分列返回生成的文本和安全属性。
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
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制词元选择的随机程度。默认值为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
列中输入文本摘要。 - 分列返回生成的文本和安全属性。
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
函数,您必须在存储桶级层将 Storage Admin 角色授予service-A@gcp-sa-aiplatform.iam.gserviceaccount.com
服务账号。PROMPT
:用于分析内容的提示。TOKENS
:一个INT64
值,用于设置回答中可生成的词元数上限。 此值必须在范围[1,8192]
内。 指定较低的值可获得较短的回答,指定较高的值可获得较长的回答。 默认值为128
。TEMPERATURE
:范围[0.0,2.0]
内的一个FLOAT64
值,用于控制词元选择的随机程度。默认值为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
示例
以下示例会分析名为 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
函数,您必须在存储桶级层将 Storage Admin 角色授予service-A@gcp-sa-aiplatform.iam.gserviceaccount.com
服务账号。PROMPT
:用于分析内容的提示。TOKENS
:一个INT64
值,用于设置回答中可生成的词元数上限。 此值必须在范围[1,8192]
内。 指定较低的值可获得较短的回答,指定较高的值可获得较长的回答。 默认值为128
。TEMPERATURE
:范围[0.0,2.0]
内的一个FLOAT64
值,用于控制词元选择的随机程度。默认值为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
示例
以下示例会分析名为 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
函数,您必须在存储桶级层将 Storage Admin 角色授予service-A@gcp-sa-aiplatform.iam.gserviceaccount.com
服务账号。PROMPT
:用于分析内容的提示。TOKENS
:一个INT64
值,用于设置回答中可生成的词元数上限。 此值必须在范围[1,2048]
内。 指定较低的值可获得较短的回答,指定较高的值可获得较长的回答。 默认值为2048
。TEMPERATURE
:范围[0.0,1.0]
内的一个FLOAT64
值,用于控制词元选择的随机程度。默认值为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));