Las métricas basadas en modelos proporcionan varios enfoques para personalizar y ayudarte a generar métricas de evaluación según tus criterios y casos de uso. En esta página, se describe cómo configurar tu modelo de juez para tu caso de uso ideal.
Para conocer el flujo de trabajo de evaluación básico, consulta la guía de inicio rápido de Gen AI Evaluation Service. La serie de personalización avanzada de modelos de jueces incluye las siguientes páginas:
- Evalúa un modelo de juez
- Configura un modelo de juez (página actual)
Descripción general
Tienes las siguientes opciones para configurar tu modelo de juez y mejorar la calidad:
- Instrucciones del sistema: El modelo de juez puede procesar un conjunto de instrucciones antes de procesar las instrucciones de evaluación.
- Configuraciones del modelo de juez:
- Inversión de respuestas: Invierte las respuestas del modelo de referencia y del modelo candidato para reducir el sesgo del modelo de juez durante la evaluación.
- Muestreo múltiple: Ajusta la cantidad de veces que se llamará al modelo de juez para la puntuación de la evaluación para mejorar la coherencia.
- Modelo de evaluador ajustado: Usa un LLM ajustado como modelo de evaluador.
Instrucciones del sistema
Los modelos de Gemini pueden recibir instrucciones del sistema, que son un conjunto de instrucciones que afectan la forma en que el modelo procesa las instrucciones. Puedes usar instrucciones del sistema cuando inicialices o generes contenido a partir de un modelo para especificar el comportamiento a nivel del producto, como roles o personas, información contextual, y el estilo y el tono de la explicación. Por lo general, el modelo de juez pondera la importancia de las instrucciones del sistema por encima de las instrucciones de entrada.
En el siguiente ejemplo, se usa el SDK de Vertex AI para agregar system_instruction a nivel de la métrica para PointwiseMetric:
system_instruction = "You are an expert evaluator."
linguistic_acceptability = PointwiseMetric(
metric="linguistic_acceptability",
metric_prompt_template=linguistic_acceptability_metric_prompt_template,
system_instruction=system_instruction,
)
eval_result = EvalTask(
dataset=EVAL_DATASET,
metrics=[linguistic_acceptability]
).evaluate()
Puedes usar el mismo enfoque con PairwiseMetric.
Configuración del modelo de evaluación
Puedes personalizar aún más el modelo de juez con autorater_config:
Inversión de respuestas: Invierte las respuestas del modelo de referencia y del modelo candidato para reducir el sesgo del modelo de juez durante la evaluación.
Muestreo múltiple: Ajusta la cantidad de veces que se llama al modelo juez para obtener la puntuación de la evaluación y mejorar la coherencia.
Modelo de evaluador ajustado: Usa un LLM ajustado como modelo de evaluador.
Inversión de respuestas
En el caso de PairwiseMetrics, el servicio de evaluación de IA generativa toma las respuestas del modelo de referencia y del modelo candidato. El modelo de juez evalúa qué respuesta se alinea mejor con los criterios de la metric_prompt_template. Sin embargo, el modelo de juez puede estar sesgado hacia el modelo de referencia o el candidato en ciertos parámetros de configuración.
Para reducir el sesgo en los resultados de la evaluación, puedes habilitar el cambio de respuesta, en el que la mitad de las llamadas al modelo de juez cambia la respuesta del modelo de referencia y del modelo candidato con el SDK de Vertex AI:
from vertexai.preview.evaluation import AutoraterConfig
pairwise_relevance_prompt_template = """
# Instruction
…
### Response A
{baseline_model_response}
### Response B
{candidate_model_response}
"""
my_pairwise_metric = PairwiseMetric(
metric="my_pairwise_metric",
metric_prompt_template=pairwise_relevance_prompt_template,
candidate_response_field_name = "candidate_model_response",
baseline_response_field_name = "baseline_model_response"
)
# Define an AutoraterConfig with flip_enabled
my_autorater_config = AutoraterConfig(flip_enabled=True)
# Define an EvalTask with autorater_config
flip_enabled_eval_result = EvalTask(
dataset=EVAL_DATASET,
metrics=[my_pairwise_metric],
autorater_config=my_autorater_config,
).evaluate()
Muestreo múltiple
Cuando se realiza la evaluación, el modelo de juez puede mostrar cierta aleatoriedad en sus respuestas. El muestreo adicional puede ayudar a anular la aleatoriedad inherente del modelo de juez y generar resultados más coherentes.
Sin embargo, aumentar el muestreo también aumenta la latencia para completar la solicitud. Puedes actualizar el valor del recuento de muestreo con AutoraterConfig a un número entero entre 1 y 32. Recomendamos usar el valor predeterminado de 4 para sampling_count para equilibrar los dos factores de aleatoriedad y latencia.
Con el SDK de Vertex AI, puedes especificar la cantidad de muestras que se ejecutan para cada solicitud:
from vertexai.preview.evaluation import AutoraterConfig
# Define customized sampling count in AutoraterConfig
autorater_config = AutoraterConfig(sampling_count=6)
# Run evaluation with the sampling count.
eval_result = EvalTask(
dataset=EVAL_DATASET,
metrics=[METRICS],
autorater_config=autorater_config
).evaluate()
Modelo de juez ajustado
Si tienes buenos datos de ajuste para tu caso de uso de evaluación, puedes usar el SDK de Vertex AI para ajustar un modelo de Gemini como el modelo de juez y usar el modelo ajustado para la evaluación. Puedes especificar un modelo ajustado como el modelo de juez a través de AutoraterConfig:
from vertexai.preview.evaluation import {
AutoraterConfig,
PairwiseMetric,
tune_autorater,
evaluate_autorater,
}
# Tune a model to be the judge model. The tune_autorater helper function returns an AutoraterConfig with the judge model set as the tuned model.
autorater_config: AutoRaterConfig = tune_autorater(
base_model="gemini-2.0-flash",
train_dataset=f"{BUCKET_URI}/train/sft_train_samples.jsonl",
validation_dataset=f"{BUCKET_URI}/val/sft_val_samples.jsonl",
tuned_model_display_name=tuned_model_display_name,
)
# Alternatively, you can set up the judge model with an existing tuned model endpoint
autorater_config = AutoraterConfig(autorater_model=TUNED_MODEL)
# Use the tuned judge model
eval_result = EvalTask(
dataset=EVAL_DATASET,
metrics=[METRICS],
autorater_config=autorater_config,
).evaluate()