O otimizador de comandos de poucos disparos (few-shot) ajuda a refinar as instruções do sistema analisando exemplos em que a resposta de um modelo não atendeu às expectativas. Você fornece exemplos específicos de comandos, respostas do modelo e feedback sobre essas respostas, e o otimizador melhora as instruções do sistema. Você pode dar feedback de duas maneiras: rubricas e avaliação baseada em rubricas ou respostas desejadas.
A otimização com poucos exemplos exige que você forneça exemplos em um DataFrame do Pandas e está disponível no SDK da Vertex AI.
Otimizar usando a avaliação baseada em rubricas
Esse método é para cenários em que você tem rubricas (também conhecidas como critérios de avaliação) para cada exemplo e um registro de se o modelo atendeu a esses critérios. Seu DataFrame precisa conter as seguintes quatro colunas:
prompt: o comando original do usuário.model_response: a saída real gerada pelo modelo.rubrics: uma lista de critérios específicos para esse exemplo, como uma representação de string de uma lista de strings.rubrics_evaluations: uma lista de booleanos indicando se cada rubrica foi atendida, como uma representação de string de uma lista de booleanos.
As rubricas podem ser consistentes em todas as linhas ou adaptadas a cada exemplo.
import pandas as pd
import vertexai
from vertexai import types
PROJECT_NAME = "YOUR_PROJECT_NAME"
LOCATION = "YOUR_LOCATION" # e.g. "us-central1"
client = vertexai.Client(project=PROJECT_NAME, location=LOCATION)
system_instructions = "You are an AI assistant skilled in analyzing articles. Your task is to extract key arguments, evaluate evidence quality, identify potential biases, and summarize core findings into a concise, actionable, and objective report. Make sure the response is less than 50 words"
df = pd.DataFrame(
[
{
"prompt": "prompt1",
"model_response": "response1",
"rubrics": "['Response is in English', 'Under 50 words']",
"rubrics_evaluations": "[True, True]",
},
{
"prompt": "prompt2",
"model_response": "response2",
"rubrics": "['Response is in English', 'Under 50 words']",
"rubrics_evaluations": "[True, False]",
},
]
)
config = vertexai.types.OptimizeConfig(
optimization_target=vertexai.types.OptimizeTarget.OPTIMIZATION_TARGET_FEW_SHOT_RUBRICS,
examples_dataframe=df,
)
response = client.prompts.optimize(prompt=system_instructions, config=config)
print(response.parsed_response.suggested_prompt)
Otimizar usando respostas desejadas
Se você não tiver rubricas específicas, mas tiver uma resposta ideal ou "padrão ouro" para cada comando, use a otimização com base na resposta desejada. O otimizador compara a saída do modelo com a saída ideal e ajusta as instruções para reduzir a diferença.
Seu DataFrame precisa incluir estas três colunas:
prompt: a instrução original do usuário.model_response: a saída do modelo atual que precisa ser melhorada.target_response: a resposta ideal que você quer que o modelo gere.
import pandas as pd
import vertexai
from vertexai import types
PROJECT_NAME = "PROJECT"
LOCATION = "YOUR_LOCATION" # e.g. "us-central1"
client = vertexai.Client(project=YOUR_PROJECT_NAME, location=LOCATION)
system_instructions = "You are an AI assistant skilled in analyzing articles. Your task is to extract key arguments, evaluate evidence quality, identify potential biases, and summarize core findings into a concise, actionable, and objective report. Make sure the response is less than 50 words"
df = pd.DataFrame(
{
"prompt": ["prompt1", "prompt2"],
"model_response": ["response1", "response2"],
"target_response": ["target1", "target2"],
}
)
config = vertexai.types.OptimizeConfig(
optimization_target=vertexai.types.OptimizeTarget.OPTIMIZATION_TARGET_FEW_SHOT_TARGET_RESPONSE,
examples_dataframe=df,
)
response = client.prompts.optimize(
prompt=system_instructions,
config=config,
)
print(response.parsed_response.suggested_prompt)