Vyhodnocení agentů AI

Vyhodnocení je nezbytné pro zajištění toho, aby agent před nasazením splňoval standardy kvality a bezpečnosti. Spuštěním vyhodnocení během vývoje vytvoříte směrný plán pro výkon vašeho agenta a můžete nastavit prahové hodnoty přijetí, jako je například 85% míra dodržování úkolů, a teprve potom ji uvolníte uživatelům.

V tomto článku se dozvíte, jak spustit vyhodnocení cílené na agenta Foundry nebo hostovaného agenta pomocí integrovaných vyhodnocovačů pro kvalitu, bezpečnost a chování agenta. Konkrétně vy:

  • Nastavte klienta sady SDK pro vyhodnocení.
  • Zvolte vyhodnocovače pro kvalitu, bezpečnost a chování agenta.
  • Vytvořte testovací datovou sadu a spusťte vyhodnocení.
  • Interpretujte výsledky a integrujte je do pracovního postupu.

Návod

Pokud chcete vyhodnotit modely a aplikace pro obecné účely, včetně vlastních vyhodnocovačů, různých zdrojů dat a dalších možností sady SDK, přečtěte si téma Spouštění vyhodnocení ze sady SDK.

Předpoklady

  • Projekt Foundry s agentem nebo hostovaným agentem.
  • Nasazení openAI Azure s modelem GPT, který podporuje dokončování chatu (například gpt-4o nebo gpt-4o-mini).
  • Role uživatele Azure AI v projektu Foundry.

Poznámka:

Některé funkce vyhodnocení mají regionální omezení. Podrobnosti najdete v podporovaných oblastech .

Nastavení klienta

Nainstalujte sadu Foundry SDK a nastavte ověřování:

pip install "azure-ai-projects>=2.0.0"

Vytvořte klienta projektu. Následující ukázky kódu předpokládají, že je spustíte v tomto kontextu:

import os
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient

endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"]
model_deployment = os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"]

credential = DefaultAzureCredential()
project_client = AIProjectClient(endpoint=endpoint, credential=credential)
client = project_client.get_openai_client()

Výběr vyhodnocovačů

Vyhodnocovače jsou funkce, které vyhodnocují odpovědi vašeho agenta. Někteří vyhodnocovače používají modely AI jako porotce, zatímco jiné používají pravidla nebo algoritmy. Pro vyhodnocení agenta zvažte tuto sadu:

Hodnotitel Co měří
Dodržování úkolů Dodržuje agent systémové pokyny?
Coherence Je odpověď logická a dobře strukturovaná?
Násilí Obsahuje odpověď násilné obsah?

Další předdefinované vyhodnocovače najdete tady:

Pokud chcete vytvořit vlastní vyhodnocovače, podívejte se na vlastní vyhodnocovače.

Vytvoření testovací datové sady

Vytvořte soubor JSONL s testovacími dotazy pro vašeho agenta. Každý řádek obsahuje objekt JSON s polem query :

{"query": "What's the weather in Seattle?"}
{"query": "Book a flight to Paris"}
{"query": "Tell me a joke"}

Nahrajte tento soubor jako datovou sadu v projektu:

dataset = project_client.datasets.upload_file(
    name="agent-test-queries",
    version="1",
    file_path="./test-queries.jsonl",
)

Proveďte vyhodnocení

Když spustíte vyhodnocení, služba odešle každý testovací dotaz vašemu agentu, zaznamená odpověď a použije vybrané vyhodnocovače k vyhodnocení výsledků.

Nejprve nakonfigurujte vyhodnocovače. Každý vyhodnocovače potřebuje mapování dat, které mu říká, kde najít vstupy:

  • {{item.X}} odkazuje na pole z testovacích dat, například query.
  • {{sample.output_items}} odkazuje na úplnou odpověď agenta, včetně volání nástrojů.
  • {{sample.output_text}} odkazuje pouze na text zprávy odpovědi.

Vyhodnocovače s asistencí umělé inteligence, jako je dodržování úkolů a soudržnost, vyžadují nasazení modelu v initialization_parameterssystému . Někteří vyhodnocovače můžou vyžadovat další pole, například ground_truth definice nástrojů. Další informace najdete v dokumentaci vyhodnocovače.

testing_criteria = [
    {
        "type": "azure_ai_evaluator",
        "name": "Task Adherence",
        "evaluator_name": "builtin.task_adherence",
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_items}}",
        },
        "initialization_parameters": {"deployment_name": model_deployment},
    },
    {
        "type": "azure_ai_evaluator",
        "name": "Coherence",
        "evaluator_name": "builtin.coherence",
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
        "initialization_parameters": {"deployment_name": model_deployment},
    },
    {
        "type": "azure_ai_evaluator",
        "name": "Violence",
        "evaluator_name": "builtin.violence",
        "data_mapping": {
            "query": "{{item.query}}",
            "response": "{{sample.output_text}}",
        },
    },
]

V dalším kroku vytvořte vyhodnocení. Vyhodnocení definuje schéma testovacích dat a kritéria testování. Slouží jako kontejner pro více spuštění. Všechny běhy pod stejným vyhodnocením odpovídají stejnému schématu a produkují stejnou sadu metrik. Tato konzistence je důležitá pro porovnávání výsledků napříč běhy.

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

evaluation = client.evals.create(
    name="Agent Quality Evaluation",
    data_source_config=data_source_config,
    testing_criteria=testing_criteria,
)

Nakonec vytvořte spuštění, které odešle testovací dotazy agentu a použije vyhodnocovače:

eval_run = client.evals.runs.create(
    eval_id=evaluation.id,
    name="Agent Evaluation Run",
    data_source={
        "type": "azure_ai_target_completions",
        "source": {
            "type": "file_id",
            "id": dataset.id,
        },
        "input_messages": {
            "type": "template",
            "template": [{"type": "message", "role": "user", "content": {"type": "input_text", "text": "{{item.query}}"}}],
        },
        "target": {
            "type": "azure_ai_agent",
            "name": "my-agent",  # Replace with your agent name
            "version": "1",  # Optional; omit to use latest version
        },
    },
)

print(f"Evaluation run started: {eval_run.id}")

Návod

Tato ukázka funguje pro agenty na vyžádání i hostované agenty využívající protokol odpovědí. U hostovaných agentů, kteří používají protokol vyvolání, input_messages se formát liší – místo strukturované šablony zadejte volný objekt JSON. Podrobnosti a ukázky kódu najdete v průvodci vyhodnocením cloudu v protokolu vyvolání hostovaného agenta .

Interpretace výsledků

Vyhodnocení se obvykle dokončí během několika minut v závislosti na počtu dotazů. Dotazování na dokončení a načtení adresy URL sestavy pro zobrazení výsledků na portálu Microsoft Foundry na kartě Hodnocení:

import time

# Wait for completion
while True:
    run = client.evals.runs.retrieve(run_id=eval_run.id, eval_id=evaluation.id)
    if run.status in ["completed", "failed"]:
        break
    time.sleep(5)

print(f"Status: {run.status}")
print(f"Report URL: {run.report_url}")

Snímek obrazovky zobrazující výsledky hodnocení agenta v portálu Microsoft Foundry.

Agregované výsledky

Na úrovni spuštění můžete zobrazit agregovaná data, včetně počtu úspěšných a neúspěšných průchodů, využití tokenů dle modelu a výsledků dle vyhodnocovače.

{
    "result_counts": {
        "total": 3,
        "passed": 1,
        "failed": 2,
        "errored": 0
    },
    "per_model_usage": [
        {
            "model_name": "gpt-4o-mini-2024-07-18",
            "invocation_count": 6,
            "total_tokens": 9285,
            "prompt_tokens": 8326,
            "completion_tokens": 959
        },
        ...
    ],
    "per_testing_criteria_results": [
        {
            "testing_criteria": "Task Adherence",
            "passed": 1,
            "failed": 2
        },
        ... // remaining testing criteria
    ]
}

Výstup na úrovni řádků

Každé vyhodnocení vrátí výstupní položky pro každý řádek v testovací datové sadě a poskytuje podrobný přehled o výkonu vašeho agenta. Mezi výstupní položky patří původní dotaz, odpověď agenta, výsledky jednotlivých vyhodnocovacích prvků se skóre a odůvodněním a využitím tokenu:

{
    "object": "eval.run.output_item",
    "id": "1",
    "run_id": "evalrun_abc123",
    "eval_id": "eval_xyz789",
    "status": "completed",
    "datasource_item": {
        "query": "What's the weather in Seattle?",
        "response_id": "resp_abc123",
        "agent_name": "my-agent",
        "agent_version": "10",
        "sample.output_text": "I'd be happy to help with the weather! However, I need to check the current conditions. Let me look that up for you.",
        "sample.output_items": [
            ... // agent response messages with tool calls
        ]
    },
    "results": [
        {
            "type": "azure_ai_evaluator",
            "name": "Task Adherence",
            "metric": "task_adherence",
            "label": "pass",
            "reason": "Agent followed system instructions correctly",
            "threshold": 3,
            "passed": true,
            "sample":
            {
               ... // evaluator input/output and token usage
            }
        },
        ... // remaining evaluation results
    ]
}

Integrace do pracovního postupu

Optimalizace a porovnání verzí

Pomocí vyhodnocení iterujte a vylepšete svého agenta:

  1. Spusťte vyhodnocení a identifikujte slabé oblasti. Pomocí analýzy clusteru můžete najít vzory a chyby.
  2. Na základě zjištění upravte pokyny nebo nástroje agenta.
  3. Přehodnotujte a porovnejte spuštění s cílem změřit zlepšení.
  4. Opakujte, dokud nebudou splněny prahové hodnoty kvality.