Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Important
Agent Optimizer is momenteel in preview. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews voor meer informatie.
De agentoptimalisator evalueert uw agent aan de hand van een dataset - een verzameling taken - beoordeeld door beoordelaars. U kunt beide automatisch genereren vanuit de CLI of handmatig een gegevensset maken voor volledig beheer.
Beide onderdelen zijn essentieel voor een goede optimalisatie: de gegevensset definieert wat er moet worden getest en de evaluators bepalen hoe elke reactie moet worden beoordeeld. Zwakke evaluators produceren luidruchtige scores die leiden tot slechte optimalisatie, dus investeer in sterke evaluators net zo veel als representatieve taken.
Het maken van deze assets is de tweede stap in de optimalisatiewerkstroom nadat u de optimalisatie van uw agent gereed hebt gemaakt. De optimizer gebruikt deze om uw basislijn te scoren en kandidaten te rangschikken.
Prerequisites
- Een Foundry-project met een geïmplementeerde gehoste agent
- De
azure.ai.agentsCLI-extensie is geïnstalleerd (zie Quickstart: Een gehoste agent optimaliseren)
Een gegevensset en evaluators genereren (aanbevolen)
De snelste manier om evaluatieassets te maken is met azd ai agent eval generate. De opdracht detecteert uw agent automatisch en genereert alles wat de optimizer nodig heeft:
azd ai agent eval generate
Standaard wordt het volgende gegenereerd:
- Een seed-gegevensset met taken die zijn afgestemd op het domein van uw agent.
-
Evaluators die antwoorden scoren: een ingebouwde evaluator (zoals
builtin.task_adherence) plus een aangepaste rubriek evaluator die is afgestemd op uw agent. - Een uitvoerbaar
eval.yamldat ze met elkaar verbindt.
Zie Evaluatieassets initialiseren voor de interactieve wizard, niet-interactieve vlaggen en details over de gegenereerde artefacten.
Na het genereren detecteert azd ai agent optimize automatisch eval.yaml:
azd ai agent optimize
Zie Evaluators aanpassen en een aangepaste gegevensset maken om de gegenereerde assets aan te passen. Als u uitvoeringsopties wilt wijzigen, bewerkt eval.yamlu; zie De optimalisatieuitvoering configureren.
Evaluators aanpassen (geavanceerd)
Evaluators beoordelen elk antwoord van de agent. De optimizer ondersteunt twee soorten:
-
Ingebouwde evaluators, zoals
builtin.task_adherence, waarmee elk criterium op taakniveau wordt gescoord als geslaagd of mislukt. -
Aangepaste rubrieken, die reacties beoordelen op verschillende kwaliteitsdimensies die zijn afgestemd op uw agent.
azd ai agent eval generatemaakt automatisch een bewerkbaarrubric_dimensions.json-bestand.
Voor de meeste agents geeft de gegenereerde rubriek-evaluator de meest zinvolle scores omdat deze is afgestemd op uw domein. Bewerk de gegenereerde rubric_dimensions.json om dimensies te verfijnen en voer vervolgens uit azd ai agent eval update om de wijzigingen te registreren als een nieuwe versie. Zie Evaluatiemiddelen initialiseren voor meer informatie over het genereren, bewerken en versiebeheer van evaluators.
Zie De optimalisatieuitvoering configureren als u evaluators wilt koppelen aan uw uitvoeringsconfiguratie.
Een aangepaste gegevensset maken (geavanceerd)
Maak een aangepaste gegevensset wanneer u nauwkeurige controle over testscenario's nodig hebt of productiegegevens rechtstreeks wilt gebruiken. De aanbevolen aanpak is om voort te bouwen op de seed-gegevensset die azd ai agent eval generate produceert—werk die uit tot een lokale gegevensset of verwijs naar een andere gegevensset die al in uw Foundry-project is geregistreerd.
Een gegevenssetbron kiezen
Een gegevensset kan afkomstig zijn van een van de twee bronnen:
-
Foundry-dataset — een dataset die al in uw Foundry-project is geregistreerd. Verwijs ernaar in
eval.yamlvianameenversion. -
Lokale gegevensset : een JSONL-bestand dat u maakt en in uw project bewaart. Verwijs er in
eval.yamlnaar vialocal_uri.
Beide bronnen gebruiken hetzelfde taakschema dat in de volgende sectie wordt beschreven. Zie eval.yaml voor de bedrading.
Gegevenssetschema
Een gegevensset maakt gebruik van de JSONL-indeling (JSON Lines). Elke regel is één JSON-object dat één evaluatietaak vertegenwoordigt: een afzonderlijk scenario. Een taak heeft een prompt (query) en, optioneel, taakniveau criteria.
{"name": "task_1", "query": "Your prompt here"}
{"name": "task_2", "query": "Another prompt", "ground_truth": "Expected answer"}
| Veld | Verplicht | Description |
|---|---|---|
name |
Ja | Unieke taak-id (bijvoorbeeld "greeting", "math_test"). |
query |
Ja | Het bericht dat naar de agent is verzonden. |
ground_truth |
No | Verwacht antwoord, gebruikt door evaluators die ondersteuning bieden voor een verwijzing. |
criteria |
No | Optionele controles op taakniveau. Zie Criteria op taakniveau toevoegen. |
Wanneer u een lokale gegevensset gebruikt, valideert u de JSONL-syntaxis voordat u optimalisatie uitvoert:
python -c "import json; [json.loads(l) for l in open('eval.jsonl')]"
Criteria op taakniveau toevoegen
Criteria zijn optioneel. De evaluators die u configureerteval.yaml, zijn van toepassing op elke taak in de gegevensset. Voeg criteria alleen per taak toe als een specifieke taak controles nodig heeft die verder gaan dan die van de gedeelde evaluatoren. Wanneer deze aanwezig zijn, worden de criteria van een taak gescoord en samen met de gedeelde evaluatoren geaggregeerd om de totaalscore van de taak te bepalen.
| Veld | Verplicht | Description |
|---|---|---|
criteria[].name |
Ja | Korte naam voor het criterium (bijvoorbeeld "is_polite"). |
criteria[].instruction |
Ja | Wat de evaluator controleert. Wees specifiek en testbaar. |
De volgende gegevensset voor klantondersteuning toont taken met criteria op taakniveau:
{"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"}]}
Tips voor het schrijven van goede gegevenssets
Randgevallen opnemen
Test ook buiten het ideale scenario. Neem op:
- Aanvragen buiten het bereik : invoer die uw agent moet weigeren of omleiden
- Dubbelzinnige query's : taken waarbij de agent om verduidelijking moet vragen
- Adversariële invoer — Pogingen om de agent tot slecht gedrag te verleiden
- Taken met meerdere stappen : complexe aanvragen waarvoor gestructureerde redenering is vereist
Richtlijnen voor grootte
| Grootte van gegevensset | Compromis |
|---|---|
| 3-5 taken | Snelle iteratie, beperkt signaal |
| 5-10 taken | Goede balans tussen snelheid en dekking |
| 10-20 taken | Uitgebreide evaluatie, langere uitvoeringen |
| 20+ taken | Grondig maar traag : overweeg de definitieve validatie |
Grotere gegevenssets bieden een bredere dekking, maar het duurt langer om te evalueren.
Geef de grondwaar wanneer nuttig
Het ground_truth veld geeft evaluators een referentieantwoord om mee te vergelijken. Dit is niet vereist: evaluators kunnen ook antwoorden beoordelen op basis van hun instructies en criteria op taakniveau.
{"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"}]}
Schrijfprompts zoals echte gebruikers
Gebruik indien mogelijk werkelijke berichten van uw gebruikers. Echte prompts leggen het vocabulaire en de context vast waarmee uw agent te maken krijgt in productie, waardoor u ook realistische criteria op taakniveau kunt schrijven.
Wees specifiek in criteria
Vage criteria leiden tot inconsistent scoren. Maak elk criterium specifiek en testbaar.
Slechte:
{"name": "good_answer", "instruction": "The response should be good"}
Goed:
{"name": "mentions_30_days", "instruction": "Response must explicitly mention the 30-day refund window"}
Troubleshooting
| Probleem | Oorzaak | Repareren |
|---|---|---|
dataset not found |
Verkeerd pad in eval.yaml |
Gebruik voor dataset.local_uri een pad ten opzichte van de locatie van het configuratiebestand. Controleer dataset.name en dataset.version voor een Foundry-gegevensset. |
invalid JSON on line N |
Ongeldige JSONL | Controleer of elke regel geldige JSON is. Controleer op volgkomma's. |
| Scores zijn inconsistent tussen verschillende uitvoeringen | Vage criteria | Criteria specifiek en testbaar maken. |