Model- en agentdoelen evalueren met Microsoft Foundry SDK

Verzend testquery's naar geïmplementeerde modellen, promptagenten of gehoste agents en evalueer de antwoorden die tijdens de runtime zijn gegenereerd.

Prerequisites

In de voorbeelden wordt de SDK-client gebruikt die is geconfigureerd in de SDK-client instellen.

Een modeldoel evalueren

Query's verzenden naar een geïmplementeerd model tijdens runtime. Evalueer de antwoorden met behulp van het azure_ai_target_completions gegevensbrontype met een azure_ai_model doel. Uw invoergegevens bevatten query’s. Het model genereert antwoorden die u vervolgens evalueert.

Important

Voordat u begint, voltooit u de installatie van de client en bereidt u invoergegevens voor.

Note

U kunt de modelrouter gebruiken als doelmodel. Modelrouter wordt alleen ondersteund als evaluatiedoel. Het kan niet worden geselecteerd als model voor een andere evaluatiefunctie.

De berichtsjabloon en het doel definiëren

De input_messages sjabloon bepaalt hoe query's naar het model worden verzonden. Gebruik {{item.query}} dit om te verwijzen naar velden uit uw invoergegevens. Geef het model op voor het evalueren en optionele steekproefparameters:

input_messages = {
    "type": "template",
    "template": [
        {
            "type": "message",
            "role": "user",
            "content": {
                "type": "input_text",
                "text": "{{item.query}}"
            }
        }
    ]
}

target = {
    "type": "azure_ai_model",
    "model": "gpt-5-mini",
    "sampling_params": {
        "top_p": 1.0,
        "max_completion_tokens": 2048,
    },
}

Beoordelaars en gegevenskoppelingen instellen

Wanneer het model tijdens runtime antwoorden genereert, gebruikt u {{sample.output_text}} in data_mapping om naar de uitvoer van het model te verwijzen. Gebruik {{item.field}} dit om te verwijzen naar velden uit uw invoergegevens.

data_source_config = DataSourceConfigCustom(
    type="custom",
    item_schema={
        "type": "object",
        "properties": {
            "query": {"type": "string"},
        },
        "required": ["query"],
    },
    include_sample_schema=True,
)

testing_criteria = [
    TestingCriterionAzureAIEvaluator(
        type="azure_ai_evaluator",
        name="coherence",
        evaluator_name="builtin.coherence",
        initialization_parameters={"model": model_deployment_name},
        data_mapping={
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    ),
    TestingCriterionAzureAIEvaluator(
        type="azure_ai_evaluator",
        name="violence",
        evaluator_name="builtin.violence",
        data_mapping={
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    ),
]

Evaluatie maken en uitvoeren

eval_object = openai_client.evals.create(
    name="Model Target Evaluation",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

data_source = {
    "type": "azure_ai_target_completions",
    "source": {
        "type": "file_id",
        "id": data_id,
    },
    "input_messages": input_messages,
    "target": target,
}

eval_run = openai_client.evals.runs.create(
    eval_id=eval_object.id,
    name="model-target-evaluation",
    data_source=data_source,
)

Zie sample_model_evaluation.py op GitHub voor een volledig voorbeeld dat kan worden uitgevoerd. Als u wilt controleren of het proces is voltooid en de resultaten wilt interpreteren, raadpleegt u Resultaten van cloudevaluatie ophalen.

Tip

Als u een andere evaluatieuitvoering wilt toevoegen, gebruikt u dezelfde code.

Een agentdoel evalueren

Verzend query's tijdens runtime naar een Foundry-agent en evalueer de antwoorden met behulp van het azure_ai_target_completions gegevensbrontype met een azure_ai_agent doel. Dit scenario werkt voor zowel prompt-agenten als gehoste agents.

Important

Voordat u begint, voltooit u de installatie van de client en bereidt u invoergegevens voor.

Tip

Gehoste agents die gebruikmaken van het antwoordprotocol werken met dezelfde codevoorbeelden die hier worden weergegeven. Voor gehoste agents die gebruikmaken van het aanroepprotocol, is de input_messages indeling anders. Zie het protocol voor gehoste agent-aanroepen voor meer informatie.

De berichtsjabloon en het doel definiëren

De input_messages sjabloon bepaalt hoe query's naar de agent worden verzonden. Gebruik {{item.query}} dit om te verwijzen naar velden uit uw invoergegevens. Specificeer de agent die op naam moet worden geëvalueerd.

input_messages = {
    "type": "template",
    "template": [
        {
            "type": "message",
            "role": "developer",
            "content": {
                "type": "input_text",
                "text": "You are a helpful assistant. Answer clearly and safely."
            }
        },
        {
            "type": "message",
            "role": "user",
            "content": {
                "type": "input_text",
                "text": "{{item.query}}"
            }
        }
    ]
}

target = {
    "type": "azure_ai_agent",
    "name": "my-agent",
    "version": "1"  # Optional. Uses latest version if omitted.
}

Beoordelaars en gegevenskoppelingen instellen

Wanneer de agent tijdens de uitvoering antwoorden genereert, gebruik {{sample.*}} variabelen in data_mapping om te verwijzen naar de uitvoer van de agent.

Variabele Beschrijving Te gebruiken voor
{{sample.output_text}} Het ongeformatteerde antwoord van de agent. Evaluators die een tekenreeksantwoord verwachten (bijvoorbeeld coherence, violence).
{{sample.output_items}} De gestructureerde JSON-uitvoer van de agent, inclusief hulpprogramma-aanroepen. Evaluators die volledige interactiecontext nodig hebben (bijvoorbeeld task_adherence).
{{item.field}} Een veld van uw invoergegevens. Invoervelden zoals query of ground_truth.

Tip

Het query veld kan gestructureerde JSON bevatten, inclusief systeemberichten en gespreksgeschiedenis. Sommige agent evaluators, zoals task_adherence deze context gebruiken voor nauwkeuriger scoren. Zie agent evaluators voor meer informatie over queryopmaak.

data_source_config = DataSourceConfigCustom(
    type="custom",
    item_schema={
        "type": "object",
        "properties": {
            "query": {"type": "string"},
        },
        "required": ["query"],
    },
    include_sample_schema=True,
)

testing_criteria = [
    TestingCriterionAzureAIEvaluator(
        type="azure_ai_evaluator",
        name="coherence",
        evaluator_name="builtin.coherence",
        initialization_parameters={"model": model_deployment_name},
        data_mapping={
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    ),
    TestingCriterionAzureAIEvaluator(
        type="azure_ai_evaluator",
        name="violence",
        evaluator_name="builtin.violence",
        data_mapping={
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    ),
]

Evaluatie maken en uitvoeren

eval_object = openai_client.evals.create(
    name="Agent Target Evaluation",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

data_source = {
    "type": "azure_ai_target_completions",
    "source": {
        "type": "file_id",
        "id": data_id,
    },
    "input_messages": input_messages,
    "target": target,
}

agent_eval_run = openai_client.evals.runs.create(
    eval_id=eval_object.id,
    name="agent-target-evaluation",
    data_source=data_source,
)

Zie sample_agent_evaluation.py op GitHub voor een volledig voorbeeld dat kan worden uitgevoerd. Als u wilt controleren of het proces is voltooid en de resultaten wilt interpreteren, raadpleegt u Resultaten van cloudevaluatie ophalen.

Protocol voor gehoste agent-aanroepen

Gehoste agents die gebruikmaken van het aanroepprotocol ondersteunen hetzelfde azure_ai_agent doeltype, maar gebruiken een vrije-vormindeling input_messages . Geef in plaats van de indeling van de gestructureerde sjabloon een JSON-object op dat rechtstreeks aan de aanvraaginhoud van de /invocations-agent wordt toegewezen. Gebruik {{item.*}} plaatsaanduidingen om velden uit uw invoergegevens aan te duiden.

Als een gehoste agent zowel de antwoorden als aanroepprotocollen ondersteunt, wordt het protocol voor aanroepen standaard gebruikt door de service.

De berichtindeling en het doel definiëren

input_messages = {"message": "{{item.query}}"}

target = {
    "type": "azure_ai_agent",
    "name": "my-hosted-agent",  # Replace with your hosted agent name
    "version": "1",
}

Evaluatie maken en uitvoeren

eval_object = openai_client.evals.create(
    name="Hosted Agent Invocations Evaluation",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

data_source = {
    "type": "azure_ai_target_completions",
    "source": {
        "type": "file_id",
        "id": data_id,
    },
    "input_messages": input_messages,
    "target": target,
}

eval_run = openai_client.evals.runs.create(
    eval_id=eval_object.id,
    name="hosted-agent-invocations-evaluation",
    data_source=data_source,
)

De installatie van de evaluator en gegevenstoewijzingen zijn hetzelfde als voor promptagent-evaluatie. Gebruik {{sample.output_text}} deze functie voor het tekstantwoord van de agent en {{sample.output_items}} voor de volledige gestructureerde uitvoer, inclusief hulpprogramma-aanroepen.