Esta página descreve como preparar o seu conjunto de dados para o serviço de avaliação de IA gen.
Vista geral
O serviço de avaliação de IA gen. deteta e processa automaticamente vários formatos de dados comuns. Isto significa que, muitas vezes, pode usar os seus dados tal como estão, sem ter de fazer conversões manuais.
Os campos que tem de facultar no seu conjunto de dados dependem do seu objetivo:
Objetivo | Dados necessários | Fluxo de trabalho do SDK |
---|---|---|
Gerar novas respostas e, em seguida, avaliá-las | prompt |
run_inference() → evaluate() |
Avalie as respostas existentes | prompt e response |
evaluate() |
Quando executa o client.evals.evaluate()
, o serviço de avaliação de IA gen procura automaticamente os seguintes campos comuns no seu conjunto de dados:
prompt
: (obrigatório) A entrada para o modelo que quer avaliar. Para obter os melhores resultados, deve fornecer exemplos de comandos que representem os tipos de entradas que os seus modelos processam na produção.response
: (Obrigatório) O resultado gerado pelo modelo ou pela aplicação que está a ser avaliado.reference
: (Opcional) A verdade fundamental ou a resposta "ideal" com a qual pode comparar a resposta do modelo. Este campo é frequentemente necessário para métricas baseadas em cálculos, comobleu
erouge
.conversation_history
: (Opcional) Uma lista de turnos anteriores numa conversa de vários turnos. O serviço de avaliação de IA gen extrai automaticamente este campo de formatos suportados. Para mais informações, consulte o artigo Processar conversas com várias interações.
Formatos de dados suportados
O serviço de avaliação de IA gen. suporta os seguintes formatos:
Pandas DataFrame
Para avaliações simples, pode usar um pandas.DataFrame
. O serviço de avaliação de IA gen procura nomes de colunas comuns, como prompt
, response
e reference
. Este formato é totalmente retrocompatível.
import pandas as pd
# Example DataFrame with prompts and ground truth references
prompts_df = pd.DataFrame({
"prompt": [
"What is the capital of France?",
"Who wrote 'Hamlet'?",
],
"reference": [
"Paris",
"William Shakespeare",
]
})
# You can use this DataFrame directly with run_inference or evaluate
eval_dataset = client.evals.run_inference(model="gemini-2.5-flash", src=prompts_df)
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[types.PrebuiltMetric.GENERAL_QUALITY]
)
eval_result.show()
Formato de previsão em lote do Gemini
Pode usar diretamente o resultado de uma tarefa de previsão em lote do Vertex AI, que são normalmente ficheiros JSONL armazenados no Cloud Storage, onde cada linha contém um objeto de pedido e resposta. O serviço de avaliação de IA gen analisa esta estrutura automaticamente para fornecer integração com outros serviços da Vertex AI.
Segue-se um exemplo de uma única linha num ficheiro JSONl:
{"request": {"contents": [{"role": "user", "parts": [{"text": "Why is the sky blue?"}]}]}, "response": {"candidates": [{"content": {"role": "model", "parts": [{"text": "The sky appears blue to the human eye as a result of a phenomenon known as Rayleigh scattering."}]}}]}}
Em seguida, pode avaliar as respostas pré-geradas de uma tarefa em lote diretamente:
# Cloud Storage path to your batch prediction output file
batch_job_output_uri = "gs://path/to/your/batch_output.jsonl"
# Evaluate the pre-generated responses directly
eval_result = client.evals.evaluate(
dataset=batch_job_output_uri,
metrics=[types.PrebuiltMetric.GENERAL_QUALITY]
)
eval_result.show()
Formato de conclusão de chat da OpenAI
Para avaliação ou comparação com modelos de terceiros, como os da OpenAI e da Anthropic, o serviço de avaliação de IA gen suporta o formato de conclusão de chat da OpenAI. Pode fornecer um conjunto de dados em que cada linha é um objeto JSON estruturado como um pedido da API OpenAI. O serviço de avaliação de IA gen deteta automaticamente este formato.
Segue-se um exemplo de uma única linha neste formato:
{"request": {"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What's the capital of France?"}], "model": "gpt-4o"}}
Pode usar estes dados para gerar respostas a partir de um modelo de terceiros e avaliar as respostas:
# Ensure your third-party API key is set
# e.g., os.environ['OPENAI_API_KEY'] = 'Your API Key'
openai_request_uri = "gs://path/to/your/openai_requests.jsonl"
# Generate responses using a LiteLLM-supported model string
openai_responses = client.evals.run_inference(
model="gpt-4o", # LiteLLM compatible model string
src=openai_request_uri,
)
# The resulting openai_responses object can then be evaluated
eval_result = client.evals.evaluate(
dataset=openai_responses,
metrics=[types.PrebuiltMetric.GENERAL_QUALITY]
)
eval_result.show()
Processar conversas com várias interações
O serviço de avaliação de IA gen. analisa automaticamente os dados de conversação multifacetada a partir de formatos suportados. Quando os seus dados de entrada incluem um histórico de trocas (como no campo request.contents
no formato Gemini ou request.messages
no formato OpenAI), o serviço de avaliação de IA gen identifica as interações anteriores e processa-as como conversation_history
.
Isto significa que não precisa de separar manualmente o comando atual da conversa anterior, uma vez que as métricas de avaliação podem usar o histórico da conversa para compreender o contexto da resposta do modelo.
Considere o seguinte exemplo de uma conversa com várias interações no formato Gemini:
{
"request": {
"contents": [
{"role": "user", "parts": [{"text": "I'm planning a trip to Paris."}]},
{"role": "model", "parts": [{"text": "That sounds wonderful! What time of year are you going?"}]},
{"role": "user", "parts": [{"text": "I'm thinking next spring. What are some must-see sights?"}]}
]
},
"response": {
"candidates": [
{"content": {"role": "model", "parts": [{"text": "For spring in Paris, you should definitely visit the Eiffel Tower, the Louvre Museum, and wander through Montmartre."}]}}
]
}
}
A conversa com várias interações é analisada automaticamente da seguinte forma:
prompt
: a última mensagem do utilizador é identificada como o comando atual ({"role": "user", "parts": [{"text": "I'm thinking next spring. What are some must-see sights?"}]}
).conversation_history
: as mensagens anteriores são automaticamente extraídas e disponibilizadas como o histórico da conversa ([{"role": "user", "parts": [{"text": "I'm planning a trip to Paris."}]}, {"role": "model", "parts": [{"text": "That sounds wonderful! What time of year are you going?"}]}]
).response
: a resposta do modelo é retirada do camporesponse
({"role": "model", "parts": [{"text": "For spring in Paris..."}]}
).