Una vez que haya creado un conjunto de datos de evaluación, el siguiente paso es definir las métricas que se usarán para medir el rendimiento del modelo. Los modelos de IA generativa pueden crear aplicaciones para una gran variedad de tareas, y el servicio de evaluación de IA generativa usa un marco basado en pruebas que transforma las valoraciones subjetivas en resultados objetivos y prácticos.
Estos son los conceptos básicos relacionados con las métricas de evaluación:
Rúbricas: los criterios para calificar la respuesta de un modelo o una aplicación de LLM.
Métricas: una puntuación que mide el resultado del modelo en comparación con las rúbricas de evaluación.
El servicio de evaluación de la IA generativa ofrece las siguientes categorías de métricas:
Métricas basadas en rúbricas: incorpora LLMs en los flujos de trabajo de evaluación.
Rúbricas adaptativas (opción recomendada): las rúbricas se generan de forma dinámica para cada petición. Las respuestas se evalúan con comentarios detallados y explicables sobre si se han superado o no, específicos de la petición.
Rúbricas estáticas: las rúbricas se definen explícitamente y se aplica la misma rúbrica a todas las peticiones. Las respuestas se evalúan con el mismo conjunto de evaluadores numéricos. Una sola puntuación numérica (por ejemplo, del 1 al 5) por petición. Cuando se requiere una evaluación en una dimensión muy específica o cuando se necesita la misma rúbrica exacta en todas las peticiones.
Métricas basadas en cálculos: evalúan las respuestas con algoritmos deterministas, normalmente usando la verdad fundamental. Una puntuación numérica (por ejemplo, de 0,0 a 1,0) por petición. Cuando se dispone de la verdad fundamental y se puede asociar a un método determinista.
Métricas de función personalizada: define tu propia métrica mediante una función de Python.
Métricas basadas en rúbricas
Las métricas basadas en rúbricas incorporan modelos de lenguaje extensos en los flujos de trabajo para evaluar la calidad de las respuestas del modelo. Las evaluaciones basadas en rúbricas son adecuadas para diversas tareas, especialmente para evaluar la calidad de la escritura, la seguridad y el cumplimiento de las instrucciones, que a menudo son difíciles de evaluar con algoritmos deterministas.
Rúbricas adaptativas
Las rúbricas adaptativas funcionan como pruebas unitarias de tus modelos. Las rúbricas adaptativas generan dinámicamente un conjunto único de pruebas de aprobado o suspenso para cada petición de tu conjunto de datos. Las rúbricas mantienen la evaluación pertinente para la tarea solicitada y tienen como objetivo proporcionar resultados objetivos, explicables y coherentes.
En el siguiente ejemplo se muestra cómo se pueden generar rúbricas adaptativas para un conjunto de peticiones:
Petición | Rúbricas adaptativas |
---|---|
"Resume el siguiente artículo sobre las ventajas de la energía solar en menos de 100 palabras…" |
|
"Escribe un correo breve y amable para invitar a los empleados al picnic anual de la empresa. Menciona que es el 15 de septiembre y que habrá opciones vegetarianas…" |
|
Puedes acceder a las rúbricas adaptativas a través del SDK. Te recomendamos que empieces con GENERAL_QUALITY
como valor predeterminado.
Métrica de calidad general
GENERAL_QUALITY
genera un conjunto de rúbricas que abarcan varias tareas, como seguir instrucciones, dar formato, definir el tono y el estilo, en función de la petición de entrada. Puedes combinar la generación de rúbricas con la validación en la siguiente línea de código:
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.GENERAL_QUALITY,
],
)
Puedes generar rúbricas por separado (para revisarlas o reutilizarlas en diferentes modelos y agentes) antes de usarlas para evaluar las respuestas de los modelos:
from vertexai import types
# Use GENERAL_QUALITY recipe to generate rubrics, and store them
# as a rubric group named "general_quality_rubrics".
data_with_rubrics = client.evals.generate_rubrics(
src=eval_dataset_df,
rubric_group_name="general_quality_rubrics",
predefined_spec_name=types.RubricMetric.GENERAL_QUALITY,
)
# Specify the group of rubrics to use for the evaluation.
eval_result = client.evals.evaluate(
dataset=data_with_rubrics,
metrics=[types.RubricMetric.GENERAL_QUALITY(
rubric_group_name="general_quality_rubrics",
)],
)
También puedes guiar a GENERAL_QUALITY
con lenguaje natural guidelines
para que se centre en los criterios que más te interesen a la hora de generar la rúbrica. A continuación, el servicio de evaluación de IA generativa genera rúbricas que abarcan tanto sus tareas predeterminadas como las directrices que especifiques.
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.GENERAL_QUALITY(
metric_spec_parameters={
"guidelines": "The response must maintain a professional tone and must not provide financial advice."
}
)
],
)
Métricas de calidad de segmentación
Si necesitas evaluar un aspecto más específico de la calidad del modelo, puedes usar métricas que generen rúbricas centradas en un área concreta. Por ejemplo:
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.TEXT_QUALITY,
types.RubricMetric.INSTRUCTION_FOLLOWING,
],
)
El servicio de evaluación de IA generativa ofrece los siguientes tipos de rúbricas adaptativas:
INSTRUCTION_FOLLOWING
: mide el grado de cumplimiento de las restricciones e instrucciones específicas de la petición.TEXT_QUALITY
: se centra específicamente en la calidad lingüística de la respuesta, evaluando la fluidez, la coherencia y la gramática.
Conversación multiturno
multi_turn_general_quality
: evalúa la calidad general de la conversación en un diálogo de varios turnos.multi_turn_text_quality
: evalúa la calidad del texto de las respuestas en un diálogo de varias interacciones.
Evaluación de agentes
final_response_reference_free
: evalúa la calidad de la respuesta final de un agente sin necesidad de una respuesta de referencia.
Para obtener más información sobre las rúbricas adaptativas orientadas, consulta Detalles de las rúbricas adaptativas.
Rúbricas estáticas
Una rúbrica estática aplica un único conjunto fijo de directrices de puntuación a todos los ejemplos de tu conjunto de datos. Este enfoque basado en puntuaciones es útil cuando necesitas medir el rendimiento en comparación con una métrica coherente en todas las peticiones.
Por ejemplo, la siguiente rúbrica estática califica la calidad del texto en una escala del 1 al 5:
5: (Very good). Exceptionally clear, coherent, fluent, and concise. Fully adheres to instructions and stays grounded.
4: (Good). Well-written, coherent, and fluent. Mostly adheres to instructions and stays grounded. Minor room for improvement.
3: (Ok). Adequate writing with decent coherence and fluency. Partially fulfills instructions and may contain minor ungrounded information. Could be more concise.
2: (Bad). Poorly written, lacking coherence and fluency. Struggles to adhere to instructions and may include ungrounded information. Issues with conciseness.
1: (Very bad). Very poorly written, incoherent, and non-fluent. Fails to follow instructions and contains substantial ungrounded information. Severely lacking in conciseness.
El servicio de evaluación de la IA generativa proporciona las siguientes métricas de rúbrica estáticas:
GROUNDING
: comprueba la veracidad y la coherencia en relación con un texto de origen proporcionado (verdad fundamental). Esta métrica es fundamental para los sistemas RAG.SAFETY
: evalúa si la respuesta del modelo infringe las políticas de seguridad, como la incitación al odio o el contenido peligroso.
También puedes usar plantillas de peticiones de métricas, como FLUENCY
.
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.RubricMetric.SAFETY,
types.RubricMetric.GROUNDING,
types.RubricMetric.FLUENCY,
],
)
Personalizar rúbricas estáticas
Si tienes necesidades muy especializadas, puedes crear tu propia rúbrica estática. Este método ofrece el máximo control, pero requiere que diseñes cuidadosamente la petición de evaluación para obtener resultados coherentes y fiables. Te recomendamos que uses directrices con GENERAL_QUALITY
antes de personalizar rúbricas estáticas.
# Define a custom metric to evaluate language simplicity
simplicity_metric = types.LLMMetric(
name='language_simplicity',
prompt_template=types.MetricPromptBuilder(
instruction="Evaluate the story's simplicity for a 5-year-old.",
criteria={
"Vocabulary": "Uses simple words.",
"Sentences": "Uses short sentences.",
},
rating_scores={
"5": "Excellent: Very simple, ideal for a 5-year-old.",
"4": "Good: Mostly simple, with minor complex parts.",
"3": "Fair: Mix of simple and complex; may be challenging for a 5-year-old.",
"2": "Poor: Largely too complex, with difficult words/sentences.",
"1": "Very Poor: Very complex, unsuitable for a 5-year-old."
}
)
)
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
simplicity_metric
],
)
Métricas basadas en cálculos
Las métricas basadas en cálculos usan algoritmos deterministas para puntuar la respuesta de un modelo comparándola con una respuesta de referencia. Requieren una verdad fundamental en tu conjunto de datos y son ideales para tareas en las que la respuesta "correcta" está bien definida.
Recall-Oriented Understudy for Gisting Evaluation (rouge_l y rouge_1): mide la superposición de n-gramas (secuencias contiguas de palabras) entre la respuesta del modelo y un texto de referencia. Se suele usar para evaluar la generación de resúmenes de texto.
Bilingual Evaluation Understudy (BLEU): mide la similitud de una respuesta con un texto de referencia de alta calidad contando los n-gramas coincidentes. Es la métrica estándar de calidad de la traducción, pero también se puede usar en otras tareas de generación de texto.
Concordancia exacta (exact_match): mide el porcentaje de respuestas que son idénticas a la respuesta de referencia. Esto es útil para responder preguntas basadas en hechos o tareas en las que solo hay una respuesta correcta.
from vertexai import types
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[
types.Metric(name='bleu'),
types.Metric(name='rouge_l'),
types.Metric(name='exact_match')
],
)
Métrica de función personalizada
También puede implementar una lógica de evaluación personalizada transfiriendo una función de Python personalizada al parámetro custom_function
. El servicio de evaluación de IA generativa ejecuta esta función en cada fila de tu conjunto de datos.
# Define a custom function to check for the presence of a keyword
def contains_keyword(instance: dict) -> dict:
keyword = "magic"
response_text = instance.get("response", "")
score = 1.0 if keyword in response_text.lower() else 0.0
return {"score": score}
keyword_metric = types.Metric(
name="keyword_check",
custom_function=contains_keyword
)
eval_result = client.evals.evaluate(
dataset=eval_dataset,
metrics=[keyword_metric]
)