Gerar texto usando a função ML.GENERATE_TEXT
Neste tutorial, mostramos como criar um
modelo remoto
do BigQuery ML
que faz referência ao modelo de fundação da Vertex AI.
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
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs BigQuery, BigQuery Connection, and Vertex AI.
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 {} }Substitua:
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 à sua conta de serviço a permissão para usar a conexão. Deixar de conceder a permissão resulta em erro. Selecione uma das seguintes opções:
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 Save.
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
Criar um modelo
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. Por exemplo,ENDPOINT='gemini-pro'
.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-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) );
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.
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.llm_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 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) );
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.llm_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 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.llm_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 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.llm_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 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.llm_model`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 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-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) );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 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.
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.llm_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( 0.2 AS temperature, 650 AS max_output_tokens, 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.llm_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, FALSE AS flatten_json_output));
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) );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 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.llm_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( 0.2 AS temperature, 650 AS max_output_tokens, 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.llm_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, FALSE AS flatten_json_output));
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) );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 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.llm_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( 0.2 AS temperature, 650 AS max_output_tokens, 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.llm_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, FALSE AS flatten_json_output));
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) );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 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.llm_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( 0.2 AS temperature, 650 AS max_output_tokens, 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.llm_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, FALSE AS flatten_json_output));
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) );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 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.llm_model`, ( SELECT CONCAT('Summarize this text', body) AS prompt FROM mydataset.articles ), STRUCT( 0.2 AS temperature, 650 AS max_output_tokens, 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.llm_model`, ( SELECT CONCAT(question, 'Text:', description, 'Category') AS prompt FROM mydataset.input_table ), STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, FALSE AS flatten_json_output));
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-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) );
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
.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.
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) );
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
.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.
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));