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.
É possível usar esse modelo com a função ML.GENERATE_TEXT
para analisar o conteúdo de texto ou visual em uma tabela do BigQuery.
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.
Se você quiser usar ML.GENERATE_TEXT
com um modelo gemini-pro-vision
para
analisar o conteúdo visual em uma tabela de objetos, precisará ter uma
reserva do Enterprise ou Enterprise Plus.
Para mais informações, consulte Criar reservas.
Criar 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
(em inglês).
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 anexando
@version
ao nome dele. Por exemplo,text-bison@001
. Para mais informações sobre as versões de modelo compatíveis para diferentes tipos de modelo, consulteENDPOINT
.
Gerar texto de dados de texto usando um comando de uma tabela
Gerar texto usando a
função ML.GENERATE_TEXT
com um modelo remoto baseado em um
modelo de texto compatível da API Vertex AI Gemini ou da API Vertex AI PaLM
e um prompt de uma coluna de tabela:
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 quais tokens do pool determinado porTOP_K
são 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. - Ela retorna uma resposta curta e moderadamente provável:
- 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, 0.5 AS top_p, 40 AS top_k, 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 quais tokens do pool determinado porTOP_K
são 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. - Ela retorna uma resposta curta e moderadamente provável:
- 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, 0.5 AS top_p, 40 AS top_k, 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 quais tokens do pool determinado porTOP_K
são 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. - Ela retorna uma resposta curta e moderadamente provável:
- 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, 0.5 AS top_p, 40 AS top_k, 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 quais tokens do pool determinado porTOP_K
são 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. - Ela retorna uma resposta curta e moderadamente provável:
- 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, 0.5 AS top_p, 40 AS top_k, TRUE AS flatten_json_output));
Gerar texto de dados de texto usando um comando de uma consulta
Gere texto usando a
ML.GENERATE_TEXT
função com um modelo remoto baseado em umAPI Gemini ou modelo de texto da API PaLM e uma consulta que fornece o prompt:
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 quais tokens do pool determinado porTOP_K
são 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 uma resposta moderadamente longa e mais provável.
- 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, 0.2 AS top_p, 15 AS top_k, 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.
- Ela retorna uma resposta curta e moderadamente provável:
- 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, 30 AS top_k, 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 quais tokens do pool determinado porTOP_K
são 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 uma resposta moderadamente longa e mais provável.
- 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, 0.2 AS top_p, 15 AS top_k, 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.
- Ela retorna uma resposta curta e moderadamente provável:
- 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, 30 AS top_k, 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 quais tokens do pool determinado porTOP_K
são 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 uma resposta moderadamente longa e mais provável.
- 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, 0.2 AS top_p, 15 AS top_k, 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.
- Ela retorna uma resposta curta e moderadamente provável:
- 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, 30 AS top_k, 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 quais tokens do pool determinado porTOP_K
são 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 uma resposta moderadamente longa e mais provável.
- 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, 0.2 AS top_p, 15 AS top_k, 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.
- Ela retorna uma resposta curta e moderadamente provável:
- 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, 30 AS top_k, FALSE AS flatten_json_output));
Gerar um texto que descreva o conteúdo visual
Gere texto usando a funçãoML.GENERATE_TEXT
com um modelo remoto baseado em um
modelo multimodal 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 visual a ser analisado. Para saber mais sobre os tipos de conteúdo visual que você pode analisar, consulte Conteúdo visual compatível.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 visual.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 quais tokens do pool determinado porTOP_K
são 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
Este exemplo analisa o conteúdo visual de uma tabela de objetos chamada
videos
e descreve o conteúdo em cada vídeo:
SELECT uri, ml_generate_text_llm_result FROM ML.GENERATE_TEXT( MODEL `mydataset.gemini_pro_vision_model` TABLE `mydataset.videos` STRUCT('What is happening in this video?' AS PROMPT, TRUE AS FLATTEN_JSON_OUTPUT));