Depois de criar uma instância da Example Store, 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 repositório de exemplos. Os exemplos ficam disponíveis imediatamente após o upload para a instância da Example Store.
Confira alguns cenários em que você precisaria fazer upload de exemplos:
As consultas não são relevantes 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 que você espera.
Ao criar exemplos relevantes no formato esperado, você pode alcançar o seguinte:
Melhorar a capacidade do LLM de prestar atenção aos exemplos e usá-los, evitando mudanças inesperadas nos padrões de resposta resultantes de pequenas alterações no comando.
Reduzir o possível impacto negativo de adicionar exemplos para consultas irrelevantes.
O LLM funciona como esperado para 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.
Com os exemplos nesta página, você pode criar 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:
Criar exemplos com base na saída esperada do LLM exige menos esforço manual.
Ao criar exemplos com base em comportamentos inesperados do LLM, você pode corrigir diretamente casos de falha.
Você pode criar exemplos com base em respostas de modelos de bom desempenho para melhorar o comportamento de outros modelos. Por exemplo, se o Gemini 1.5 Pro fornecer respostas melhores que o Gemini 1.5 Flash, mas com latência maior, você poderá 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
Você pode usar exemplos de poucos disparos para melhorar a performance da chamada de função demonstrando o seguinte: * Quando uma função específica é invocada.
Como extrair os argumentos para usar na chamada de função.
Como o modelo responde com base na resposta retornada pela função ou por várias funções em caso de raciocínio em várias etapas.
Para saber mais sobre como chamar uma função, consulte a documentação sobre o assunto.
Pré-requisitos
Antes de usar os exemplos em Python nesta página, instale e inicialize o SDK da Vertex AI para Python para a loja de exemplos no seu ambiente Python local.
Execute o seguinte comando para instalar o SDK da Vertex AI para Python da Example Store.
pip install --upgrade google-cloud-aiplatform>=1.87.0
Use o exemplo de código a seguir 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 em uma instância da Example Store. É possível fazer upload de até cinco exemplos por solicitação.
Python
Os exemplos a seguir permitem melhorar o comportamento do LLM e a performance da chamada de função criando e enviando 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:Siga as instruções de configuração do Python no Guia de início rápido da Vertex AI: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python da Vertex AI.
Autentique na Vertex AI configurando o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Fazer upload de um exemplo com base em uma resposta esperada
Use o exemplo a seguir para criar e fazer upload de uma amostra em um cenário em que a resposta do LLM está no formato esperado. Com este exemplo, é possível enviar uma solicitação, criar um exemplo com base na resposta e fazer upload dele para uma instância da 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 da GenAI sobre chamadas de função para definir uma função como ferramenta.
EXPECTED_FUNCTION_RESPONSE: a resposta esperada da função (um
FunctionResponse
objeto) para a chamada de função esperada. Consulte a documentação do SDK da GenAI sobre chamadas de função para receber ajuda na definição de uma resposta de função.EXPECTED_FINAL_MODEL_RESPONSE: a resposta final esperada do modelo (um objeto
Content
) para a chamada de função e a resposta esperadas.
Fazer upload de um exemplo para corrigir uma resposta inesperada
Se o LLM não gerar a resposta conforme o 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 Example Store.
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:
EXAMPLE_QUERY: a solicitação ou consulta do usuário ao LLM ou agente.
EXPECTED_FUNCTION_CALL: a chamada de função esperada (um
FunctionCall
objeto) para a consulta do usuário fornecida. Consulte a documentação do SDK da GenAI para chamadas de função e saiba como definir uma chamada de função.EXPECTED_FUNCTION_RESPONSE: a resposta esperada da função (um
FunctionResponse
objeto) para a chamada de função esperada. Consulte a documentação do SDK da GenAI sobre chamadas de função para receber ajuda na definição de uma resposta de função.EXPECTED_FINAL_MODEL_RESPONSE: a resposta final esperada do modelo (um objeto
Content
) para a chamada de função e a resposta esperadas.
REST
Para fazer upload de uma amostra em uma instância da 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 compatível é
us-central1
. - EXAMPLE_STORE_ID: o ID da instância da Example Store em que você quer 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
- Saiba como recuperar exemplos.