Função ML.GENERATE_TEXT
Neste documento, descrevemos a função ML.GENERATE_TEXT
, que permite executar tarefas generativas de linguagem natural em textos armazenados nas tabelas do BigQuery. Ela inclui as seguintes tarefas de linguagem de exemplo:
- Classificação
- Análise de sentimento
- Extração de entidade
- Respostas a perguntas extrativas
- Resumo
- Reescrita de texto em um estilo diferente
- Geração de texto do anúncio
- Ideia de conceito
A função envia solicitações para um modelo remoto do BigQuery ML que representa um dos modelos de fundação de linguagem natural text-bison*
(LLMs) da Vertex AI e, em seguida, retorna a resposta do LLM. Vários dos argumentos da função fornecem os parâmetros que moldam a resposta do LLM.
O parâmetro prompt
fornece o texto para o modelo analisar.
O desenvolvimento de comandos pode afetar muito as respostas retornadas pelo LLM. Para mais
informações, consulte
Projetar prompts de texto.
Sintaxe
ML.GENERATE_TEXT( MODEL `project_id.dataset.model`, { TABLE `project_id.dataset.table` | (query_statement) }, STRUCT( [number_of_output_tokens AS max_output_tokens] [, top_k_value AS top_k] [, top_p_value AS top_p] [, temperature AS temperature] [, flatten_json_output AS flatten_json_output]) )
Argumentos
ML.GENERATE_TEXT
usa os seguintes argumentos:
project_id
: o ID do projeto.dataset
: o conjunto de dados do BigQuery que contém o modelo.model
: o nome de um modelo remoto que usa um dos LLMstext-bison*
da Vertex AI. Para mais informações sobre como criar esse tipo de modelo remoto, consulteENDPOINT
.table
: o nome da tabela do BigQuery que contém os dados do prompt. O texto na coluna chamadaprompt
é enviado ao modelo. Se a tabela não tiver uma colunaprompt
, use uma instruçãoSELECT
desse argumento para fornecer um alias a uma coluna de tabela já existente. Se nenhuma colunaprompt
estiver disponível, ocorrerá um erro.query_statement
: a consulta GoogleSQL usada para gerar os dados do comando.max_output_tokens
é um valorINT64
no intervalo[1,1024]
que define o número máximo de tokens de saída do modelo. Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas mais longas. O padrão é50
.Um token pode ser menor do que uma palavra e ter aproximadamente quatro caracteres. 100 tokens correspondem a cerca de 60 a 80 palavras.
temperature
: é um valorFLOAT64
no intervalo[0.0,1.0]
usado para amostragem durante a geração da resposta, que ocorre quandotop_k
etop_p
são aplicados. Ele controla o grau de aleatoriedade na seleção do token. Valorestemperature
mais baixos são bons para comandos que exigem uma resposta mais determinista e menos aberta ou criativa, enquanto valorestemperature
maiores podem levar a resultados mais diversos ou criativos. Um valortemperature
de0
é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada. O padrão é1.0
.top_k
é um valorINT64
no intervalo[1,40]
que altera o modo como o modelo seleciona tokens de saída. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é40
.Um valor
top_k
de1
significa que o próximo token selecionado é o mais provável entre todos os tokens no vocabulário do modelo, enquanto um valortop_k
de3
significa que o próximo token é selecionado entre os três tokens mais prováveis usando o valortemperature
.Em cada etapa de seleção de token, são escolhidos os tokens
top_k
com as maiores probabilidades. Em seguida, os tokens são filtrados com base no valortop_p
, com o token final selecionado usando a amostragem de temperatura.top_p
: é um valorFLOAT64
no intervalo[0.0,1.0]
que altera o modo como o modelo seleciona tokens de saída. Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias. O padrão é1.0
.Os tokens são selecionados do valor mais provável (com base no valor
top_k
) ao menos provável até que a soma das probabilidades seja igual ao valortop_p
. Por exemplo, se os tokens A, B e C tiverem uma probabilidade de0.3
,0.2
e0.1
e o valortop_p
for0.5
, o modelo selecionará A ou B como o próximo token usando o valortemperature
, desconsiderando C.flatten_json_output
: é um valorBOOL
que determina se o conteúdo JSON retornado pela função será analisado em colunas separadas. O padrão éFALSE
.
Saída
ML.GENERATE_TEXT
retorna a tabela de entrada mais as seguintes colunas:
ml_generate_text_result
: a resposta JSON da chamadaprojects.locations.endpoints.predict
para o modelo. O texto gerado está no elementocontent
. Os atributos de segurança estão no elementosafetyAttributes
. Essa coluna é retornada quandoflatten_json_output
éFALSE
.ml_generate_text_llm_result
: um valorSTRING
que contém o texto gerado retornado pela chamadaprojects.locations.endpoints.predict
para o modelo. Essa coluna é retornada quandoflatten_json_output
éTRUE
.ml_generate_text_rai_result
: um valor deSTRING
que contém os atributos de segurança retornados pela chamadaprojects.locations.endpoints.predict
para o modelo. Essa coluna é retornada quandoflatten_json_output
éTRUE
.ml_generate_text_status
: um valorSTRING
que contém o status da resposta da API para a linha correspondente. Esse valor estará vazio se a operação tiver sido bem-sucedida.
Locais
ML.GENERATE_TEXT
precisa ser executada na mesma região que o modelo remoto referenciado pela função. Só é possível criar modelos remotos com base em modelos text-bison*
nos seguintes locais:
asia-northeast3
asia-southeast1
eu
europe-west1
europe-west2
europe-west3
europe-west4
europe-west9
us
us-central1
us-west4
Cotas
Consulte Cotas e limites de funções com valores de tabela de serviços do Cloud AI.
Examples
Exemplo 1
Este exemplo mostra uma solicitação com as seguintes características:
- Fornece um único comando.
- Retorna uma resposta de texto gerada mais longa.
- Retorna uma resposta de texto gerada menos provável.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, (SELECT 'What is the purpose of dreams?' AS prompt), STRUCT( 0.8 AS temperature, 1024 AS max_output_tokens, 0.95 AS top_p, 40 AS top_k));
Exemplo 2
Este exemplo mostra uma solicitação com as seguintes características:
- Fornece dados do comando vindos da coluna chamada
prompt
de uma tabela. - Retorna uma resposta de texto gerada mais curta.
- Retorna uma resposta de texto gerada mais provável.
- Nivela a resposta JSON em colunas separadas.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model` TABLE `mydataset.prompt_table`, STRUCT( 0.2 AS temperature, 75 AS max_output_tokens, 0.3 AS top_p, 15 AS top_k, TRUE AS flatten_json_output));
Exemplo 3
Este exemplo mostra uma solicitação com as seguintes características:
- Fornece dados do comando vindos da coluna chamada
question
de uma tabela, com o aliasprompt
. - Retorna uma resposta de texto gerada moderadamente longa.
- Retorna uma resposta de texto gerada moderadamente provável.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, (SELECT question AS prompt FROM `mydataset.prompt_table`), STRUCT( 0.4 AS temperature, 750 AS max_output_tokens, 0.5 AS top_p, 30 AS top_k));
Exemplo 4
Este exemplo mostra uma solicitação com as seguintes características:
- Concatena strings e a coluna de uma tabela para fornecer os dados do comando.
- Retorna uma resposta de texto gerada mais longa.
- Retorna uma resposta de texto gerada mais provável.
SELECT * FROM ML.GENERATE_TEXT( MODEL `mydataset.llm_model`, ( SELECT CONCAT( 'Classify the sentiment of the following text as positive or negative.Text:', input_column, 'Sentiment:') AS prompt FROM `mydataset.input_table` ), STRUCT( 0.1 AS temperature, 1000 AS max_output_tokens, 0.1 AS top_p, 10 AS top_k));
A seguir
- Veja um tutorial sobre como gerar texto usando um conjunto de dados público.
- Veja instruções passo a passo sobre como gerar texto usando seus próprios dados.
- Saiba mais sobre funções de IA que podem ser usadas para analisar dados do BigQuery.