Agent evaluators (preview) (klassiek)

Momenteel weergeven:Foundry -portalversie - (klassiek)Overschakelen naar versie voor de nieuwe Foundry-portal

Note

De Microsoft Foundry SDK voor evaluatie en Foundry-portal zijn beschikbaar in openbare preview, maar de API's zijn algemeen beschikbaar voor model- en gegevenssetevaluatie (agentevaluatie blijft in openbare preview). De Azure AI Evaluation SDK en evaluators die in dit artikel zijn gemarkeerd (preview) zijn momenteel overal in openbare preview.

Agenten zijn krachtige productiviteitsassistenten. Ze plannen, nemen beslissingen en voeren acties uit. Agenten redeneren doorgaans door de intenties van gebruikers in gesprekken, selecteren de juiste tools om aan gebruikersverzoeken te voldoen en voeren taken uit volgens de instructies. Microsoft Foundry ondersteunt deze agent-specifieke evaluators voor agentische workflows:

Evaluatie van Azure AI-agenten

Agenten zenden berichten uit, en het leveren van invoer vereist doorgaans het parsen van deze berichten om relevante informatie te extraheren. Als je agenten bouwt met Azure AI Agent Service, biedt de service native integratie voor evaluatie die direct hun agentberichten meeneemt. Voor een voorbeeld, zie AI-agenten evalueren.

Naast IntentResolution, ToolCallAccuracy, en TaskAdherence, die specifiek zijn voor agentische workflows, kun je andere kwaliteits- en veiligheidsaspecten van deze workflows beoordelen met behulp van een uitgebreide suite van ingebouwde evaluators. Foundry ondersteunt deze lijst van evaluators voor Azure AI-agentberichten van onze converter:

  • Kwaliteit: IntentResolution, ToolCallAccuracy, TaskAdherence, , Relevance, Coherenceen Fluency
  • Veiligheid: CodeVulnerabilities, Violence, Self-harm, Sexual, HateUnfairness, , IndirectAttacken ProtectedMaterials

Dit artikel bevat voorbeelden van IntentResolution, ToolCallAccuracy, en TaskAdherence. Voor voorbeelden van andere evaluators met Azure AI-agentberichten, zie evaluating Azure AI-agenten.

Modelconfiguratie voor AI-ondersteunde evaluators

Ter referentie in de volgende codefragmenten gebruiken de AI-ondersteunde evaluators een modelconfiguratie voor de grote taalmodel-judge (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"),
)

Ondersteuning voor evaluatormodellen

Azure AI Agent Service ondersteunt AzureOpenAI of OpenAI redeneermodellen en niet-redeneermodellen voor de LLM-beoordelaar, afhankelijk van de beoordelaars:

Evaluators Redeneermodellen als jurylid (voorbeeld: o-serie modellen van Azure OpenAI / OpenAI) Niet-redenerende modellen als rechter (voorbeeld: gpt-4.1 of gpt-4o) To enable
IntentResolution, , ToolCallAccuracy, ResponseCompletenessTaskAdherence, , Coherence, Fluency, , RetrievalGroundednessSimilarityRelevance Supported Supported Stel de extra parameter is_reasoning_model=True in bij het initialiseren van evaluators
Other evaluators Not Supported Supported --

Voor complexe evaluaties die verfijnd redeneren vereisen, gebruik een sterk redeneermodel zoals 4.1-mini met een balans tussen redeneerprestaties en kostenefficiëntie.

Intent resolution

IntentResolutionEvaluator meet hoe goed het systeem het verzoek van een gebruiker herkent en begrijpt. Dit begrip omvat hoe goed het de intentie van de gebruiker inschat, vragen stelt om het te verduidelijken en de eindgebruikers herinnert aan de mogelijkheden ervan. Een hogere score duidt op een betere identificatie van gebruikersintentie.

Voorbeeld van intentie-resolutie

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

Intentieresolutie-uitvoer

De numerieke score gebruikt een Likert-schaal (geheel getal 1 tot 5), waarbij een hogere score beter is. Gegeven een numerieke drempel (standaard is 3), geeft de evaluator als slagen als de score hoger is dan of gelijk is aan de drempel, of faalt anders. Het gebruik van de reden en andere velden kan je helpen begrijpen waarom de score hoog of laag is.

{
    "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.",
}

Als je agenten buiten Foundry Agent Service bouwt, accepteert deze evaluator een schema dat typisch is voor agentberichten. Om een voorbeeldnotitieboek te verkennen, zie Intent Resolution.

Nauwkeurigheid van gereedschapsoproepen

ToolCallAccuracyEvaluator meet de nauwkeurigheid en efficiëntie van gereedschapsoproepen die een agent tijdens een run maakt. Het geeft een score van 1 tot 5 op basis van:

  • De relevantie en het nut van het gebruikte hulpmiddel
  • De correctheid van parameters die in toolcalls worden gebruikt
  • Het aantal vermiste of overmatige oproepen

Ondersteuning voor evaluatie van hulpprogrammagesprekken

ToolCallAccuracyEvaluator ondersteunt evaluatie in Agent Service voor de volgende tools:

  • File Search
  • Azure AI Zoeken
  • Bing Grounding
  • Bing Aangepaste zoekopdrachten
  • SharePoint Grounding
  • Code Interpreter
  • Fabric gegevensagent
  • OpenAPI
  • Functiehulpprogramma (door de gebruiker gedefinieerde hulpprogramma's)

Als een niet-ondersteund hulpmiddel wordt gebruikt in de agentrun, geeft de evaluator een pass en legt uit dat het evalueren van de tools niet wordt ondersteund. Deze aanpak maakt het gemakkelijk om deze gevallen eruit te filteren. We raden aan om niet-ondersteunde tools als door de gebruiker gedefinieerde tools te verpakken om evaluatie mogelijk te maken.

Voorbeeld van nauwkeurigheid van gereedschapsoproepen

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

Nauwkeurigheidsuitvoer van gereedschapsoproepen

De numerieke score is op een Likert-schaal (geheel getal 1 tot 5). Een hogere score is beter. Gegeven een numerieke drempel (standaard 3), geeft de evaluator ook 'slaag' als de score >= drempel is, of faalt anders. Gebruik de details van de reden en tool-aanroep om te begrijpen waarom de score hoog of laag is.

{
    "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": []
        }
    }
}

Als je agents buiten Azure AI Agent Service bouwt, accepteert deze evaluator een schema dat typisch is voor agentberichten. Voor een voorbeeldnotitieboek, zie Tool Call Accuracy.

Task adherence

In verschillende taakgerichte AI-systemen, zoals agentische systemen, is het belangrijk te beoordelen of de agent op schema blijft om een taak te voltooien in plaats van inefficiënte of buiten de scope gerichte stappen te zetten. TaskAdherenceEvaluator Meet hoe goed de reactie van een agent voldoet aan hun toegewezen taken, volgens hun taakinstructies en beschikbare tools. De taakinstructie wordt geëxtraheerd uit het systeembericht en de gebruikersquery. Een hogere score duidt op betere naleving van de systeeminstructie voor het afronden van de taak.

Voorbeeld van taak-naleving

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

Taak-naleving output

De evaluator geeft verder een slagen of zakken . Gebruik het redenenveld om de redenatie achter de score te begrijpen

{
    "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."
}

Als je agenten buiten Azure AI Agent Service bouwt, accepteert deze evaluator een schema dat typisch is voor agentberichten. Voor een voorbeeldnotitieboek, zie Taakvolging.