En esta página se describe cómo preparar tu conjunto de datos para el servicio de evaluación de la IA generativa.
Información general
El servicio de evaluación de la IA generativa detecta y gestiona automáticamente varios formatos de datos habituales. Esto significa que, a menudo, puedes usar tus datos tal cual sin tener que realizar conversiones manuales.
Los campos que debe proporcionar en su conjunto de datos dependen de su objetivo:
Objetivo | Datos obligatorios | Flujo de trabajo del SDK |
---|---|---|
Generar nuevas respuestas y, a continuación, evaluarlas | prompt |
run_inference() → evaluate() |
Evaluar las respuestas | prompt y response |
evaluate() |
Cuando se ejecuta client.evals.evaluate()
, el servicio de evaluación de IA generativa busca automáticamente los siguientes campos comunes en tu conjunto de datos:
prompt
: (obligatorio) la entrada del modelo que quieres evaluar. Para obtener los mejores resultados, debe proporcionar peticiones de ejemplo que representen los tipos de entradas que procesan sus modelos en producción.response
(obligatorio): el resultado generado por el modelo o la aplicación que se está evaluando.reference
: (Opcional) La respuesta correcta o "dorada" con la que puedes comparar la respuesta del modelo. Este campo suele ser obligatorio para las métricas basadas en cálculos, comobleu
yrouge
.conversation_history
: (Opcional) Lista de turnos anteriores en una conversación de varios turnos. El servicio de evaluación de IA generativa extrae automáticamente este campo de los formatos admitidos. Para obtener más información, consulta Gestionar conversaciones de varios turnos.
Formatos de datos admitidos
El servicio de evaluación de la IA generativa admite los siguientes formatos:
Pandas DataFrame
Para las evaluaciones sencillas, puedes usar un pandas.DataFrame
. El servicio de evaluación de la IA generativa busca nombres de columnas comunes, como prompt
, response
y reference
. Este formato es totalmente retrocompatible.
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 predicción por lotes de Gemini
Puedes usar directamente la salida de un trabajo de predicción por lotes de Vertex AI, que suelen ser archivos JSONL almacenados en Cloud Storage, donde cada línea contiene un objeto de solicitud y respuesta. El servicio de evaluación de IA generativa analiza esta estructura automáticamente para proporcionar integración con otros servicios de Vertex AI.
A continuación, se muestra un ejemplo de una sola línea en un archivo 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."}]}}]}}
Después, puede evaluar las respuestas pregeneradas de una tarea por lotes directamente:
# 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 finalización de chat de OpenAI
Para evaluar modelos de terceros, como OpenAI y Anthropic, o compararlos, el servicio de evaluación de IA generativa admite el formato de finalización de chat de OpenAI. Puedes proporcionar un conjunto de datos en el que cada fila sea un objeto JSON estructurado como una solicitud de la API de OpenAI. El servicio de evaluación de IA generativa detecta automáticamente este formato.
A continuación, se muestra un ejemplo de una sola línea con este formato:
{"request": {"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "What's the capital of France?"}], "model": "gpt-4o"}}
Puede usar estos datos para generar respuestas a partir de un modelo de terceros y evaluar las respuestas:
# 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()
Gestionar conversaciones multiturno
El servicio de evaluación de la IA generativa analiza automáticamente los datos de conversaciones multiturno de los formatos admitidos. Cuando los datos de entrada incluyen un historial de intercambios (por ejemplo, en el campo request.contents
del formato de Gemini o request.messages
del formato de OpenAI), el servicio de evaluación de IA generativa identifica las conversaciones anteriores y las procesa como conversation_history
.
Esto significa que no tienes que separar manualmente la petición actual de la conversación anterior, ya que las métricas de evaluación pueden usar el historial de la conversación para entender el contexto de la respuesta del modelo.
A continuación, se muestra un ejemplo de una conversación de varias interacciones en 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."}]}}
]
}
}
La conversación de varios turnos se analiza automáticamente de la siguiente manera:
prompt
: El último mensaje del usuario se identifica como la petición actual ({"role": "user", "parts": [{"text": "I'm thinking next spring. What are some must-see sights?"}]}
).conversation_history
: Los mensajes anteriores se extraen automáticamente y se ponen a disposición como historial de la conversación ([{"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
: La respuesta del modelo se toma del camporesponse
({"role": "model", "parts": [{"text": "For spring in Paris..."}]}
).