Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Important
Agent Optimizer ist derzeit als Vorschau verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und sollte nicht für Produktionsworkloads verwendet werden. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Supplementale Nutzungsbedingungen für Microsoft Azure Previews.
Der Agent-Optimierer wertet Ihren Agent anhand eines Datasets aus – eine Sammlung von Aufgaben mit Auswertungskriterien – bewertet von Evaluatoren. Sie können beides entweder automatisch über die CLI generieren oder für die volle Kontrolle einen Datensatz manuell erstellen.
Voraussetzungen
- Ein Foundry-Projekt mit einem bereitgestellten gehosteten Agent
- Die
azure.ai.agentsinstallierte CLI-Erweiterung (siehe Schnellstart: Optimieren eines gehosteten Agents)
Erstellen Sie einen Datensatz und Auswerter (empfohlen)
Die schnellste Möglichkeit zum Erstellen von Auswertungsressourcen ist mit azd ai agent eval generate. Der Befehl erkennt Ihren Agenten automatisch, generiert dann sowohl einen Datensatz als auch adaptive Evaluatoren, die auf die Domäne Ihres Agenten abgestimmt sind, und erstellt eine ausführbare eval.yaml:
azd ai agent eval generate
Informationen zum interaktiven Assistenten, zu nicht-interaktiven Flags, zu den generierten Artefakten und zum vollständigen Auswertungsablauf finden Sie unter Auswertungsressourcen initialisieren.
Nachdem eval generate abgeschlossen ist, erkennt azd ai agent optimize das generierte eval.yaml automatisch:
azd ai agent optimize
Oder übergeben Sie es explizit:
azd ai agent optimize --config eval.yaml
Manuelles Erstellen eines benutzerdefinierten Datasets (erweitert)
Um die vollständige Kontrolle über Auswertungsaufgaben und -kriterien zu erhalten, erstellen Sie ein JSONL-Dataset manuell. Dies ist nützlich, wenn Sie präzise Kontrolle über Testszenarien benötigen oder produktionsbezogene Daten direkt verwenden müssen.
azd ai agent optimize verwendet standardmäßig einen integrierten Datensatz mit 3 allgemeinen Programmieraufgaben und 25 Kriterien. Um eine sinnvolle Optimierung Ihres spezifischen Agents zu ermöglichen, erstellen Sie ein benutzerdefiniertes Dataset , das die realen Anwendungsfälle Ihres Agenten widerspiegelt.
Datensatzformat
Datasets verwenden das JSONL-Format (JSON Lines). Jede Zeile ist ein JSON-Objekt, das eine einzelne Auswertungsaufgabe darstellt. Eine Aufgabe ist ein einzelnes Szenario im Dataset. Sie enthält einen Prompt und Bewertungskriterien.
{"name": "task_1", "query": "Your prompt here", "criteria": [{"name": "criterion_name", "instruction": "What the evaluator checks for"}]}
{"name": "task_2", "query": "Another prompt", "criteria": [{"name": "check_1", "instruction": "..."}, {"name": "check_2", "instruction": "..."}]}
Feldreferenz
| Feld | Erforderlich | Description |
|---|---|---|
name |
Ja | Eindeutige Aufgabenkennung (z. B. "greeting", "math_test") |
query |
Ja | Die an den Agent gesendete Nachricht |
criteria |
Ja | Array von Bewertungskriterien – Regeln, die definieren, wie "gut" für die Aufgabe aussieht |
criteria[].name |
Ja | Kurzname für das Kriterium (z. B "is_polite". ) |
criteria[].instruction |
Ja | Was der Evaluator überprüft. Seien Sie spezifisch und testbar. Der integrierte Evaluator (builtin.task_adherence) bewertet jedes Kriterium unabhängig als binärer Wert (0 oder 1). |
ground_truth |
No | Erwartete Antwort (verwendet von einigen Bewertern für Referenz) |
Beispiel: Kundendienstmitarbeiter
{"name": "refund_policy", "query": "What is your refund policy?", "criteria": [{"name": "mentions_30_days", "instruction": "Response must mention the 30-day refund window"}, {"name": "polite_tone", "instruction": "Response must be professional and empathetic"}]}
{"name": "order_status", "query": "Where is my order #12345?", "criteria": [{"name": "asks_for_details", "instruction": "Agent should ask for email or order details to look up the order"}, {"name": "no_hallucination", "instruction": "Agent must NOT make up a fake order status"}]}
{"name": "out_of_scope", "query": "Can you help me fix my car?", "criteria": [{"name": "polite_decline", "instruction": "Agent should politely explain this is outside its scope"}, {"name": "redirect", "instruction": "Agent should suggest contacting an appropriate service"}]}
Beispiel: Codierungs-Assistent
{"name": "python_function", "query": "Write a Python function to reverse a linked list", "criteria": [{"name": "correct_algorithm", "instruction": "The function must correctly reverse a singly linked list"}, {"name": "handles_empty", "instruction": "The function must handle an empty list without errors"}, {"name": "includes_docstring", "instruction": "The function should include a descriptive docstring"}]}
{"name": "explain_concept", "query": "Explain what a closure is in JavaScript", "criteria": [{"name": "accurate_definition", "instruction": "Must correctly define a closure as a function that captures variables from its enclosing scope"}, {"name": "includes_example", "instruction": "Must include at least one working code example"}]}
Verwenden eines benutzerdefinierten Datasets
Verweisen Sie in einer YAML-Konfigurationsdatei auf Ihr Dataset:
# eval.yaml
agent:
name: my-agent
dataset_file: ./my_eval_dataset.jsonl
evaluators:
- builtin.task_adherence
options:
eval_model: gpt-4.1-mini
optimization_model: gpt-5.1
max_iterations: 5
Führen Sie dann Folgendes aus:
azd ai agent optimize --config eval.yaml
Überprüfen Sie vor dem Ausführen des Befehls die JSONL-Syntax:
python -c "import json; [json.loads(l) for l in open('my_eval_dataset.jsonl')]"
Tipps zum Schreiben guter Datasets
In Kriterien spezifisch sein
Schlecht:
{"name": "good_answer", "instruction": "The response should be good"}
Gut:
{"name": "mentions_30_days", "instruction": "Response must explicitly mention the 30-day refund window"}
Bestimmte Kriterien geben dem Evaluator ein klares, binäres Signal. Vage Kriterien führen zu einer inkonsistenten Bewertung.
Randfälle berücksichtigen
Testen Sie über den „Happy Path“ hinaus. Einfügen:
- Anfragen außerhalb des Zuständigkeitsbereichs — Eingaben, die Ihr Agent ablehnen oder weiterleiten sollte
- Mehrdeutige Abfragen – Aufgaben, bei denen der Agent nach Klärung fragen sollte
- Adversariale Eingaben – Versuche, den Agenten zu schlechtem Verhalten zu verleiten
- Mehrstufige Aufgaben – Komplexe Anforderungen, die strukturiertes Denken erfordern
Größenrichtlinien
| Datasetgröße | Kompromiss |
|---|---|
| 3–5 Aufgaben | Schnelle Iteration, begrenztes Signal |
| 5–10 Aufgaben | Gute Balance zwischen Geschwindigkeit und Abdeckung |
| 10–20 Aufgaben | Umfassende Auswertung, längere Läufe |
| 20+ Aufgaben | Gründlich, aber langsam – erwägen Sie die endgültige Validierung |
Jeder Vorgang kann mehrere Kriterien aufweisen. Ein Dataset mit 5 Vorgängen × jeweils 4 Kriterien = 20 Auswertungssignale.
Schreiben Sie Prompts wie echte Nutzer
Verwenden Sie nach Möglichkeit tatsächliche Nachrichten von Ihren Benutzern. Echte Eingabeaufforderungen erfassen das Vokabular und den Kontext, mit dem Ihr Agent in der Produktion konfrontiert ist.
Kriterien werden unabhängig bewertet.
Jedes Kriterium erhält eine binäre Bewertung (0 oder 1). Die Aufgabenbewertung ist der Durchschnitt der Kriterienbewertungen. Die Gesamtpunktzahl ist der Durchschnitt über alle Aufgaben hinweg. Dies bedeutet Folgendes:
- Eine Aufgabe mit 4 Kriterien, bei der 3 bestandene Kriterien 0,75 ergeben
- Ein Agent, der bei 2 von 3 Aufgaben alle Kriterien erfüllt, erreicht 0,67.
Ground Truth ist optional.
Das ground_truth Feld stellt eine Referenzantwort für Evaluatoren bereit, die es unterstützen. Dieses Feld ist nicht erforderlich. Der builtin.task_adherence Bewerter funktioniert vollständig aus Kriterienanweisungen.
{"name": "geography_fact", "query": "What is the largest city in France by population?", "ground_truth": "Paris", "criteria": [{"name": "correct_answer", "instruction": "Response must state that Paris is the largest city in France by population"}]}
Problembehandlung
| Problem | Ursache | Beheben |
|---|---|---|
dataset_file not found |
Falscher Pfad in eval.yaml |
Verwenden eines Pfads relativ zum Speicherort der Konfigurationsdatei |
invalid JSON on line N |
Falsch formatierter JSONL-Code | Überprüfen Sie, ob jede Zeile json gültig ist. Überprüfen Sie auf abschließende Kommas. |
| Die Punktzahlen sind zwischen den Durchläufen inkonsistent. | Vage Kriterien | Kriterien spezifisch und binärtestbar machen |