Fazer upload de exemplos

Depois de criar uma instância da loja de exemplos, você pode começar a criar e fazer upload de exemplos para ela. Não há limite para o número de exemplos que podem ser armazenados em uma instância de exemplo. Os exemplos ficam disponíveis imediatamente após o upload na instância da loja de exemplo.

Confira alguns cenários em que você precisa fazer upload de exemplos:

  • As consultas são irrelevantes para os exemplos atuais.

  • O modelo tem dificuldades com alguns raciocínios.

  • Os exemplos disponíveis não abrangem todas as funções, resultados ou raciocínios esperados.

Ao criar exemplos relevantes no formato esperado, você pode fazer o seguinte:

  • Melhore a capacidade do LLM de prestar atenção aos exemplos e usá-los, evitando mudanças inesperadas nos padrões de resposta que resultam de pequenas mudanças no comando.

  • Reduzimos o possível impacto negativo de adicionar exemplos para consultas irrelevantes.

  • O LLM funciona conforme o esperado em consultas semelhantes.

Se o LLM mostrar um comportamento ou raciocínio inesperado, você poderá fazer upload de uma resposta corrigida para orientar o modelo a seguir o padrão ou raciocínio esperado em solicitações subsequentes.

Os exemplos nesta página permitem que você crie exemplos com base na saída do LLM. Criar exemplos com base na saída de um LLM tem as seguintes vantagens em relação à criação manual de exemplos:

  • A criação de exemplos com base na saída esperada do LLM envolve menos esforço manual.

  • Ao criar exemplos com base no comportamento inesperado do LLM, você pode corrigir diretamente os casos de falha.

  • Você pode criar exemplos com base nas respostas de modelos com bom desempenho para melhorar o comportamento de outros modelos. Por exemplo, se o Gemini 1.5 Pro oferecer respostas melhores do que o Gemini 1.5 Flash, mas com latência maior, você pode criar exemplos usando essas respostas para alcançar um desempenho semelhante com latências menores usando o Gemini 1.5 Flash.

Usar exemplos para melhorar o desempenho da chamada de função

É possível usar exemplos de poucas fotos para melhorar o desempenho da chamada de função demonstrando o seguinte: * Quando uma função específica é invocada.

  • Como extrair os argumentos a serem usados na chamada de função.

  • Como o modelo responde com base na resposta retornada pela função ou em várias funções no caso de raciocínio em várias etapas.

Para saber mais sobre como chamar uma função, consulte a documentação sobre chamadas de função.

Pré-requisitos

Antes de usar os exemplos de Python nesta página, instale e inicialize o SDK da Vertex AI para Python para a loja de exemplo no seu ambiente local de Python.

  1. Execute o seguinte comando para instalar o SDK da Vertex AI para Python na Example Store.

    pip install --upgrade google-cloud-aiplatform>=1.87.0
  2. Use o exemplo de código abaixo para importar e inicializar o SDK da Example Store.

    import vertexai
    from vertexai.preview import example_stores
    
    vertexai.init(
      project="PROJECT_ID",
      location="LOCATION"
    )
    

    Substitua:

    • PROJECT_ID: o ID do projeto.

    • LOCATION: sua região. Somente us-central1 é aceito.

Fazer upload de exemplos

Use os exemplos a seguir para fazer upload de exemplos para uma instância da loja de exemplo. É possível fazer upload de até cinco exemplos por solicitação.

Python

Os exemplos a seguir permitem melhorar o comportamento do LLM e o desempenho da chamada de função criando e fazendo upload de exemplos para uma instância do Example Store usando respostas recebidas de um LLM. Antes de usar os exemplos a seguir, verifique se você fez o seguinte:

Fazer upload de um exemplo com base em uma resposta esperada

Use o exemplo a seguir para criar e fazer upload de um exemplo em um cenário em que a resposta do LLM está no formato esperado. Esse exemplo permite enviar uma solicitação, criar um exemplo com base na resposta e fazer upload dele para uma instância do Example Store.

from vertexai.preview.example_stores import ContentsExample, StoredContentsExample

client = genai.Client(
    http_options=genai_types.HttpOptions(api_version="v1"),
    vertexai=True,
    project="PROJECT_ID",,
    location="LOCATION")

user_content = Content(
    role="user",
    parts=[Part(text="EXAMPLE_QUERY")],
)

response = client.models.generate_content(
    model="MODEL_NAME",
    user_content,
    config=genai_types.GenerateContentConfig(
      tools=[FUNCTION_OR_FUNCTION_DECLARATION]
    )
  )

# Upload example.
example = {
  "contents_example": {
    "contents": [user_content.to_json_dict()],
    "expected_contents": [
      {"content": response.candidates[0].content.to_json_dict()},
      {"content": EXPECTED_FUNCTION_RESPONSE.to_json_dict()},
      {"content": EXPECTED_FINAL_MODEL_RESPONSE.to_json_dict()},
    ],
  },
  "search_key": user_content.parts[0].text,
}
example_store.upsert_examples(examples=[example])

Substitua:

  • PROJECT_ID: o ID do projeto.

  • LOCATION: sua região. Somente us-central1 é aceito.

  • EXAMPLE_QUERY: a solicitação ou consulta do usuário ao LLM ou agente.

  • MODEL_NAME: o nome do modelo. Por exemplo, gemini-2.0-flash.

  • FUNCTION_OR_FUNCTION_DECLARATION: a função ou declaração de função a ser usada na solicitação. Consulte a documentação do SDK do GenAI sobre chamadas de função para saber como definir uma função como uma ferramenta.

  • EXPECTED_FUNCTION_RESPONSE: a resposta da função esperada (um objeto FunctionResponse) para a chamada de função esperada. Consulte a documentação do SDK do GenAI sobre chamadas de função para ajudar a definir uma resposta de função.

  • EXPECTED_FINAL_MODEL_RESPONSE: a resposta final esperada do modelo (um objeto Content) para a chamada e a resposta de função esperadas.

Fazer upload de um exemplo para corrigir uma resposta inesperada

Se o LLM não gerar a resposta como esperado, crie um exemplo com base na resposta corrigida. Isso ajuda o LLM a seguir o raciocínio esperado para solicitações subsequentes.

Use o exemplo a seguir para fazer upload de um exemplo com a resposta corrigida para a instância da loja de exemplo.

user_content = Content(
    role="user",
    parts=[Part(text="EXAMPLE_QUERY")],
)

example = {
  "contents_example": {
    "contents": [user_content.to_json_dict()],
    "expected_contents": [
      {"content": EXPECTED_FUNCTION_CALL.to_json_dict()},
      {"content": EXPECTED_FUNCTION_RESPONSE.to_json_dict()},
      {"content": EXPECTED_FINAL_MODEL_RESPONSE.to_json_dict()},
    ],
  },
  "search_key": user_content.parts[0].text,
}

example_store.upsert_examples(examples=[example])

Substitua:

REST

Para fazer upload de um exemplo para uma instância do Example Store, envie uma solicitação POST usando o método exampleStores.upsertExamples.

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

  • PROJECT_ID: o ID do projeto.
  • LOCATION: a região em que você quer criar a loja de exemplo. A única região com suporte é us-central1.
  • EXAMPLE_STORE_ID: o ID da instância da loja de exemplo para fazer upload do exemplo.

Método HTTP e URL:

POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/exampleStores/EXAMPLE_STORE_ID:upsertExamples

Corpo JSON da solicitação:

{
  "examples": [
      {
          "stored_contents_example": {
              "contents_example": {
                  "contents": [
                      {
                          "role": "user",
                          "parts": [
                              {
                                  "text": "Is there a store in Mountain View, CA that I can visit to try the new Pixel 8 Pro?"
                              }
                          ]
                      }
                  ],
                  "expected_contents": [
                      {
                          "content": {
                              "role": "model",
                              "parts": [
                                  {
                                      "text": ""Yes, there is a store located at 2000 N Shoreline Blvd, Mountain View, CA 94043, US."
                                  }
                              ]
                          }
                      }
                  ]
              },
              "search_key_generation_method": {
                  "last_entry": {}
              }
          }
      }
  ]
}

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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/exampleStores/EXAMPLE_STORE_ID:upsertExamples"

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://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/exampleStores/EXAMPLE_STORE_ID:upsertExamples" | Select-Object -Expand Content

Você vai receber uma resposta JSON semelhante a esta, em que EXAMPLE_ID representa o ID numérico gerado para o exemplo.

A seguir