Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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-4onebogpt-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:
- Vyhodnocovače agentů – vyhodnoťte, jak efektivně agenti zpracovávají úlohy, nástroje a záměr uživatele.
- Hodnotitelé kvality – změřte celkovou kvalitu vygenerovaných odpovědí.
- Vyhodnocovače podobnosti textu – porovnání vygenerovaného textu s referenčními odpověďmi s využitím metrik NLP
- Bezpečnostní vyhodnocovače – Identifikují potenciální obsah a bezpečnostní rizika ve vygenerovaném výstupu.
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říkladquery. -
{{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}")
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
- Kanál CI/CD: V kanálu nasazení použijte vyhodnocení jako bránu kvality. Podrobnosti o integraci viz Spuštění hodnocení s GitHub Actions.
- Monitorování v produkčním prostředí: Monitorování agenta v produkčním prostředí pomocí průběžného hodnocení Pokyny k nastavení najdete v tématu Nastavení průběžného vyhodnocování.
Optimalizace a porovnání verzí
Pomocí vyhodnocení iterujte a vylepšete svého agenta:
- Spusťte vyhodnocení a identifikujte slabé oblasti. Pomocí analýzy clusteru můžete najít vzory a chyby.
- Na základě zjištění upravte pokyny nebo nástroje agenta.
- Přehodnotujte a porovnejte spuštění s cílem změřit zlepšení.
- Opakujte, dokud nebudou splněny prahové hodnoty kvality.