Define tus métricas de evaluación.

Después de crear un conjunto de datos de evaluación, el siguiente paso es definir las métricas que se usan para medir el rendimiento del modelo. Los modelos de IA generativa pueden crear aplicaciones para una amplia variedad de tareas, y el servicio de evaluación de IA generativa usa un framework basado en pruebas que transforma la evaluación de calificaciones subjetivas en resultados objetivos y prácticos.

A continuación, se incluyen los conceptos básicos relacionados con las métricas de evaluación:

  • Rúbricas: Son los criterios para calificar la respuesta de un modelo o una aplicación de LLM.

  • Métricas: Es una puntuación que mide el resultado del modelo en comparación con las rúbricas de calificación.

El servicio de evaluación de 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 adaptables (recomendadas): Las rúbricas se generan de forma dinámica para cada instrucción. Las respuestas se evalúan con comentarios detallados y explicables de aprobación o rechazo específicos para la instrucción.

    • Rúbricas estáticas: Las rúbricas se definen de forma explícita y se aplica la misma rúbrica a todas las instrucciones. Las respuestas se evalúan con el mismo conjunto de evaluadores basados en puntuaciones numéricas. Una sola puntuación numérica (por ejemplo, de 1 a 5) por instrucción. Cuando se requiere una evaluación en una dimensión muy específica o cuando se requiere la misma rúbrica exacta en todas las instrucciones.

  • Métricas basadas en procesamiento: Evalúan las respuestas con algoritmos determinísticos, por lo general, con la verdad fundamental. Es una puntuación numérica (por ejemplo, de 0.0 a 1.0) por instrucción. Cuando la verdad fundamental está disponible y se puede correlacionar con un método determinístico.

  • Métricas de funciones personalizadas: Define tu propia métrica a través de una función de Python.

Métricas basadas en rúbricas

Las métricas basadas en rúbricas incorporan modelos de lenguaje grandes en los flujos de trabajo para evaluar la calidad de las respuestas del modelo. Las evaluaciones basadas en rúbricas son adecuadas para una variedad de tareas, en especial la calidad de la escritura, la seguridad y el cumplimiento de instrucciones, que a menudo son difíciles de evaluar con algoritmos determinísticos.

Rúbricas adaptables

Las rúbricas adaptativas funcionan como pruebas de unidades para tus modelos. Las rúbricas adaptativas generan de forma dinámica un conjunto único de pruebas de aprobación o reprobación para cada instrucción individual 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 podrían generar rúbricas adaptativas para un conjunto de instrucciones:

Instrucción Rúbricas adaptables
"Resume el siguiente artículo sobre los beneficios de la energía solar en menos de 100 palabras…"
  • ¿El resumen tiene menos de 100 palabras?
  • ¿El resumen enumera los beneficios de la energía solar?
  • ¿La respuesta contiene información que no está presente en el artículo?
"Escribe un correo electrónico breve y amigable para invitar a los empleados al picnic anual de la empresa. Menciona que la fecha es el 15 de septiembre y que habrá opciones vegetarianas disponibles…".
  • ¿El correo electrónico tiene un tono amigable y atractivo?
  • ¿El correo electrónico menciona que la fecha es el 15 de septiembre?
  • ¿El correo electrónico indica que habrá opciones vegetarianas disponibles?

Puedes acceder a las rúbricas adaptables a través del SDK. Te recomendamos que comiences con GENERAL_QUALITY como valor predeterminado.

Métrica de calidad general

GENERAL_QUALITY genera un conjunto de rúbricas que abarcan una variedad de tareas, como el seguimiento de instrucciones, el formato, el tono y el estilo, según la instrucció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 volver a usarlas en diferentes modelos y agentes) antes de usarlas para evaluar las respuestas del modelo:

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 la generación de la rúbrica se centre en los criterios que son más importantes para ti. Luego, el servicio de evaluación de IA generativa genera rúbricas que abarcan tanto sus tareas predeterminadas como los lineamientos que especificas.

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 segmentadas

Si necesitas evaluar un aspecto más específico de la calidad del modelo, puedes usar métricas que generen rúbricas enfocadas en un área específica. 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 qué tan bien se ajusta la respuesta a las instrucciones y restricciones específicas de la instrucción.

  • TEXT_QUALITY: Se enfoca específicamente en la calidad lingüística de la respuesta y evalúa la fluidez, la coherencia y la gramática.

Conversación de varios turnos

  • 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 varios turnos.

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 detalles sobre las rúbricas adaptables segmentadas, consulta Detalles de la rúbrica adaptable.

Rúbricas estáticas

Una rúbrica estática aplica un único conjunto fijo de lineamientos de puntuación a cada ejemplo de tu conjunto de datos. Este enfoque basado en la puntuación es útil cuando necesitas medir el rendimiento en comparación con una comparativa coherente en todas las instrucciones.

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 IA generativa proporciona las siguientes métricas de rúbrica estáticas:

  • GROUNDING: Verifica la facticidad y la coherencia en comparación con un texto fuente proporcionado (verdad fundamental). Esta métrica es fundamental para los sistemas de RAG.

  • SAFETY: Evalúa si la respuesta del modelo incumple las políticas de seguridad, como la incitación al odio o la violencia, o el contenido peligroso.

También puedes usar plantillas de instrucciones 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,
    ],
)

Cómo personalizar rúbricas estáticas

Para 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 instrucción de evaluación para garantizar resultados coherentes y confiables. Te recomendamos que uses lineamientos con GENERAL_QUALITY antes de personalizar las 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 procesamiento

Las métricas basadas en procesamiento utilizan algoritmos determinísticos para calificar 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 una respuesta "correcta" está bien definida.

  • Recall-Oriented Understudy for Gisting Evaluation (rouge_l, rouge_1): Mide la superposición de n-gramas (secuencias contiguas de palabras) entre la respuesta del modelo y un texto de referencia. Se usa comúnmente para evaluar el resumen de texto.

  • Bilingual Evaluation Understudy (BLEU): Mide el grado de similitud entre una respuesta y un texto de referencia de alta calidad contando los n-gramas coincidentes. Es la métrica estándar para la calidad de la traducción, pero también se puede usar para 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 las tareas de respuesta a preguntas basadas en hechos o 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 puedes implementar lógica de evaluación personalizada pasando una función de Python personalizada al parámetro custom_function. El servicio de evaluación de IA generativa ejecuta esta función para 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]
)

¿Qué sigue?