Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Agent Optimizer è attualmente in anteprima. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero avere funzionalità limitate. Per ulteriori informazioni, vedere Condizioni supplementari per l'uso delle versioni di anteprima di Microsoft Azure.
L'ottimizzatore dell'agente valuta il tuo agente rispetto a un dataset, ovvero una raccolta di compiti con criteri di valutazione, a cui viene assegnato un punteggio dai valutatori. È possibile generare entrambi automaticamente dall'interfaccia della riga di comando o creare manualmente un set di dati per il controllo completo.
Prerequisiti
- Un progetto Foundry con un agente ospitato già implementato
- L'estensione CLI
azure.ai.agentsinstallata (vedere Guida introduttiva: Ottimizzare un agente ospitato)
Generare un set di dati e analizzatori (scelta consigliata)
Il modo più rapido per creare asset di valutazione è con azd ai agent eval generate. Il comando rileva automaticamente l'agente, quindi genera sia un set di dati che gli analizzatori adattivi ottimizzati per il dominio dell'agente e scrive un eseguibile eval.yaml:
azd ai agent eval generate
Per la procedura guidata interattiva, i flag non interattivi, gli artefatti generati e il flusso di lavoro di valutazione completo, vedere Inizializzare gli asset di valutazione.
Dopo il completamento di eval generate, azd ai agent optimize rileva automaticamente eval.yaml generato:
azd ai agent optimize
Oppure passarlo in modo esplicito:
azd ai agent optimize --config eval.yaml
Creare manualmente un set di dati personalizzato (avanzato)
Per il controllo completo sulle attività e i criteri di valutazione, creare un set di dati JSONL a mano. Ciò è utile quando è necessario un controllo preciso sugli scenari di test o avere dati di produzione da usare direttamente.
Per impostazione predefinita, azd ai agent optimize usa un set di dati predefinito con 3 attività di codifica generali e 25 criteri. Per un'ottimizzazione significativa dell'agente specifico, creare un set di dati personalizzato che rifletta i casi d'uso reali dell'agente.
Formato del dataset
I set di dati usano il formato JSONL (json lines). Ogni riga è un oggetto JSON che rappresenta una singola attività di valutazione. Un'attività è un singolo scenario nel set di dati. Contiene un prompt e criteri di valutazione.
{"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": "..."}]}
Informazioni di riferimento sul campo
| Campo | Obbligatorio | Descrizione |
|---|---|---|
name |
Sì | Identificatore univoco dell'attività (ad esempio, "greeting", "math_test") |
query |
Sì | Messaggio inviato all'agente |
criteria |
Sì | Matrice di criteri di valutazione: regole che definiscono l'aspetto "buono" per l'attività |
criteria[].name |
Sì | Nome breve per il criterio (ad esempio, "is_polite") |
criteria[].instruction |
Sì | Che cosa controlla l'analizzatore . Essere specifici e testabili. L'analizzatore predefinito (builtin.task_adherence) assegna punteggi a ogni criterio in modo indipendente come valore binario (0 o 1). |
ground_truth |
No | Risposta prevista (usata da alcuni analizzatori per riferimento) |
Esempio: Agente di supporto clienti
{"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"}]}
Esempio: Assistente per la scrittura del codice
{"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"}]}
Usare un set di dati personalizzato
Fare riferimento al set di dati in un file di configurazione YAML:
# 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
Poi eseguire:
azd ai agent optimize --config eval.yaml
Prima di eseguire il comando, convalidare la sintassi JSONL:
python -c "import json; [json.loads(l) for l in open('my_eval_dataset.jsonl')]"
Suggerimenti per la scrittura di set di dati validi
Essere specifici nei criteri
Scadente:
{"name": "good_answer", "instruction": "The response should be good"}
Buono:
{"name": "mentions_30_days", "instruction": "Response must explicitly mention the 30-day refund window"}
I criteri specifici forniscono all'analizzatore un segnale binario chiaro e chiaro. I criteri vaghi comportano un punteggio incoerente.
Includere i casi limite
Esegui i test al di là dello scenario ideale. Includere:
- Richieste fuori ambito — input che il tuo agente dovrebbe rifiutare o reindirizzare
- Query ambigue : attività in cui l'agente deve richiedere chiarimenti
- Input avversari — Tentativi di indurre l'agente a comportarsi in modo scorretto
- Attività in più passaggi : richieste complesse che richiedono un ragionamento strutturato
Linee guida per le dimensioni
| Dimensioni del set di dati | Compromesso |
|---|---|
| 3-5 attività | Iterazione rapida, segnale limitato |
| 5-10 attività | Buon equilibrio tra velocità e copertura |
| 10-20 attività | Valutazione completa, esecuzioni di maggiore durata |
| 20+ attività | Accurato ma lento: prendere in considerazione la convalida finale |
Ogni attività può avere più criteri. Un set di dati con 5 attività × 4 criteri ogni = 20 segnali di valutazione.
Scrivere richieste come utenti reali
Se possibile, usare i messaggi effettivi degli utenti. I prompt reali racchiudono il vocabolario e il contesto che il tuo agente affronta in produzione.
I criteri vengono valutati indipendentemente
Ogni criterio ottiene un punteggio binario (0 o 1). Il punteggio dell'attività è la media dei punteggi dei criteri. Il punteggio complessivo è la media di tutte le attività. Ciò significa:
- Un'attività con 4 criteri in cui 3 corrispondono a un punteggio di superamento di 0,75
- Un agente che supera tutti i criteri su 2 di 3 attività assegna 0,67
La verità di riferimento è facoltativa
Il ground_truth campo fornisce una risposta di riferimento per gli analizzatori che lo supportano. Questo campo non è obbligatorio. Il valutatore builtin.task_adherence opera esclusivamente sulla base delle istruzioni dei criteri.
{"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"}]}
Risoluzione dei problemi
| Problema | Motivo | Correzione |
|---|---|---|
dataset_file not found |
Percorso errato in eval.yaml |
Usare un percorso relativo al percorso del file di configurazione |
invalid JSON on line N |
JSONL non valido | Verificare che ogni riga sia json valido. Verificare la presenza di virgole finali. |
| I punteggi sono incoerenti tra le esecuzioni | Criteri vaghi | Rendere specifici e verificabili in modo binario i criteri |