Gerar texto usando a função ML.GENERATE_TEXT
Neste documento, mostramos como criar um modelo remoto
do BigQuery ML
que representa um modelo hospedado da Vertex AI. O modelo hospedado da Vertex AI pode ser um
modelo de texto ou multimodal integrado da Vertex AI,
ou um
modelo Anthropic Claude.
Dependendo do modelo da Vertex AI escolhido, é possível
usar a
função ML.GENERATE_TEXT
para analisar dados não estruturados em
tabelas de objetos ou texto em
tabelas padrão.
Permissões necessárias
Para criar uma conexão, você precisa da associação no seguinte papel do Identity and Access Management (IAM):
roles/bigquery.connectionAdmin
Para conceder permissões à conta de serviço da conexão, você precisa da seguinte permissão:
resourcemanager.projects.setIamPolicy
Para criar o modelo usando o BigQuery ML, você precisa das seguintes permissões do IAM:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Para executar a inferência, você precisa das seguintes permissões:
bigquery.tables.getData
na tabelabigquery.models.getData
no modelobigquery.jobs.create
Antes de começar
-
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.
Crie uma conexão
Crie uma Conexão de recursos do Cloud e tenha acesso à conta de serviço da conexão.
Selecione uma das seguintes opções:
Console
Acessar a página do BigQuery.
Para criar uma conexão, clique em
Adicionar e em Conexões com fontes de dados externas.Na lista Tipo de conexão, selecione Modelos remotos da Vertex AI, funções remotas e BigLake (Cloud Resource).
No campo ID da conexão, insira um nome para a conexão.
Clique em Criar conexão.
Clique em Ir para conexão.
No painel Informações da conexão, copie o ID da conta de serviço para uso em uma etapa posterior.
bq
Em um ambiente de linha de comando, crie uma conexão:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
O parâmetro
--project_id
substitui o projeto padrão.Substitua:
REGION
: sua região de conexãoPROJECT_ID
: o ID do projeto do Google CloudCONNECTION_ID
: um ID para sua conexão
Quando você cria um recurso de conexão, o BigQuery cria uma conta de serviço do sistema exclusiva e a associa à conexão.
Solução de problemas: se você receber o seguinte erro de conexão, atualize o SDK Google Cloud:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Recupere e copie o ID da conta de serviço para uso em uma etapa posterior:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
O resultado será assim:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Anexe a seguinte seção ao seu arquivo 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
: um ID para sua conexãoPROJECT_ID
: o ID do projeto do Google CloudREGION
: sua região de conexão
Conceder acesso à conta de serviço
Conceda à conta de serviço da conexão a função de usuário da Vertex AI.
Se você planeja especificar o endpoint como um URL ao criar o modelo remoto, por exemplo, endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/text-embedding-004'
, conceda essa função no mesmo projeto especificado no URL.
Se você planeja especificar o endpoint usando o nome do modelo ao criar o modelo remoto, por exemplo, endpoint = 'text-embedding-004'
, conceda esse papel no mesmo projeto em que planeja criar o modelo remoto.
Conceder o papel em um projeto diferente resulta no erro bqcx-1234567890-xxxx@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource
.
Para conceder o papel, siga estas etapas:
Console
Acesse a página IAM e administrador.
Clique em
Adicionar.A caixa de diálogo Adicionar principais é aberta.
No campo Novos principais, digite o ID da conta de serviço que você copiou anteriormente.
No campo Selecionar um papel, selecione Vertex AI e, em seguida, selecione Usuário da Vertex AI.
Clique em Salvar.
gcloud
Use o
comando gcloud projects add-iam-policy-binding
.
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None
Substitua:
PROJECT_NUMBER
: o ID do seu projetoMEMBER
: o ID da conta de serviço que você copiou anteriormente
Ativar o modelo da Vertex AI
Esta etapa só será necessária se você estiver usando um modelo Claude.
No console do Google Cloud, acesse a página Model Garden da Vertex AI.
Pesquise ou procure o modelo do Claude que você quer usar.
Clique no card de modelo.
Na página do modelo, clique em Ativar.
Preencha as informações de ativação solicitadas e clique em Avançar.
Na seção Termos e condições, marque a caixa de seleção.
Clique em Concordar para aceitar os Termos e Condições e ativar o modelo.
Criar um modelo remoto do BigQuery ML
No Console do Google Cloud, acesse a página BigQuery.
Usando o editor de SQL, crie um modelo remoto:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS (ENDPOINT = 'ENDPOINT');
Substitua:
PROJECT_ID
: ID do projeto;DATASET_ID
: o ID do conjunto de dados para conter o modelo. Esse conjunto de dados precisa estar no mesmo local que a conexão que você está usando.MODEL_NAME
: o nome do modeloREGION
: a região usada pela conexãoCONNECTION_ID
: o ID da conexão do BigQueryQuando você visualiza os detalhes da conexão no console do Google Cloud, esse é o valor na última seção do ID da conexão totalmente qualificado, mostrado em ID da conexão, por exemplo,
projects/myproject/locations/connection_location/connections/myconnection
ENDPOINT
: o nome do modelo compatível da Vertex AI que será usado.Em alguns tipos de modelos, é possível especificar uma versão específica do modelo. Para mais informações sobre as versões de modelo compatíveis para diferentes tipos de modelo, consulte
ENDPOINT
.
Gerar texto de dados de texto usando um comando de uma tabela
Gere texto usando a
função ML.GENERATE_TEXT
com um modelo remoto e usando dados de comando de uma coluna da tabela:
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) );
Substitua:
PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloTABLE_NAME
: o nome da tabela que contém o comando. Essa tabela precisa ter uma tabela chamadaprompt
ou é possível utilizar um alias para usar uma coluna com um nome diferente.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,8192]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,2.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.GROUND_WITH_GOOGLE_SEARCH
: um valor deBOOL
que determina se o modelo da Vertex AI usa o Embasamento com a Pesquisa Google ao gerar respostas. O embasamento permite que o modelo use informações adicionais da Internet ao gerar uma resposta para torná-las mais específicas e factuais. Quandoflatten_json_output
e esse campo são definidos comoTrue
, uma colunaml_generate_text_grounding_result
extra é incluída nos resultados, fornecendo as fontes usadas pelo modelo para coletar mais informações.FALSE
é o padrão.SAFETY_SETTINGS
: um valor deARRAY<STRUCT<STRING AS category, STRING AS threshold>>
que configura limites de segurança de conteúdo para filtrar respostas. O primeiro elemento no struct especifica uma categoria de dano, e o segundo especifica um limite de bloqueio correspondente. O modelo filtra o conteúdo que viola essas configurações. Só é possível especificar cada categoria uma vez. Por exemplo, não é possível especificarSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
eSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
ao mesmo tempo. Se não houver uma configuração de segurança para uma determinada categoria, a configuração de segurançaBLOCK_MEDIUM_AND_ABOVE
será usada.As categorias compatíveis são as seguintes:
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
Os limites aceitos são os seguintes:
BLOCK_NONE
(Restrito)BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
(padrão)BLOCK_ONLY_HIGH
HARM_BLOCK_THRESHOLD_UNSPECIFIED
Para mais informações, consulte a definição de categoria de segurança e de limite de bloqueio.
Exemplo
O exemplo a seguir mostra uma solicitação com estas características:
- Usa a coluna
prompt
da tabelaprompts
para a solicitação. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
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) );
Substitua:
PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloTABLE_NAME
: o nome da tabela que contém o comando. Essa tabela precisa ter uma tabela chamadaprompt
ou é possível utilizar um alias para usar uma coluna com um nome diferente.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,8192]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,2.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.GROUND_WITH_GOOGLE_SEARCH
: um valor deBOOL
que determina se o modelo da Vertex AI usa o Embasamento com a Pesquisa Google ao gerar respostas. O embasamento permite que o modelo use informações adicionais da Internet ao gerar uma resposta para torná-las mais específicas e factuais. Quandoflatten_json_output
e esse campo são definidos comoTrue
, uma colunaml_generate_text_grounding_result
extra é incluída nos resultados, fornecendo as fontes usadas pelo modelo para coletar mais informações.FALSE
é o padrão.SAFETY_SETTINGS
: um valor deARRAY<STRUCT<STRING AS category, STRING AS threshold>>
que configura limites de segurança de conteúdo para filtrar respostas. O primeiro elemento no struct especifica uma categoria de dano, e o segundo especifica um limite de bloqueio correspondente. O modelo filtra o conteúdo que viola essas configurações. Só é possível especificar cada categoria uma vez. Por exemplo, não é possível especificarSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
eSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
ao mesmo tempo. Se não houver uma configuração de segurança para uma determinada categoria, a configuração de segurançaBLOCK_MEDIUM_AND_ABOVE
será usada.As categorias compatíveis são as seguintes:
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
Os limites aceitos são os seguintes:
BLOCK_NONE
(Restrito)BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
(padrão)BLOCK_ONLY_HIGH
HARM_BLOCK_THRESHOLD_UNSPECIFIED
Para mais informações, consulte a definição de categoria de segurança e de limite de bloqueio.
Exemplo
O exemplo a seguir mostra uma solicitação com estas características:
- Usa a coluna
prompt
da tabelaprompts
para a solicitação. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
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) );
Substitua:
PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloTABLE_NAME
: o nome da tabela que contém o comando. Essa tabela precisa ter uma tabela chamadaprompt
ou é possível utilizar um alias para usar uma coluna com um nome diferente.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,8192]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,1.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_K
: um valorINT64
no intervalo[1,40]
que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é40
.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.GROUND_WITH_GOOGLE_SEARCH
: um valor deBOOL
que determina se o modelo da Vertex AI usa o Embasamento com a Pesquisa Google ao gerar respostas. O embasamento permite que o modelo use informações adicionais da Internet ao gerar uma resposta para torná-las mais específicas e factuais. Quandoflatten_json_output
e esse campo são definidos comoTrue
, uma colunaml_generate_text_grounding_result
extra é incluída nos resultados, fornecendo as fontes usadas pelo modelo para coletar mais informações.FALSE
é o padrão.SAFETY_SETTINGS
: um valor deARRAY<STRUCT<STRING AS category, STRING AS threshold>>
que configura limites de segurança de conteúdo para filtrar respostas. O primeiro elemento no struct especifica uma categoria de dano, e o segundo especifica um limite de bloqueio correspondente. O modelo filtra o conteúdo que viola essas configurações. Só é possível especificar cada categoria uma vez. Por exemplo, não é possível especificarSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
eSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
ao mesmo tempo. Se não houver uma configuração de segurança para uma determinada categoria, a configuração de segurançaBLOCK_MEDIUM_AND_ABOVE
será usada.As categorias compatíveis são as seguintes:
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
Os limites aceitos são os seguintes:
BLOCK_NONE
(Restrito)BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
(padrão)BLOCK_ONLY_HIGH
HARM_BLOCK_THRESHOLD_UNSPECIFIED
Para mais informações, consulte a definição de categoria de segurança e de limite de bloqueio.
Exemplo
O exemplo a seguir mostra uma solicitação com estas características:
- Usa a coluna
prompt
da tabelaprompts
para a solicitação. - Ela retorna uma resposta curta e moderadamente provável:
- Nivela a resposta JSON em colunas separadas.
- Recupera e retorna dados públicos da Web para embasamento de resposta.
- Filtra respostas não seguras usando duas configurações de segurança.
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) );
Substitua:
PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloTABLE_NAME
: o nome da tabela que contém o comando. Essa tabela precisa ter uma tabela chamadaprompt
ou é possível utilizar um alias para usar uma coluna com um nome diferente.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,4096]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TOP_K
: um valorINT64
no intervalo[1,40]
que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. Se você não especificar um valor, o modelo vai determinar um valor apropriado.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. Se você não especificar um valor, o modelo vai determinar um valor apropriado.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.
Exemplo
O exemplo a seguir mostra uma solicitação com estas características:
- Usa a coluna
prompt
da tabelaprompts
para a solicitação. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
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) );
Substitua:
PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloTABLE_NAME
: o nome da tabela que contém o comando. Essa tabela precisa ter uma tabela chamadaprompt
ou é possível utilizar um alias para usar uma coluna com um nome diferente.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,1024]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,1.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_K
: um valorINT64
no intervalo[1,40]
que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é40
.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.
Exemplo
O exemplo a seguir mostra uma solicitação com estas características:
- Usa a coluna
prompt
da tabelaprompts
para a solicitação. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
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) );
Substitua:
PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloTABLE_NAME
: o nome da tabela que contém o comando. Essa tabela precisa ter uma tabela chamadaprompt
ou é possível utilizar um alias para usar uma coluna com um nome diferente.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,8192]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,1.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_K
: um valorINT64
no intervalo[1,40]
que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é40
.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.
Exemplo
O exemplo a seguir mostra uma solicitação com estas características:
- Usa a coluna
prompt
da tabelaprompts
para a solicitação. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
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) );
Substitua:
PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloTABLE_NAME
: o nome da tabela que contém o comando. Essa tabela precisa ter uma tabela chamadaprompt
ou é possível utilizar um alias para usar uma coluna com um nome diferente.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,1024]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,1.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_K
: um valorINT64
no intervalo[1,40]
que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é40
.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.
Exemplo
O exemplo a seguir mostra uma solicitação com estas características:
- Usa a coluna
prompt
da tabelaprompts
para a solicitação. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.text_model`, TABLE mydataset.prompts, STRUCT(TRUE AS flatten_json_output));
Gerar texto de dados de texto usando um comando de uma consulta
Gere texto usando a
função ML.GENERATE_TEXT
com um modelo remoto e uma consulta que forneça os dados do comando:
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
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloPROMPT_QUERY
: uma consulta que fornece os dados do comando.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,8192]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,2.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.GROUND_WITH_GOOGLE_SEARCH
: um valor deBOOL
que determina se o modelo da Vertex AI usa o Embasamento com a Pesquisa Google ao gerar respostas. O embasamento permite que o modelo use informações adicionais da Internet ao gerar uma resposta para torná-las mais específicas e factuais. Quandoflatten_json_output
e esse campo são definidos comoTrue
, uma colunaml_generate_text_grounding_result
extra é incluída nos resultados, fornecendo as fontes usadas pelo modelo para coletar mais informações.FALSE
é o padrão.SAFETY_SETTINGS
: um valor deARRAY<STRUCT<STRING AS category, STRING AS threshold>>
que configura limites de segurança de conteúdo para filtrar respostas. O primeiro elemento no struct especifica uma categoria de dano, e o segundo especifica um limite de bloqueio correspondente. O modelo filtra o conteúdo que viola essas configurações. Só é possível especificar cada categoria uma vez. Por exemplo, não é possível especificarSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
eSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
ao mesmo tempo. Se não houver uma configuração de segurança para uma determinada categoria, a configuração de segurançaBLOCK_MEDIUM_AND_ABOVE
será usada.As categorias compatíveis são as seguintes:
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
Os limites aceitos são os seguintes:
BLOCK_NONE
(Restrito)BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
(padrão)BLOCK_ONLY_HIGH
HARM_BLOCK_THRESHOLD_UNSPECIFIED
Para mais informações, consulte a definição de categoria de segurança e de limite de bloqueio.
Exemplo 1
O exemplo a seguir mostra uma solicitação com estas características:
- Solicita um resumo do texto na coluna
body
da tabelaarticles
. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
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));
Exemplo 2
O exemplo a seguir mostra uma solicitação com estas características:
- Usa uma consulta para criar os dados do prompt, concatenando as strings que fornecem prefixos do prompt com as colunas da tabela.
- Retorna uma resposta curta.
- Não retorna o texto gerado e os atributos de segurança em colunas separadas.
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
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloPROMPT_QUERY
: uma consulta que fornece os dados do comando.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,8192]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,2.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.GROUND_WITH_GOOGLE_SEARCH
: um valor deBOOL
que determina se o modelo da Vertex AI usa o Embasamento com a Pesquisa Google ao gerar respostas. O embasamento permite que o modelo use informações adicionais da Internet ao gerar uma resposta para torná-las mais específicas e factuais. Quandoflatten_json_output
e esse campo são definidos comoTrue
, uma colunaml_generate_text_grounding_result
extra é incluída nos resultados, fornecendo as fontes usadas pelo modelo para coletar mais informações.FALSE
é o padrão.SAFETY_SETTINGS
: um valor deARRAY<STRUCT<STRING AS category, STRING AS threshold>>
que configura limites de segurança de conteúdo para filtrar respostas. O primeiro elemento no struct especifica uma categoria de dano, e o segundo especifica um limite de bloqueio correspondente. O modelo filtra o conteúdo que viola essas configurações. Só é possível especificar cada categoria uma vez. Por exemplo, não é possível especificarSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
eSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
ao mesmo tempo. Se não houver uma configuração de segurança para uma determinada categoria, a configuração de segurançaBLOCK_MEDIUM_AND_ABOVE
será usada.As categorias compatíveis são as seguintes:
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
Os limites aceitos são os seguintes:
BLOCK_NONE
(Restrito)BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
(padrão)BLOCK_ONLY_HIGH
HARM_BLOCK_THRESHOLD_UNSPECIFIED
Para mais informações, consulte a definição de categoria de segurança e de limite de bloqueio.
Exemplo 1
O exemplo a seguir mostra uma solicitação com estas características:
- Solicita um resumo do texto na coluna
body
da tabelaarticles
. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
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));
Exemplo 2
O exemplo a seguir mostra uma solicitação com estas características:
- Usa uma consulta para criar os dados do prompt, concatenando as strings que fornecem prefixos do prompt com as colunas da tabela.
- Retorna uma resposta curta.
- Não retorna o texto gerado e os atributos de segurança em colunas separadas.
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
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloPROMPT_QUERY
: uma consulta que fornece os dados do comando.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,8192]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,1.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_K
: um valorINT64
no intervalo[1,40]
que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é40
.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.GROUND_WITH_GOOGLE_SEARCH
: um valor deBOOL
que determina se o modelo da Vertex AI usa o Embasamento com a Pesquisa Google ao gerar respostas. O embasamento permite que o modelo use informações adicionais da Internet ao gerar uma resposta para torná-las mais específicas e factuais. Quandoflatten_json_output
e esse campo são definidos comoTrue
, uma colunaml_generate_text_grounding_result
extra é incluída nos resultados, fornecendo as fontes usadas pelo modelo para coletar mais informações.FALSE
é o padrão.SAFETY_SETTINGS
: um valor deARRAY<STRUCT<STRING AS category, STRING AS threshold>>
que configura limites de segurança de conteúdo para filtrar respostas. O primeiro elemento no struct especifica uma categoria de dano, e o segundo especifica um limite de bloqueio correspondente. O modelo filtra o conteúdo que viola essas configurações. Só é possível especificar cada categoria uma vez. Por exemplo, não é possível especificarSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
eSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
ao mesmo tempo. Se não houver uma configuração de segurança para uma determinada categoria, a configuração de segurançaBLOCK_MEDIUM_AND_ABOVE
será usada.As categorias compatíveis são as seguintes:
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
Os limites aceitos são os seguintes:
BLOCK_NONE
(Restrito)BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
(padrão)BLOCK_ONLY_HIGH
HARM_BLOCK_THRESHOLD_UNSPECIFIED
Para mais informações, consulte a definição de categoria de segurança e de limite de bloqueio.
Exemplo 1
O exemplo a seguir mostra uma solicitação com estas características:
- Solicita um resumo do texto na coluna
body
da tabelaarticles
. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
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));
Exemplo 2
O exemplo a seguir mostra uma solicitação com estas características:
- Usa uma consulta para criar os dados do prompt, concatenando as strings que fornecem prefixos do prompt com as colunas da tabela.
- Retorna uma resposta curta.
- Não retorna o texto gerado e os atributos de segurança em colunas separadas.
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));
Exemplo 3
O exemplo a seguir mostra uma solicitação com estas características:
- Solicita um resumo do texto na coluna
body
da tabelaarticles
. - Nivela a resposta JSON em colunas separadas.
- Recupera e retorna dados públicos da Web para embasamento de resposta.
- Filtra respostas não seguras usando duas configurações de segurança.
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
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloPROMPT_QUERY
: uma consulta que fornece os dados do comando.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,4096]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TOP_K
: um valorINT64
no intervalo[1,40]
que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. Se você não especificar um valor, o modelo vai determinar um valor apropriado.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. Se você não especificar um valor, o modelo vai determinar um valor apropriado.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.
Exemplo 1
O exemplo a seguir mostra uma solicitação com estas características:
- Solicita um resumo do texto na coluna
body
da tabelaarticles
. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
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));
Exemplo 2
O exemplo a seguir mostra uma solicitação com estas características:
- Usa uma consulta para criar os dados do prompt, concatenando as strings que fornecem prefixos do prompt com as colunas da tabela.
- Retorna uma resposta curta.
- Não retorna o texto gerado e os atributos de segurança em colunas separadas.
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
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloPROMPT_QUERY
: uma consulta que fornece os dados do comando.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,1024]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,1.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_K
: um valorINT64
no intervalo[1,40]
que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é40
.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.
Exemplo 1
O exemplo a seguir mostra uma solicitação com estas características:
- Solicita um resumo do texto na coluna
body
da tabelaarticles
. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
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));
Exemplo 2
O exemplo a seguir mostra uma solicitação com estas características:
- Usa uma consulta para criar os dados do prompt, concatenando as strings que fornecem prefixos do prompt com as colunas da tabela.
- Retorna uma resposta curta.
- Não retorna o texto gerado e os atributos de segurança em colunas separadas.
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
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloPROMPT_QUERY
: uma consulta que fornece os dados do comando.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,8192]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,1.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_K
: um valorINT64
no intervalo[1,40]
que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é40
.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.
Exemplo 1
O exemplo a seguir mostra uma solicitação com estas características:
- Solicita um resumo do texto na coluna
body
da tabelaarticles
. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
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));
Exemplo 2
O exemplo a seguir mostra uma solicitação com estas características:
- Usa uma consulta para criar os dados do prompt, concatenando as strings que fornecem prefixos do prompt com as colunas da tabela.
- Retorna uma resposta curta.
- Não retorna o texto gerado e os atributos de segurança em colunas separadas.
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
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloPROMPT_QUERY
: uma consulta que fornece os dados do comando.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,1024]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,1.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_K
: um valorINT64
no intervalo[1,40]
que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é40
.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.
Exemplo 1
O exemplo a seguir mostra uma solicitação com estas características:
- Solicita um resumo do texto na coluna
body
da tabelaarticles
. - Retorna o texto gerado e os atributos de segurança em colunas separadas.
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));
Exemplo 2
O exemplo a seguir mostra uma solicitação com estas características:
- Usa uma consulta para criar os dados do prompt, concatenando as strings que fornecem prefixos do prompt com as colunas da tabela.
- Retorna uma resposta curta.
- Não retorna o texto gerado e os atributos de segurança em colunas separadas.
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));
Gerar texto usando dados da tabela de objetos
Gere texto com a
função ML.GENERATE_TEXT
com um modelo remoto, usando uma tabela de objetos para fornecer o conteúdo a ser analisado
e informando os dados do comando no parâmetro 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) );
Substitua:
PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloTABLE_NAME
: o nome da tabela de objetos que contém o conteúdo a ser analisado. Para saber mais sobre os tipos de conteúdo que podem ser analisados, consulte Entrada.O bucket do Cloud Storage usado pela tabela de objetos precisa estar no mesmo projeto em que você criou o modelo e em que está chamando a função
ML.GENERATE_TEXT
. Se você quiser chamar a funçãoML.GENERATE_TEXT
em um projeto diferente que contém o bucket do Cloud Storage usado pela tabela de objetos, é preciso conceder o papel de Administrador do Storage no nível do bucket para a conta de serviçoservice-A@gcp-sa-aiplatform.iam.gserviceaccount.com
.PROMPT
: o comando a ser usado para analisar o conteúdo.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,8192]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,2.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.SAFETY_SETTINGS
: um valor deARRAY<STRUCT<STRING AS category, STRING AS threshold>>
que configura limites de segurança de conteúdo para filtrar respostas. O primeiro elemento no struct especifica uma categoria de dano, e o segundo especifica um limite de bloqueio correspondente. O modelo filtra o conteúdo que viola essas configurações. Só é possível especificar cada categoria uma vez. Por exemplo, não é possível especificarSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
eSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
ao mesmo tempo. Se não houver uma configuração de segurança para uma determinada categoria, a configuração de segurançaBLOCK_MEDIUM_AND_ABOVE
será usada.As categorias compatíveis são as seguintes:
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
Os limites aceitos são os seguintes:
BLOCK_NONE
(Restrito)BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
(padrão)BLOCK_ONLY_HIGH
HARM_BLOCK_THRESHOLD_UNSPECIFIED
Para mais informações, consulte a definição de categoria de segurança e de limite de bloqueio.
Exemplos
Este exemplo analisa o conteúdo em vídeo de uma tabela de objetos chamada
videos
e descreve o conteúdo em cada vídeo:
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));
Este exemplo traduz e transcreve o conteúdo de áudio de uma tabela de objetos
chamada 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));
Neste exemplo, classificamos o conteúdo PDF de uma tabela de objetos
chamada invoices
:
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) );
Substitua:
PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloTABLE_NAME
: o nome da tabela de objetos que contém o conteúdo a ser analisado. Para saber mais sobre os tipos de conteúdo que podem ser analisados, consulte Entrada.O bucket do Cloud Storage usado pela tabela de objetos precisa estar no mesmo projeto em que você criou o modelo e em que está chamando a função
ML.GENERATE_TEXT
. Se você quiser chamar a funçãoML.GENERATE_TEXT
em um projeto diferente que contém o bucket do Cloud Storage usado pela tabela de objetos, é preciso conceder o papel de Administrador do Storage no nível do bucket para a conta de serviçoservice-A@gcp-sa-aiplatform.iam.gserviceaccount.com
.PROMPT
: o comando a ser usado para analisar o conteúdo.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,8192]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é128
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,2.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.SAFETY_SETTINGS
: um valor deARRAY<STRUCT<STRING AS category, STRING AS threshold>>
que configura limites de segurança de conteúdo para filtrar respostas. O primeiro elemento no struct especifica uma categoria de dano, e o segundo especifica um limite de bloqueio correspondente. O modelo filtra o conteúdo que viola essas configurações. Só é possível especificar cada categoria uma vez. Por exemplo, não é possível especificarSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
eSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
ao mesmo tempo. Se não houver uma configuração de segurança para uma determinada categoria, a configuração de segurançaBLOCK_MEDIUM_AND_ABOVE
será usada.As categorias compatíveis são as seguintes:
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
Os limites aceitos são os seguintes:
BLOCK_NONE
(Restrito)BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
(padrão)BLOCK_ONLY_HIGH
HARM_BLOCK_THRESHOLD_UNSPECIFIED
Para mais informações, consulte a definição de categoria de segurança e de limite de bloqueio.
Exemplos
Este exemplo analisa o conteúdo em vídeo de uma tabela de objetos chamada
videos
e descreve o conteúdo em cada vídeo:
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));
Este exemplo traduz e transcreve o conteúdo de áudio de uma tabela de objetos
chamada 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));
Neste exemplo, classificamos o conteúdo PDF de uma tabela de objetos
chamada invoices
:
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) );
Substitua:
PROJECT_ID
: o ID do projeto.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloTABLE_NAME
: o nome da tabela de objetos que contém o conteúdo a ser analisado. Para saber mais sobre os tipos de conteúdo que podem ser analisados, consulte Entrada.O bucket do Cloud Storage usado pela tabela de objetos precisa estar no mesmo projeto em que você criou o modelo e em que está chamando a função
ML.GENERATE_TEXT
. Se você quiser chamar a funçãoML.GENERATE_TEXT
em um projeto diferente que contém o bucket do Cloud Storage usado pela tabela de objetos, é preciso conceder o papel de Administrador do Storage no nível do bucket para a conta de serviçoservice-A@gcp-sa-aiplatform.iam.gserviceaccount.com
.PROMPT
: o comando a ser usado para analisar o conteúdo.TOKENS
: um valorINT64
que define o número máximo de tokens que podem ser gerados na resposta. Esse valor deve estar no intervalo[1,2048]
. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é2048
.TEMPERATURE
: um valorFLOAT64
no intervalo[0.0,1.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é0.4
.Valores mais baixos para
temperature
são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valores mais altos paratemperature
podem gerar resultados mais diversos ou criativos. Um valor de0
paratemperature
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.TOP_K
: um valorINT64
no intervalo[1,40]
que determina o pool inicial de tokens que o modelo considera para seleção. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é32
.TOP_P
: um valorFLOAT64
no intervalo[0.0,1.0]
ajuda a determinar a probabilidade dos tokens selecionados. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é0.95
.FLATTEN_JSON
: um valorBOOL
que determina se o texto gerado e os atributos de segurança serão retornados em colunas separadas. O padrão éFALSE
.STOP_SEQUENCES
: um valorARRAY<STRING>
que remove as strings especificadas se elas estiverem incluídas nas respostas do modelo. As strings têm correspondência exata, incluindo as letras maiúsculas. O padrão é uma matriz vazia.SAFETY_SETTINGS
: um valor deARRAY<STRUCT<STRING AS category, STRING AS threshold>>
que configura limites de segurança de conteúdo para filtrar respostas. O primeiro elemento no struct especifica uma categoria de dano, e o segundo especifica um limite de bloqueio correspondente. O modelo filtra o conteúdo que viola essas configurações. Só é possível especificar cada categoria uma vez. Por exemplo, não é possível especificarSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold)
eSTRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_ONLY_HIGH' AS threshold)
ao mesmo tempo. Se não houver uma configuração de segurança para uma determinada categoria, a configuração de segurançaBLOCK_MEDIUM_AND_ABOVE
será usada.As categorias compatíveis são as seguintes:
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
Os limites aceitos são os seguintes:
BLOCK_NONE
(Restrito)BLOCK_LOW_AND_ABOVE
BLOCK_MEDIUM_AND_ABOVE
(padrão)BLOCK_ONLY_HIGH
HARM_BLOCK_THRESHOLD_UNSPECIFIED
Para mais informações, consulte a definição de categoria de segurança e de limite de bloqueio.
Exemplos
Este exemplo analisa o conteúdo em vídeo de uma tabela de objetos chamada
videos
e descreve o conteúdo em cada vídeo:
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));