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:

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 tabela
    • bigquery.models.getData no modelo
    • bigquery.jobs.create

Antes de começar

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery, BigQuery Connection,Vertex AI, and Compute Engine APIs.

    Enable the 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

  1. Acessar a página do BigQuery.

    Acessar o BigQuery

  2. Para criar uma conexão, clique em Adicionar e em Conexões com fontes de dados externas.

  3. Na lista Tipo de conexão, selecione Modelos remotos da Vertex AI, funções remotas e BigLake (Cloud Resource).

  4. No campo ID da conexão, insira um nome para a conexão.

  5. Clique em Criar conexão.

  6. Clique em Ir para conexão.

  7. No painel Informações da conexão, copie o ID da conta de serviço para uso em uma etapa posterior.

bq

  1. 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ão
    • PROJECT_ID: o ID do projeto do Google Cloud
    • CONNECTION_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...
    
  2. 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:


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

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

  1. Inicie o Cloud Shell.
  2. 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.

  1. 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 de main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 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.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve as alterações.
  5. 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

  1. 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.

  2. 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!".

  3. 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

  1. Acesse a página IAM e administrador.

    Acessar IAM e administrador

  2. Clique em Conceder acesso.

  3. Em Novos principais, insira o ID da conta de serviço que você copiou anteriormente.

  4. Clique em Selecionar papel.

  5. Em Filtro, digite Vertex AI Service Agent e selecione esse papel.

  6. 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

  1. No Console do Google Cloud, acesse a página BigQuery.

    Acessar o BigQuery

  2. 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 modelo
    • REGION: 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 valor STRING que especifica o nome do modelo a ser usado.
    • MAX_ITERATIONS: um valor INT64 que especifica o número de etapas a serem executadas para o ajuste supervisionado. O valor MAX_ITERATIONS precisa estar entre 1 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 para MAX_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, especifique 200 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 especificar 101 para o valor MAX_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 valor STRING 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ção DATA_SPLIT_EVAL_FRACTION.
      • CUSTOM: os dados são divididos usando a coluna fornecida na opção DATA_SPLIT_COL. O valor DATA_SPLIT_COL precisa ser o nome de uma coluna do tipo BOOL. Linhas com valor TRUE ou NULL são usadas como dados de avaliação e as linhas com valor FALSE como dados de treinamento.
      • SEQ: divide os dados usando a coluna fornecida na opção DATA_SPLIT_COL. O valor DATA_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 valor FLOAT64 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 ou SEQ como o valor da opção DATA_SPLIT_METHOD. Para personalizar a divisão de dados, use a opção DATA_SPLIT_METHOD com a opção DATA_SPLIT_EVAL_FRACTION.

    • DATA_SPLIT_COL: um valor STRING que especifica o nome da coluna a ser usada para classificar os dados de entrada no conjunto de treinamento ou avaliação. Use quando especificar CUSTOM ou SEQ como o valor da opção DATA_SPLIT_METHOD.
    • EVALUATION_TASK: um valor STRING 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 valor STRING 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 valor ARRAY<<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 que label seja o valor padrão do argumento LABEL_COLUMN.
    • PROMPT_COLUMN: a coluna na tabela de dados de treinamento que contém o comando para avaliar o conteúdo na coluna LABEL_COLUMN. Essa coluna precisa ser do tipo STRING ou ser convertida para STRING. Se você especificar um valor para a opção INPUT_PROMPT_COL, precisará especificar o mesmo valor para PROMPT_COLUMN. Caso contrário, esse valor precisará ser prompt. Se a tabela não tiver uma coluna prompt, 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 tipo STRING ou ser convertida para STRING. Se você especificar um valor para a opção INPUT_LABEL_COLS, precisará especificar o mesmo valor para LABEL_COLUMN. Caso contrário, esse valor precisará ser label. Se a tabela não tiver uma coluna label, 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

  1. No Console do Google Cloud, acesse a página BigQuery.

    Acessar o BigQuery

  2. 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 modelo
    • TABLE_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. Se prompt_col não for especificado, será usada a coluna chamada prompt nos dados de treinamento. Um erro será retornado se não houver uma coluna chamada prompt.

      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. Se input_label_cols não for especificado, será usada a coluna chamada label nos dados de treinamento. Um erro será retornado se não houver uma coluna chamada label.

    • TASK_TYPE: um valor STRING 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 valor INT64 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 valor FLOAT64 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 para temperature podem gerar resultados mais diversos ou criativos. Um valor de 0 para temperature é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.

    • TOP_K: um valor INT64 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 valor FLOAT64 no intervalo [0.0,1.0] ajuda a determinar quais tokens do pool determinado por TOP_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 modelo
  • TABLE_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ção PROMPT_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 valor INT64 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 valor FLOAT64 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 para temperature podem gerar resultados mais diversos ou criativos. Um valor de 0 para temperature é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.

  • TOP_P: um valor FLOAT64 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 valor BOOL 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 valor ARRAY<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 de BOOL 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. Quando flatten_json_output e esse campo são definidos como True, uma coluna ml_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 de ARRAY<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 especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) e STRUCT('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ça BLOCK_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 tabela prompts 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 modelo
  • PROMPT_QUERY: uma consulta que fornece os dados do comando.
  • TOKENS: um valor INT64 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 valor FLOAT64 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 para temperature podem gerar resultados mais diversos ou criativos. Um valor de 0 para temperature é determinista, o que significa que a resposta de maior probabilidade é sempre selecionada.

  • TOP_P: um valor FLOAT64 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 valor BOOL 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 valor ARRAY<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 de BOOL 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. Quando flatten_json_output e esse campo são definidos como True, uma coluna ml_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 de ARRAY<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 especificar STRUCT('HARM_CATEGORY_DANGEROUS_CONTENT' AS category, 'BLOCK_MEDIUM_AND_ABOVE' AS threshold) e STRUCT('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ça BLOCK_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 tabela articles.
  • 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));