Ajustar um modelo usando seus dados
Neste documento, mostramos como criar um modelo remoto do BigQuery ML que faz referência a um modelo da Vertex AI e, em seguida, configurar o modelo para realizar o ajuste supervisionado. O modelo da Vertex AI precisa ser um dos seguintes:
gemini-1.5-pro-002
gemini-1.5-flash-002
gemini-1.0-pro-002
(Pré-lançamento)
Depois de criar o modelo remoto, use a
função ML.EVALUATE
para avaliar o modelo e confirmar se o desempenho é adequado para seu caso de
uso. Em seguida, é possível usar o modelo com a
função ML.GENERATE_TEXT
para analisar o texto em uma tabela do BigQuery.
Para mais informações, consulte Ajuste supervisionado de modelo da API Vertex AI Gemini.
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,Vertex AI, and Compute Engine 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
Use o
recurso
google_bigquery_connection
.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.
O exemplo a seguir cria uma conexão de recurso do Cloud chamada my_cloud_resource_connection
na região US
:
Para aplicar a configuração do Terraform em um projeto do Google Cloud, conclua as etapas nas seções a seguir.
Preparar o Cloud Shell
- Inicie o Cloud Shell.
-
Defina o projeto padrão do Google Cloud em que você quer aplicar as configurações do Terraform.
Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.
Preparar o diretório
Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.
-
No Cloud Shell, crie um diretório e um novo
arquivo dentro dele. O nome do arquivo precisa ter a extensão
.tf
, por exemplo,main.tf
. Neste tutorial, o arquivo é chamado demain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.
Copie o exemplo de código no
main.tf
recém-criado.Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.
- Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
- Salve as alterações.
-
Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
terraform init
Opcionalmente, para usar a versão mais recente do provedor do Google, inclua a opção
-upgrade
:terraform init -upgrade
Aplique as alterações
-
Revise a configuração e verifique se os recursos que o Terraform vai criar ou
atualizar correspondem às suas expectativas:
terraform plan
Faça as correções necessárias na configuração.
-
Para aplicar a configuração do Terraform, execute o comando a seguir e digite
yes
no prompt:terraform apply
Aguarde até que o Terraform exiba a mensagem "Apply complete!".
- Abra seu projeto do Google Cloud para ver os resultados. No console do Google Cloud, navegue até seus recursos na IU para verificar se foram criados ou atualizados pelo Terraform.
Conceder acesso à conta de serviço da conexão
Conceda permissão à sua conta de serviço para acessar a Vertex AI. Deixar de conceder a permissão resulta em erro. Selecione uma destas opções:
Console
Acesse a página IAM e administrador.
Clique em
Conceder acesso.Em Novos principais, insira o ID da conta de serviço que você copiou anteriormente.
Clique em Selecionar papel.
Em Filtro, digite
Vertex AI Service Agent
e selecione esse papel.Clique em Salvar.
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.serviceAgent' --condition=None
Substitua:
PROJECT_NUMBER
: o número do projeto.MEMBER
: o ID da conta de serviço que você copiou anteriormente.
A conta de serviço associada à sua conexão é uma instância do Agente de serviço da delegação de conexão do BigQuery. Portanto, não há problema em atribuir um papel de agente de serviço a ela.
Criar um modelo com ajuste supervisionado
No Console do Google Cloud, acesse a página BigQuery.
No editor de consultas, execute a seguinte consulta para criar um modelo remoto:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID` OPTIONS ( ENDPOINT = 'ENDPOINT', MAX_ITERATIONS = MAX_ITERATIONS, LEARNING_RATE_MULTIPLIER = LEARNING_RATE_MULTIPLIER, DATA_SPLIT_METHOD = 'DATA_SPLIT_METHOD', DATA_SPLIT_EVAL_FRACTION = DATA_SPLIT_EVAL_FRACTION, DATA_SPLIT_COL = 'DATA_SPLIT_COL', EVALUATION_TASK = 'EVALUATION_TASK', PROMPT_COL = 'INPUT_PROMPT_COL', INPUT_LABEL_COLS = INPUT_LABEL_COLS) AS SELECT PROMPT_COLUMN, LABEL_COLUMN FROM `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`;
Substitua:
PROJECT_ID
: o ID do projeto em que o modelo será criado.DATASET_ID
: o ID do conjunto de dados para conter o modelo. Esse conjunto de dados precisa estar em uma região de upload de modelo e job de pipeline compatível.MODEL_NAME
: o nome do modeloREGION
: a região usada pela conexão.CONNECTION_ID
: o ID da conexão do BigQuery Essa conexão precisa estar no mesmo local que o conjunto de dados que você está usando.Quando 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
: um valorSTRING
que especifica o nome do modelo a ser usado.MAX_ITERATIONS
: um valorINT64
que especifica o número de etapas a serem executadas para o ajuste supervisionado. O valorMAX_ITERATIONS
precisa estar entre1
e∞
.Os modelos Gemini são treinados usando períodos de etapas, então o BigQuery ML converte o valor
MAX_ITERATIONS
em períodos. O valor padrão paraMAX_ITERATIONS
é o número de linhas nos dados de entrada, que é equivalente a um período. Para usar vários períodos, especificar um múltiplo do número de linhas no seu dados de treinamento. Por exemplo, se você tiver 100 linhas de dados de entrada e quiser usar dois períodos, especifique200
como o valor do argumento. Se você fornecer um valor que não seja múltiplo do número de linhas no os dados de entrada, o BigQuery ML arredonda para o período mais próximo. Por exemplo, se você tiver 100 linhas de dados de entrada e especificar101
para o valorMAX_ITERATIONS
, o treinamento será realizado com dois períodos.Para mais informações sobre os parâmetros usados para ajustar modelos do Gemini, consulte Criar um job de ajuste.
DATA_SPLIT_METHOD
: um valorSTRING
que especifica o método usado para dividir os dados de entrada em conjuntos de treinamento e avaliação. As opções válidas são:AUTO_SPLIT
: o BigQuery ML divide os dados automaticamente. A maneira como os dados são divididos varia de acordo com o número de linhas na tabela de entrada. Esse é o valor padrão.RANDOM
: os dados são escolhidos aleatoriamente antes de serem divididos em conjuntos. Para personalizar a divisão de dados, use essa opção com a opçãoDATA_SPLIT_EVAL_FRACTION
.CUSTOM
: os dados são divididos usando a coluna fornecida na opçãoDATA_SPLIT_COL
. O valorDATA_SPLIT_COL
precisa ser o nome de uma coluna do tipoBOOL
. Linhas com valorTRUE
ouNULL
são usadas como dados de avaliação e as linhas com valorFALSE
como dados de treinamento.SEQ
: divide os dados usando a coluna fornecida na opçãoDATA_SPLIT_COL
. O valorDATA_SPLIT_COL
precisa ser o nome de uma coluna de um dos seguintes tipos:NUMERIC
BIGNUMERIC
STRING
TIMESTAMP
Os dados são classificados do menor para o maior com base na coluna especificada.
As primeiras n linhas são usadas como dados de avaliação, em que n é o valor especificado para
DATA_SPLIT_EVAL_FRACTION
. As linhas restantes são usadas como dados de treinamento.NO_SPLIT
: sem divisão de dados; todos os dados de entrada são usados como dados de treinamento.
Para mais informações sobre essas opções de divisão de dados, consulte
DATA_SPLIT_METHOD
.DATA_SPLIT_EVAL_FRACTION
: um valorFLOAT64
que especifica a fração dos dados a serem usados como dados de avaliação ao executar o ajuste supervisionado. Precisa ser um valor no intervalo[0, 1.0]
. O valor padrão é0.2
.Use essa opção quando especificar
RANDOM
ouSEQ
como o valor da opçãoDATA_SPLIT_METHOD
. Para personalizar a divisão de dados, use a opçãoDATA_SPLIT_METHOD
com a opçãoDATA_SPLIT_EVAL_FRACTION
.DATA_SPLIT_COL
: um valorSTRING
que especifica o nome da coluna a ser usada para classificar os dados de entrada no conjunto de treinamento ou avaliação. Use quando especificarCUSTOM
ouSEQ
como o valor da opçãoDATA_SPLIT_METHOD
.EVALUATION_TASK
: um valorSTRING
que especifica o tipo de tarefa que você quer ajustar o modelo para executar. As opções válidas são:TEXT_GENERATION
CLASSIFICATION
SUMMARIZATION
QUESTION_ANSWERING
UNSPECIFIED
O valor padrão é
UNSPECIFIED
.INPUT_PROMPT_COL
: um valorSTRING
que contém o nome da coluna de solicitação na tabela de dados de treinamento a ser usada ao executar o ajuste supervisionado. O valor padrão éprompt
.INPUT_LABEL_COLS
: um valorARRAY<<STRING>
que contém o nome da coluna de rótulos na tabela de dados de treinamento para usar no ajuste supervisionado. Só é possível especificar um elemento na matriz. O valor padrão é uma matriz vazia. Isso faz com quelabel
seja o valor padrão do argumentoLABEL_COLUMN
.PROMPT_COLUMN
: a coluna na tabela de dados de treinamento que contém o comando para avaliar o conteúdo na colunaLABEL_COLUMN
. Essa coluna precisa ser do tipoSTRING
ou ser convertida paraSTRING
. Se você especificar um valor para a opçãoINPUT_PROMPT_COL
, precisará especificar o mesmo valor paraPROMPT_COLUMN
. Caso contrário, esse valor precisará serprompt
. Se a tabela não tiver uma colunaprompt
, use um alias para especificar uma coluna existente. Por exemplo,AS SELECT hint AS prompt, label FROM mydataset.mytable
.LABEL_COLUMN
: a coluna na tabela de dados de treinamento que contém os exemplos para treinar o modelo. Essa coluna precisa ser do tipoSTRING
ou ser convertida paraSTRING
. Se você especificar um valor para a opçãoINPUT_LABEL_COLS
, precisará especificar o mesmo valor paraLABEL_COLUMN
. Caso contrário, esse valor precisará serlabel
. Se a tabela não tiver uma colunalabel
, use um alias para especificar uma coluna existente. Por exemplo,AS SELECT prompt, feature AS label FROM mydataset.mytable
.TABLE_PROJECT_ID
: o ID do projeto que contém a tabela de dados de treinamento.TABLE_DATASET
: o nome do conjunto de dados que contém a tabela de dados de treinamento.TABLE_NAME
: o nome da tabela que contém os dados a serem usados para treinar o modelo.
Avaliar o modelo ajustado
No Console do Google Cloud, acesse a página BigQuery.
No editor de consultas, execute a seguinte consulta para avaliar o modelo ajustado:
SELECT * FROM ML.EVALUATE( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE `TABLE_PROJECT_ID.TABLE_DATASET.TABLE_NAME`, STRUCT('TASK_TYPE' AS task_type, TOKENS AS max_output_tokens, TEMPERATURE AS temperature, TOP_K AS top_k, TOP_P AS top_p));
Substitua:
PROJECT_ID
: o ID do projeto que contém o modelo.DATASET_ID
: o ID do conjunto de dados que contém o modelo.MODEL_NAME
: o nome do modeloTABLE_PROJECT_ID
: o ID do projeto que contém a tabela de dados de avaliação.TABLE_DATASET
: o nome do conjunto de dados que contém a tabela de dados de avaliação.TABLE_NAME
: o nome da tabela que contém os dados de avaliação.A tabela precisa ter uma coluna com um nome igual ao da coluna de comando fornecido durante o treinamento do modelo. É possível fornecer esse valor usando a opção
prompt_col
durante o treinamento do modelo. Seprompt_col
não for especificado, será usada a coluna chamadaprompt
nos dados de treinamento. Um erro será retornado se não houver uma coluna chamadaprompt
.A tabela precisa ter uma coluna com um nome que corresponda ao nome da coluna de rótulo fornecido durante o treinamento do modelo. É possível fornecer esse valor usando a opção
input_label_cols
durante o treinamento do modelo. Seinput_label_cols
não for especificado, será usada a coluna chamadalabel
nos dados de treinamento. Um erro será retornado se não houver uma coluna chamadalabel
.TASK_TYPE
: um valorSTRING
que especifica o tipo de tarefa para avaliar o modelo. As opções válidas são:TEXT_GENERATION
CLASSIFICATION
SUMMARIZATION
QUESTION_ANSWERING
UNSPECIFIED
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
.
Gerar texto
Gere texto com a função ML.GENERATE_TEXT
:
Coluna do comando
Gerar texto usando uma coluna da tabela para fornecer o comando.
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 coluna com um nome que corresponda ao nome da coluna de atributo no modelo ajustado. É possível definir o nome da coluna de atributos no modelo usando a opçãoPROMPT_COL
ao criar o modelo. Caso contrário, o nome da coluna de atributos no modelo seráprompt
por padrão, ou você pode usar um alias para usar uma coluna com 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 é1.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.
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.mymodel`, TABLE mydataset.prompts, STRUCT( 0.4 AS temperature, 100 AS max_output_tokens, 0.5 AS top_p, TRUE AS flatten_json_output));
Consulta do comando
Gerar texto usando uma consulta para fornecer o comando.
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,1.0]
que controla o grau de aleatoriedade na seleção de token. O padrão é1.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 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.mymodel`, ( 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, 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.mytuned_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));