Évaluateurs d’agents (aperçu) (classique)

Affichage actuel :Version du portail - Foundry (classique)Passer à la version du nouveau portail Foundry

Note

Le sdk Microsoft Foundry pour l’évaluation et le portail Foundry sont en préversion publique, mais les API sont généralement disponibles pour l’évaluation du modèle et du jeu de données (l’évaluation de l’agent reste en préversion publique). Les Azure SDK d’évaluation IA et les évaluateurs marqués (préversion) dans cet article sont actuellement en préversion publique partout.

Les agents sont de puissants assistants de productivité. Ils planifient, prennent des décisions et mettent en œuvre des actions. Les agents raisonnent généralement selon les intentions des utilisateurs lors des conversations, choisissent les bons outils pour satisfaire les demandes des utilisateurs et accomplissent des tâches selon les instructions. Microsoft Foundry prend en charge ces évaluateurs spécifiques à chaque agent pour les flux de travail agents :

Evaluating Azure AI agents

Les agents émettent des messages, et fournir des entrées nécessite généralement d’analyser ces messages pour extraire les informations pertinentes. Si vous développez des agents avec Azure AI Agent Service, le service offre une intégration native pour l'évaluation qui prend directement leurs messages d'agent. Pour un exemple, voir Évaluer les agents IA.

En plus de IntentResolution, ToolCallAccuracy, et TaskAdherence, qui sont spécifiques aux flux de travail agentiques, vous pouvez évaluer d’autres aspects de qualité et de sécurité de ces flux de travail à l’aide d’une suite complète d’évaluateurs intégrés. Foundry prend en charge cette liste d’évaluateurs pour les messages d’agents IA Azure provenant de notre convertisseur :

  • Qualité : IntentResolution, ToolCallAccuracy, TaskAdherence, Relevance, , Coherence, et Fluency
  • Sécurité : CodeVulnerabilities, Violence, Self-harm, Sexual, HateUnfairness, IndirectAttack, , et ProtectedMaterials

Cet article inclut des exemples de IntentResolution, ToolCallAccuracy, et TaskAdherence. Pour des exemples d’autres évaluateurs ayant des messages d’agents IA Azure, voir evaluating Azure agents IA.

Configuration du modèle pour les évaluateurs assistés par IA

Pour référence dans les extraits de code suivants, les évaluateurs assistés par IA utilisent une configuration de modèle pour le grand juge de modèle de langage (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"),
)

Prise en charge des modèles évaluateurs

Azure AI Agent Service prend en charge AzureOpenAI ou OpenAI raisonnement c0 ainsi que les modèles non raisonnants pour le juge LLM selon les évaluateurs :

Evaluators Modèles de raisonnement en tant que juge (exemple : modèles de la série o d’Azure OpenAI / OpenAI) Modèles non raisonnants comme juge (exemple : gpt-4.1 ou gpt-4o) To enable
IntentResolution, , TaskAdherence, ResponseCompletenessToolCallAccuracy, , FluencyRetrievalSimilarityGroundednessCoherenceRelevance Supported Supported Définissez le paramètre is_reasoning_model=True supplémentaire lors de l’initialisation des évaluateurs
Other evaluators Not Supported Supported --

Pour une évaluation complexe nécessitant un raisonnement affiné, utilisez un modèle de raisonnement solide, comme 4.1-mini avec un équilibre entre performance de raisonnement et efficacité des coûts.

Intent resolution

IntentResolutionEvaluator Mesure la capacité du système à identifier et à comprendre la demande d’un utilisateur. Cette compréhension inclut la manière dont elle permet de définir l’intention de l’utilisateur, pose des questions pour clarifier et rappelle aux utilisateurs finaux l’étendue de ses capacités. Un score plus élevé indique une meilleure identification de l’intention de l’utilisateur.

Exemple de résolution d’intention

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."
)

Résolution d’intention sortie

Le score numérique utilise une échelle de Likert (entier de 1 à 5), où un score plus élevé est meilleur. Étant donné un seuil numérique (par défaut est 3), l’évaluateur réussit si le score est supérieur ou égal au seuil, ou échoue autrement. Utiliser la raison et d’autres champs peut vous aider à comprendre pourquoi le score est élevé ou bas.

{
    "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 vous construisez des agents en dehors de Foundry Agent Service, cet évaluateur accepte un schéma typique des messages d’agent. Pour explorer un exemple de carnet, voir Résolution d’intention.

Précision des appels d’outils

ToolCallAccuracyEvaluator mesure la précision et l’efficacité des appels d’outils effectués par un agent lors d’une exécution. Il fournit un score de 1 à 5 basé sur :

  • La pertinence et l’utilité de l’outil utilisé
  • La précision des paramètres utilisés lors des appels d’outils
  • Les comptes d’appels manquants ou excessifs

Prise en charge de l’évaluation des appels d’outil

ToolCallAccuracyEvaluator Prend en charge l’évaluation dans Agent Service pour les outils suivants :

  • File Search
  • Recherche Azure AI
  • Bing Grounding
  • Recherche personnalisée Bing
  • SharePoint Grounding
  • Code Interpreter
  • Fabric Data Agent
  • OpenAPI
  • Outil de fonction (outils définis par l’utilisateur)

Si un outil non pris en charge est utilisé lors de l’exécution de l’agent, l’évaluateur donne un passage et explique que l’évaluation des outils n’est pas prise en charge. Cette approche facilite le filtrage de ces cas. Nous recommandons d’envelopper les outils non pris en charge comme des outils définis par l’utilisateur pour permettre l’évaluation.

Exemple de précision des appels d’outil

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."
                            }
                        }
                    }
                }
    ]
)

Sortie de précision des appels d’outil

Le score numérique est sur une échelle de Likert (entier de 1 à 5). Un score plus élevé est mieux. Étant donné un seuil numérique (par défaut à 3), l’évaluateur indique également réussite si le score >= seuil, ou échoue sinon. Utilisez les champs de détail de la raison et de l’appel d’outils pour comprendre pourquoi le score est élevé ou bas.

{
    "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 vous construisez des agents en dehors d’Azure AI Agent Service, cet évaluateur accepte un schéma typique des messages d’agent. Pour un exemple de carnet, voir Précision des appels d’outils.

Task adherence

Dans divers systèmes d’IA orientés tâches, tels que les systèmes agentiques, il est important d’évaluer si l’agent reste sur la bonne voie pour accomplir une tâche plutôt que d’effectuer des étapes inefficaces ou hors de portée. TaskAdherenceEvaluator mesure la mesure dans quelle mesure la réponse d’un agent respecte ses tâches assignées, selon ses instructions de tâche et les outils disponibles. L’instruction de tâche est extraite du message système et de la requête utilisateur. Un score plus élevé indique une meilleure adhésion aux instructions système pour résoudre la tâche.

Exemple d’adhésion à la tâche

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."                         
)

Sortie d’adhésion aux tâches

L’évaluateur indique si vous réussissez ou échouez sinon. Utilisez le champ raison pour comprendre la raison derrière le score

{
    "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 vous développez des agents en dehors d'Azure AI Agent Service, cet évaluateur accepte un schéma typique des messages d'agent. Pour un exemple de carnet, voir Adhésion aux tâches.