Utvärdera modell- och agentmål med Microsoft Foundry SDK

Skicka testfrågor till driftsatta modeller, agenter som styrs med promptar eller värdhanterade agenter och utvärdera svaren som genereras under körning.

Förutsättningar

I exemplen används SDK-klienten som konfigurerats i Konfigurera SDK-klienten.

Utvärdera ett modellmål

Skicka förfrågningar till en driftsatt modell vid körning. Utvärdera svaren med datakälltypen azure_ai_target_completions och målet azure_ai_model. Dina indata innehåller frågor. Modellen genererar svar som du sedan utvärderar.

Important

Innan du börjar slutför du klientkonfigurationen och Förbered indata.

Note

Du kan använda modellroutern som målmodell. Modellrouter stöds endast som utvärderingsmål. Det kan inte väljas som en modell för någon annan utvärderingsfunktion.

Definiera meddelandemallen och målet

Mallen input_messages styr hur frågor skickas till modellen. Använd {{item.query}} för att referera till fält från dina indata. Ange den modell som ska utvärderas och valfria samplingsparametrar:

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,
    },
}

Konfigurera utvärderare och datamappningar

När modellen genererar svar vid körning använder du {{sample.output_text}} i data_mapping för att referera till modellens utdata. Använd {{item.field}} för att referera till fält från dina indata.

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

Skapa utvärdering och kör

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,
)

Ett fullständigt körbart exempel finns i sample_model_evaluation.py på GitHub. Om du vill kontrollera om processen är slutförd och tolka resultaten, se Hämta resultat för molnutvärdering.

Tips/Råd

Om du vill lägga till ytterligare en utvärderingskörning använder du samma kod.

Utvärdera mål för en agent

Skicka frågor till en Foundry-agent vid körning och utvärdera svaren med datakälltypen azure_ai_target_completions och målet azure_ai_agent. Det här scenariot fungerar för både prompt-agenter och värdagenter.

Important

Innan du börjar slutför du klientkonfigurationen och Förbered indata.

Tips/Råd

Värdbaserade agenter som använder svarsprotokollet fungerar med samma kodexempel som visas här. För värdbaserade agenter som använder anropsprotokollet input_messages är formatet annorlunda. Mer information finns i anropsprotokollet för värdbaserade agenter .

Definiera meddelandemallen och målet

Mallen input_messages styr hur frågor skickas till agenten. Använd {{item.query}} för att referera till fält från dina indata. Ange agenten som ska utvärderas med namn:

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

Konfigurera utvärderare och datamappningar

När agenten genererar svar under körtid använder du variablerna i {{sample.*}} och data_mapping för att referera till agentens utdata.

Variabel Beskrivning Använd för
{{sample.output_text}} Agentens oformaterade textsvar. Utvärderare som förväntar sig ett strängsvar (till exempel coherence, violence).
{{sample.output_items}} Agentens strukturerade JSON-utdata, inklusive verktygsanrop. Utvärderare som behöver fullständig interaktionskontext (till exempel task_adherence).
{{item.field}} Ett fält från dina indata. Indatafält som query eller ground_truth.

Tips/Råd

Fältet query kan innehålla strukturerad JSON, inklusive systemmeddelanden och konversationshistorik. Vissa agentutvärderingar, till exempel task_adherence använder den här kontexten för mer exakt bedömning. Mer information om frågeformatering finns i agentutvärderingar.

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

Skapa utvärdering och kör

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,
)

Ett fullständigt körbart exempel finns i sample_agent_evaluation.py på GitHub. Om du vill kontrollera om processen är slutförd och tolka resultaten, se Hämta resultat för molnutvärdering.

Anropsprotokoll för värdbaserad agent

Värdbaserade agenter som använder anropsprotokollet stöder samma azure_ai_agent måltyp men använder ett frihandsformat input_messages . I stället för det strukturerade mallformatet anger du ett JSON-objekt som mappar direkt till agentens /invocations begärandetext. Använd {{item.*}} platshållare för att ersätta fält från dina indata.

Om en värdbaserad agent stöder både protokollen för svar och anrop använder tjänsten som standard anropsprotokollet.

Definiera meddelandeformatet och målet

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

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

Skapa utvärdering och kör

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,
)

Konfigurationen av utvärderaren och datamappningarna är desamma som för utvärdering av promptagenten. Använd {{sample.output_text}} för agentens textsvar och {{sample.output_items}} för fullständiga strukturerade utdata, inklusive verktygsanrop.