Evaluadores de propósito general (clásico)

Visualización actual:Versión - del portal de Foundry (clásico)Cambio a la versión del nuevo portal de Foundry

Note

El SDK de Microsoft Foundry para la evaluación y el portal de Foundry están en versión preliminar pública, pero las API están disponibles con carácter general para la evaluación del modelo y del conjunto de datos (la evaluación del agente permanece en versión preliminar pública). Los Azure SDK y evaluadores de evaluación de IA marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública en todas partes.

Los sistemas de IA pueden generar respuestas textuales incoherentes o carecer de la calidad general de escritura más allá de la corrección gramatical mínima. Para abordar estos problemas, Microsoft Foundry apoya la evaluación de la coherencia y la fluidez.

Si tienes un escenario de preguntas y respuestas (QA) con ambos context datos ground truth y además de query y response, también puedes usar nuestro QAEvaluator, que es un evaluador compuesto que utiliza evaluadores relevantes para el juicio.

Configuración de modelos para evaluadores asistidos por IA

Para referencia en el siguiente fragmento de código, los evaluadores asistidos por IA utilizan una configuración de modelo de la siguiente manera:

import os
from azure.ai.evaluation import AzureOpenAIModelConfiguration
from dotenv import load_dotenv
load_dotenv()

model_config = AzureOpenAIModelConfiguration(
    azure_endpoint=os.environ["AZURE_ENDPOINT"],
    api_key=os.environ.get("AZURE_API_KEY"),
    azure_deployment=os.environ.get("AZURE_DEPLOYMENT_NAME"),
    api_version=os.environ.get("AZURE_API_VERSION"),
)

Soporte para modelos evaluadores

Foundry soporta AzureOpenAI o OpenAI y modelos no razonantes para el juez de modelos de lenguaje grandes (LLM-judge), dependiendo de los evaluadores:

Evaluators Modelos de razonamiento como juez (ejemplo: modelos de serie o de Azure OpenAI /OpenAI) Modelos sin razonamiento como Juez (ejemplo: gpt-4.1, gpt-4o, etc.) To enable
IntentResolution, TaskAdherence, ToolCallAccuracy, ResponseCompleteness, Coherence, Fluency, Similarity, Groundedness, , RetrievalRelevance Supported Supported Establecimiento de parámetros is_reasoning_model=True adicionales para inicializar evaluadores
Other evaluators Not Supported Supported --

Para evaluaciones complejas que requieren razonamiento refinado, recomendamos un modelo de razonamiento sólido, como 4.1-mini el que equilibra el rendimiento del razonamiento y la eficiencia de costes.

Coherence

El evaluador de coherencia mide la presentación lógica y ordenada de ideas en una respuesta, lo que permite al lector seguir y comprender fácilmente el entrenamiento de pensamiento del escritor. Una respuesta coherente aborda directamente la pregunta con conexiones claras entre oraciones y párrafos, utilizando las transiciones adecuadas y una secuencia lógica de ideas. Las puntuaciones más altas significan una mejor coherencia.

Coherence example

from azure.ai.evaluation import CoherenceEvaluator

coherence = CoherenceEvaluator(model_config=model_config, threshold=3)
coherence(
    query="Is Marie Curie is born in Paris?", 
    response="No, Marie Curie is born in Warsaw."
)

Coherence output

La puntuación numérica en una escala de Likert (entero del 1 al 5). Una puntuación más alta es mejor. Dado un umbral numérico (por defecto 3), también muestra aprobado si la puntuación >= umbral, o si falla en caso contrario. Usa el campo de razón para entender por qué la puntuación es alta o baja.

{
    "coherence": 4.0,
    "gpt_coherence": 4.0,
    "coherence_reason": "The RESPONSE is coherent and directly answers the QUERY with relevant information, making it easy to follow and understand.",
    "coherence_result": "pass",
    "coherence_threshold": 3
}

Fluency

El evaluador de fluidez mide la eficacia y claridad de la comunicación escrita. Esta medida se centra en la precisión gramatical, el intervalo de vocabulario, la complejidad de las oraciones, la coherencia y la legibilidad general. Evalúa cómo se transmiten las ideas sin problemas y la facilidad con la que el lector puede entender el texto.

Fluency example

from azure.ai.evaluation import FluencyEvaluator

fluency = FluencyEvaluator(model_config=model_config, threshold=3)
fluency(
    response="No, Marie Curie is born in Warsaw."
)

Fluency output

La puntuación numérica en una escala de Likert (entero del 1 al 5). Una puntuación más alta es mejor. Dado un umbral numérico (por defecto 3), también muestra aprobado si la puntuación >= umbral, o si falla en caso contrario. Usa el campo de razón para entender por qué la puntuación es alta o baja.

{
    "fluency": 3.0,
    "gpt_fluency": 3.0,
    "fluency_reason": "The response is clear and grammatically correct, but it lacks complexity and variety in sentence structure, which is why it fits the \"Competent Fluency\" level.",
    "fluency_result": "pass",
    "fluency_threshold": 3
}

Evaluador compuesto que responde a preguntas

QAEvaluator Mide de forma exhaustiva varios aspectos en un escenario de respuesta a preguntas:

  • Relevance
  • Groundedness
  • Fluency
  • Coherence
  • Similarity
  • F1 score

QA example

from azure.ai.evaluation import QAEvaluator

qa_eval = QAEvaluator(model_config=model_config, threshold=3)
qa_eval(
    query="Where was Marie Curie born?", 
    context="Background: 1. Marie Curie was a chemist. 2. Marie Curie was born on November 7, 1867. 3. Marie Curie is a French scientist.",
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

QA output

Mientras que la puntuación F1 genera una puntuación numérica en una escala flotante de 0 a 1, los demás evaluadores emiten puntuaciones numéricas en una escala de Likert (entero del 1 al 5). Una puntuación más alta es mejor. Dado un umbral numérico (por defecto 3), también muestra aprobado si la puntuación >= umbral, o si falla en caso contrario. Usa el campo de razón para entender por qué la puntuación es alta o baja.

{
    "f1_score": 0.631578947368421,
    "f1_result": "pass",
    "f1_threshold": 3,
    "similarity": 4.0,
    "gpt_similarity": 4.0,
    "similarity_result": "pass",
    "similarity_threshold": 3,
    "fluency": 3.0,
    "gpt_fluency": 3.0,
    "fluency_reason": "The input Data should get a Score of 3 because it clearly conveys an idea with correct grammar and adequate vocabulary, but it lacks complexity and variety in sentence structure.",
    "fluency_result": "pass",
    "fluency_threshold": 3,
    "relevance": 3.0,
    "gpt_relevance": 3.0,
    "relevance_reason": "The RESPONSE does not fully answer the QUERY because it fails to explicitly state that Marie Curie was born in Warsaw, which is the key detail needed for a complete understanding. Instead, it only negates Paris, which does not fully address the question.",
    "relevance_result": "pass",
    "relevance_threshold": 3,
    "coherence": 2.0,
    "gpt_coherence": 2.0,
    "coherence_reason": "The RESPONSE provides some relevant information but lacks a clear and logical structure, making it difficult to follow. It does not directly answer the question in a coherent manner, which is why it falls into the \"Poorly Coherent Response\" category.",
    "coherence_result": "fail",
    "coherence_threshold": 3,
    "groundedness": 3.0,
    "gpt_groundedness": 3.0,
    "groundedness_reason": "The response attempts to answer the query about Marie Curie's birthplace but includes incorrect information by stating she was not born in Paris, which is irrelevant. It does provide the correct birthplace (Warsaw), but the misleading nature of the response affects its overall groundedness. Therefore, it deserves a score of 3.",
    "groundedness_result": "pass",
    "groundedness_threshold": 3
}