Evaluadores de agentes (vista previa) (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 agentes son asistentes de productividad poderosos. Planifican, toman decisiones y ejecutan acciones. Los agentes suelen razonar a partir de las intenciones del usuario en las conversaciones, seleccionar las herramientas adecuadas para satisfacer las solicitudes de los usuarios y completar tareas según las instrucciones. Microsoft Foundry soporta estos evaluadores específicos de agentes para flujos de trabajo agenticos:

Evaluating Azure AI agents

Los agentes emiten mensajes, y proporcionar entradas normalmente requiere analizar estos mensajes para extraer información relevante. Si estás creando agentes usando Azure AI Agent Service, el servicio ofrece integración nativa para evaluación que recibe directamente sus mensajes de agente. Para un ejemplo, véase Evaluar agentes de IA.

Además de IntentResolution, ToolCallAccuracy, y TaskAdherence, que son específicos de los flujos de trabajo agentes, puedes evaluar otros aspectos de calidad y seguridad de estos flujos utilizando un conjunto completo de evaluadores integrados. Foundry admite esta lista de evaluadores para los mensajes de agentes de IA de Azure desde nuestro convertidor:

  • Calidad: IntentResolution, ToolCallAccuracy, TaskAdherence, Relevance, Coherence, , y Fluency
  • Seguridad: CodeVulnerabilities, Violence, Self-harm, Sexual, HateUnfairness, IndirectAttack, , y ProtectedMaterials

Este artículo incluye ejemplos de IntentResolution, ToolCallAccuracy, y TaskAdherence. Para ejemplos de otros evaluadores con mensajes de agentes de IA Azure, véase evaluando Azure agentes IA.

Configuración de modelos para evaluadores asistidos por IA

Para referencia en los siguientes fragmentos de código, los evaluadores asistidos por IA utilizan una configuración de modelo para el juez del modelo de lenguaje grande (LLM-judge):

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

Azure AI Agent Service soporta AzureOpenAI o OpenAI razonamiento y modelos no razonantes para el juez LLM, dependiendo de los evaluadores:

Evaluators Modelos de razonamiento como juez (ejemplo: modelos de la serie o de Azure OpenAI / OpenAI) Modelos no razonantes como juez (ejemplo: gpt-4.1 o gpt-4o) To enable
IntentResolution, TaskAdherence, ToolCallAccuracy, ResponseCompleteness, Coherence, Fluency, Similarity, Groundedness, , RetrievalRelevance Supported Supported Establecer el parámetro is_reasoning_model=True adicional al inicializar evaluadores
Other evaluators Not Supported Supported --

Para una evaluación compleja que requiere razonamiento refinado, utiliza un modelo de razonamiento sólido, como 4.1-mini el que equilibra el rendimiento del razonamiento y la eficiencia de costes.

Intent resolution

IntentResolutionEvaluator Mide lo bien que el sistema identifica y entiende la solicitud de un usuario. Esta comprensión incluye cómo analiza la intención del usuario, hace preguntas para aclarar y recuerda a los usuarios finales el alcance de sus capacidades. Una puntuación más alta indica una mejor identificación de la intención del usuario.

Ejemplo de resolución de intención

from azure.ai.evaluation import IntentResolutionEvaluator

intent_resolution = IntentResolutionEvaluator(model_config=model_config, threshold=3)
intent_resolution(
    query="What are the opening hours of the Eiffel Tower?",
    response="Opening hours of the Eiffel Tower are 9:00 AM to 11:00 PM."
)

Salida de resolución de intención

La puntuación numérica utiliza una escala de Likert (entero del 1 al 5), donde una puntuación más alta es mejor. Dado un umbral numérico (el valor por defecto es 3), el evaluador responde si la puntuación es mayor o igual al umbral, o falla en caso contrario. Usar la razón y otros campos puede ayudarte a entender por qué la puntuación es alta o baja.

{
    "intent_resolution": 5,
    "intent_resolution_result": "pass",
    "intent_resolution_threshold": 3,
    "intent_resolution_reason": "The response provides the opening hours of the Eiffel Tower clearly and accurately, directly addressing the user's query. It includes specific times, which fully resolves the user's request for information about the opening hours.",
}

Si creas agentes fuera de Foundry Agent Service, este evaluador acepta un esquema típico para los mensajes de agente. Para explorar un cuaderno de ejemplo, consulta Resolución de Intención.

Precisión de llamadas a herramientas

ToolCallAccuracyEvaluator Mide la precisión y eficiencia de las llamadas a herramientas realizadas por un agente en una ejecución. Proporciona una puntuación del 1 al 5 basada en:

  • La relevancia y utilidad de la herramienta utilizada
  • La corrección de los parámetros utilizados en las llamadas a herramientas
  • Los recuentos de llamadas perdidas o excesivas

Compatibilidad con la evaluación de llamadas de herramientas

ToolCallAccuracyEvaluator apoya la evaluación en Servicio de Agentes para las siguientes herramientas:

  • File Search
  • Búsqueda de Azure AI
  • Bing Grounding
  • Bing Custom Search
  • SharePoint Grounding
  • Code Interpreter
  • agente de datos de Fabric
  • OpenAPI
  • Function Tool (herramientas definidas por el usuario)

Si se utiliza una herramienta no soportada en la ejecución del agente, el evaluador genera un pase y explica que no se soporta evaluar las herramientas. Este enfoque facilita filtrar estos casos. Recomendamos que incluyas herramientas no soportadas como herramientas definidas por el usuario para permitir la evaluación.

Ejemplo de precisión de llamadas a herramientas

from azure.ai.evaluation import ToolCallAccuracyEvaluator

tool_call_accuracy = ToolCallAccuracyEvaluator(model_config=model_config, threshold=3)

# provide the agent response with tool calls 
tool_call_accuracy(
    query="What timezone corresponds to 41.8781,-87.6298?",
    response=[
    {
        "createdAt": "2025-04-25T23:55:52Z",
        "run_id": "run_DmnhUGqYd1vCBolcjjODVitB",
        "role": "assistant",
        "content": [
            {
                "type": "tool_call",
                "tool_call_id": "call_qi2ug31JqzDuLy7zF5uiMbGU",
                "name": "azure_maps_timezone",
                "arguments": {
                    "lat": 41.878100000000003,
                    "lon": -87.629800000000003
                }
            }
        ]
    },    
    {
        "createdAt": "2025-04-25T23:55:54Z",
        "run_id": "run_DmnhUGqYd1vCBolcjjODVitB",
        "tool_call_id": "call_qi2ug31JqzDuLy7zF5uiMbGU",
        "role": "tool",
        "content": [
            {
                "type": "tool_result",
                "tool_result": {
                    "ianaId": "America/Chicago",
                    "utcOffset": None,
                    "abbreviation": None,
                    "isDaylightSavingTime": None
                }
            }
        ]
    },
    {
        "createdAt": "2025-04-25T23:55:55Z",
        "run_id": "run_DmnhUGqYd1vCBolcjjODVitB",
        "role": "assistant",
        "content": [
            {
                "type": "text",
                "text": "The timezone for the coordinates 41.8781, -87.6298 is America/Chicago."
            }
        ]
    }
    ],   
    tool_definitions=[
                {
                    "name": "azure_maps_timezone",
                    "description": "local time zone information for a given latitude and longitude.",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "lat": {
                                "type": "float",
                                "description": "The latitude of the location."
                            },
                            "lon": {
                                "type": "float",
                                "description": "The longitude of the location."
                            }
                        }
                    }
                }
    ]
)

# alternatively, provide the tool calls directly without the full agent response
tool_call_accuracy(
    query="How is the weather in Seattle?",
    tool_calls=[{
                    "type": "tool_call",
                    "tool_call_id": "call_CUdbkBfvVBla2YP3p24uhElJ",
                    "name": "fetch_weather",
                    "arguments": {
                        "location": "Seattle"
                    }
                }],
    tool_definitions=[{
                    "id": "fetch_weather",
                    "name": "fetch_weather",
                    "description": "Fetches the weather information for the specified location.",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "location": {
                                "type": "string",
                                "description": "The location to fetch weather for."
                            }
                        }
                    }
                }
    ]
)

Salida de precisión de llamadas a herramientas

La puntuación numérica está 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), el evaluador también indica aprobado si la puntuación >= umbral, o suspendido en caso contrario. Utiliza los campos de detalle de la razón y la llamada de herramientas para entender por qué la puntuación es alta o baja.

{
    "tool_call_accuracy": 5,
    "tool_call_accuracy_result": "pass",
    "tool_call_accuracy_threshold": 3,
    "details": {
        "tool_calls_made_by_agent": 1,
        "correct_tool_calls_made_by_agent": 1,
        "per_tool_call_details": [
            {
                "tool_name": "fetch_weather",
                "total_calls_required": 1,
                "correct_calls_made_by_agent": 1,
                "correct_tool_percentage": 100%,
                "tool_call_errors": 0,
                "tool_call_success_result": "pass"
            }
        ],
        "excess_tool_calls": {
            "total": 0,
            "details": []
        },
        "missing_tool_calls": {
            "total": 0,
            "details": []
        }
    }
}

Si construyes agentes fuera de Azure AI Agent Service, este evaluador acepta un esquema típico para mensajes de agentes. Para un cuaderno de ejemplo, véase Precisión de las llamadas a herramientas.

Task adherence

En varios sistemas de IA orientados a tareas, como los agentes de la empresa, es importante evaluar si el agente se mantiene en el camino para completar una tarea en lugar de realizar pasos ineficientes o fuera de alcance. TaskAdherenceEvaluator Mide qué tan bien se ajusta la respuesta de un agente a las tareas asignadas, según la instrucción de la tarea y las herramientas disponibles. La instrucción de tarea se extrae del mensaje del sistema y de la consulta del usuario. Una puntuación más alta indica una mejor adhesión a las instrucciones del sistema para resolver la tarea.

Ejemplo de adherencia a tareas

from azure.ai.evaluation import TaskAdherenceEvaluator

task_adherence = TaskAdherenceEvaluator(model_config=model_config)
task_adherence(
        query="What are the best practices for maintaining a healthy rose garden during the summer?",
        response="Make sure to water your roses regularly and trim them occasionally."                         
)

Salida de cumplimiento de tareas

El evaluador emite aprobado o suspendido en caso contrario. Utiliza el campo de razón para entender la razón detrás de la puntuación

{
    "task_adherence_result": "fail",
    "task_adherence_reason": "The response partially addresses the query by mentioning relevant practices but lacks critical details and depth, making it insufficient for a comprehensive understanding of maintaining a rose garden in summer."
}

Si estás construyendo agentes fuera de Azure AI Agent Service, este evaluador acepta un esquema típico para mensajes de agentes. Para un cuaderno de ejemplo, consulta Adherencia a las Tareas.