Respostas básicas para modelos do PaLM 2

Adicionar a PaLM aos seus dados

Para começar a usar o embasamento de modelos na IA generativa na Vertex AI, você precisa atender a alguns pré-requisitos. Isso inclui criar uma fonte de dados da Vertex AI para Pesquisa, ativar a edição Enterprise para seu repositório de dados e vincular o repositório de dados ao seu app na Vertex AI para Pesquisa. A fonte de dados serve como base para o embasamento de text-bison e chat-bison na Vertex AI.

Com a Vertex AI para Pesquisa, você começa a usar pesquisas ou recomendações de alta qualidade com base nos dados fornecidos. Saiba mais sobre a Vertex AI para Pesquisa em Introdução à Vertex AI para Pesquisa.

Ativar a Vertex AI para Pesquisa

  1. No console do Google Cloud, acesse a página Pesquisa e conversa.

    Pesquisa e conversa

  2. Leia e aceite os Termos de Serviço e clique em Continuar e ativar a API.

Criar um repositório de dados na Vertex AI para Pesquisa

Para fundamentar seus modelos nos dados de origem, você precisa preparar e salvar os dados na Vertex AI para Pesquisa. Para isso, crie um armazenamento de dados na Vertex AI para Pesquisa.

Se você estiver começando do zero, vai precisar preparar seus dados para ingestão na Vertex AI para Pesquisa. Consulte Preparar dados para ingestão para começar. Dependendo do tamanho dos dados, a ingestão pode levar de vários minutos a várias horas. Só há suporte para armazenamentos de dados não estruturados. Depois de preparar os dados para ingestão, crie um repositório de dados de pesquisa. Depois de criar um repositório de dados, crie um app de pesquisa para vinculá-lo e ative a edição Enterprise.

Deixar o modelo text-bison embasado

O embasamento está disponível para os modelos text-bison e chat-bison. Os exemplos a seguir usam o modelo de fundação text-bison.

Se estiver usando a API, você fundamentará o text-bison ao chamar a previsão. Para isso, adicione o groundingConfig opcional e faça referência ao local e ao ID do repositório de dados.

Se você não souber o ID do repositório de dados, siga estas etapas:

  1. No console do Google Cloud, acesse a página Vertex AI para Pesquisa e, no menu de navegação, clique em Repositórios de dados. <a{: class="button button-primary" l10n-attrs-original-order="href,target,class,track-name,track-type" l10n-encrypted-href="BU2UnTd/bvXw0I31NoHStFtigmNHgUGOXn/QVSGplOhB4J1rwNxdLslXsSNCBkPOFvWIDj0tv6yobddHSWXSow==" target="console" track-name="consoleLink" track-type="tasks" }="">Ir para a página "Repositórios de dados"</a{:>
  2. Clique no nome do seu repositório de dados.
  3. Na página Dados do seu repositório de dados, encontre o ID do repositório.

REST

Para testar um prompt de texto usando a API Vertex AI, envie uma solicitação POST para o endpoint do modelo do editor.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: o ID do projeto.
  • PROMPT: um comando é uma solicitação de linguagem natural enviada a um modelo de linguagem para receber uma resposta. Os comandos podem conter perguntas, instruções, informações contextuais, exemplos e texto para que o modelo seja concluído ou continue. (Não adicione citações diretas ao redor deste comando.)
  • TEMPERATURE: A temperatura é usada para amostragem durante a geração da resposta, que ocorre quando topP e topK são aplicados. A temperatura controla o grau de aleatoriedade na seleção do token. Temperaturas mais baixas são boas para solicitações que exigem uma resposta menos aberta ou criativa, enquanto temperaturas mais altas podem levar a resultados mais diversos ou criativos. Uma temperatura de 0 significa que os tokens de maior probabilidade são sempre selecionados. Nesse caso, as respostas para uma determinada solicitação são, na maioria das vezes, deterministas, mas uma pequena variação ainda é possível.

    Se o modelo retornar uma resposta muito genérica, muito curta ou se o modelo fornecer uma resposta alternativa, tente aumentar a temperatura.

  • MAX_OUTPUT_TOKENS: número máximo de tokens que podem ser gerados na resposta. Um token tem cerca de quatro caracteres. 100 tokens correspondem a cerca de 60 a 80 palavras.

    Especifique um valor mais baixo para respostas mais curtas e um valor mais alto para respostas potencialmente mais longas.

  • TOP_P: o top-p muda a forma como o modelo seleciona tokens para saída. Os tokens são selecionados do mais provável (confira o top-K) para o menos provável até que a soma das probabilidades seja igual ao valor do top-P. Por exemplo, se os tokens A, B e C tiverem uma probabilidade de 0,3, 0,2 e 0,1 e o valor de top-P for 0.5, o modelo selecionará A ou B como token seguinte usando temperatura e exclui C como candidato.

    Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.

  • TOP_K: o top-k muda a forma como o modelo seleciona tokens para saída. Um top-K de 1 significa que o próximo token selecionado é o mais provável entre todos os tokens no vocabulário do modelo (também chamado de decodificação gananciosa), enquanto um top-K de 3 significa que o próximo token está selecionado entre os três tokens mais prováveis usando a temperatura.

    Para cada etapa da seleção de tokens, são amostrados os tokens top-K com as maiores probabilidades. Em seguida, os tokens são filtrados com base no valor de top-P com o token final selecionado por meio da amostragem de temperatura.

    Especifique um valor mais baixo para respostas menos aleatórias e um valor mais alto para respostas mais aleatórias.

  • SOURCE_TYPE O tipo de fonte de dados a que o modelo se baseia. Somente a Vertex AI para Pesquisa é compatível.
  • VERTEX_AI_SEARCH_DATA_STORE: o caminho do ID do repositório de dados da Vertex AI para Pesquisa.

    O VERTEX_AI_SEARCH_DATA_STORE precisa usar o seguinte formato. Use os valores fornecidos para locais e coleções: projects/{project_id}/locations/global/collections/default_collection/dataStores/{data_store_id}

    Observação: o ID do projeto no caminho do ID do repositório de dados é o ID do projeto da Vertex AI para Pesquisa.

Método HTTP e URL:

POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison:predict

Corpo JSON da solicitação:

{
  "instances": [
    { "prompt": "PROMPT"}
  ],
  "parameters": {
    "temperature": TEMPERATURE,
    "maxOutputTokens": MAX_OUTPUT_TOKENS,
    "topP": TOP_P,
    "topK": TOP_K,
    "groundingConfig": {
      "sources": [
          {
              "type": "VERTEX_AI_SEARCH",
              "vertexAiSearchDatastore": "VERTEX_AI_SEARCH_DATA_STORE"
          }
      ]
    }
  }
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison:predict"

PowerShell

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-bison:predict" | Select-Object -Expand Content

Você receberá uma resposta JSON semelhante a seguinte.

Console

Para fundamentar um modelo com o Vertex AI Studio, siga as instruções a seguir.

  1. Selecione o card de modelo PaLM 2 para Bison de texto ou PaLM 2 para Bison de chat no Model Garden.

    <a{: class="button button-primary" l10n-attrs-original-order="href,target,class,track-name,track-type" l10n-encrypted-href="kDsq5VTi6ASK/vNFlrWmnltigmNHgUGOXn/QVSGplOi71dheYhG9dKuv3S+0ajmQkfzB9oP/Mo2x7xIe1klR5Wv+Luwn/kGU2mxRbPxpxolc9gBRk3QOdMg5rdH6ChX7" target="console" track-name="consoleLink" track-type="tasks" }="">Acesse o Model Garden</a{:>
  2. No card de modelo, clique em Abrir design do comando. O Vertex AI Studio vai ser aberto.
  3. No painel de parâmetros, selecione Avançado.
  4. Alterne a opção Ativar embasamento e selecione Personalizar.
  5. No menu suspenso da fonte de embasamento, selecione Vertex AI para Pesquisa.
  6. Insira o caminho do repositório de dados da Vertex AI para Pesquisa do seu conteúdo. O caminho precisa seguir este formato: projects/{project_id}/locations/global/collections/default_collection/dataStores/{data_store_id}.
  7. Digite sua solicitação e clique em Enviar.

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.

from typing import Optional

import vertexai
from vertexai.language_models import (
    GroundingSource,
    TextGenerationModel,
    TextGenerationResponse,
)

def grounding(
    project_id: str,
    location: str,
    data_store_location: Optional[str],
    data_store_id: Optional[str],
) -> TextGenerationResponse:
    """Grounding example with a Large Language Model"""

    vertexai.init(project=project_id, location=location)

    # TODO developer - override these parameters as needed:
    parameters = {
        "temperature": 0.7,  # Temperature controls the degree of randomness in token selection.
        "max_output_tokens": 256,  # Token limit determines the maximum amount of text output.
        "top_p": 0.8,  # Tokens are selected from most probable to least until the sum of their probabilities equals the top_p value.
        "top_k": 40,  # A top_k of 1 means the selected token is the most probable among all tokens.
    }

    model = TextGenerationModel.from_pretrained("text-bison@002")

    if data_store_id and data_store_location:
        # Use Vertex AI Search data store
        grounding_source = GroundingSource.VertexAISearch(
            data_store_id=data_store_id, location=data_store_location
        )
    else:
        # Use Google Search for grounding (Private Preview)
        grounding_source = GroundingSource.WebSearch()

    response = model.predict(
        "What are the price, available colors, and storage size options of a Pixel Tablet?",
        grounding_source=grounding_source,
        **parameters,
    )
    print(f"Response from Model: {response.text}")
    print(f"Grounding Metadata: {response.grounding_metadata}")

A seguir