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 in base a un set di dati - una raccolta di attività - 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.
Entrambe le parti sono essenziali per un'ottimizzazione ottimale: il set di dati definisce cosa testare e gli analizzatori definiscono come giudicare ogni risposta. Valutatori deboli producono punteggi poco affidabili che portano a un’ottimizzazione inefficace, quindi investite in valutatori robusti tanto quanto in attività rappresentative.
La creazione di questi asset è il secondo passaggio del flusso di lavoro di ottimizzazione, dopo aver reso l'agente pronto per l'ottimizzatore. L'utilità di ottimizzazione li usa per assegnare un punteggio alla baseline e classificare i candidati.
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 e genera tutte le esigenze dell'ottimizzatore:
azd ai agent eval generate
Per impostazione predefinita, genera:
- Un set di dati iniziale di attività adattate al dominio del tuo agente.
-
Analizzatori che valutano le risposte: un analizzatore predefinito (ad esempio
builtin.task_adherence) più un analizzatore di rubriche personalizzato personalizzato per l'agente. - Un eseguibile
eval.yamlche li collega insieme.
Per la procedura guidata interattiva, i flag non interattivi e i dettagli sugli artefatti generati, vedere Inizializzare gli asset di valutazione.
Dopo la generazione, azd ai agent optimize rileva eval.yamlautomaticamente :
azd ai agent optimize
Per personalizzare gli asset generati, vedere Personalizzare gli analizzatori e Creare un set di dati personalizzato. Per modificare le opzioni di esecuzione, modificare eval.yaml. Vedere Configurare l'esecuzione dell'ottimizzazione.
Personalizzare gli analizzatori (avanzati)
Gli analizzatori assegnare un punteggio a ogni risposta dell'agente. Optimizer supporta due tipi:
-
Valutatori integrati, come
builtin.task_adherence, che valutano ciascun criterio di livello attività come superato o non superato. -
Analizzatori di rubriche personalizzate, che valutano le risposte in diverse dimensioni di qualità ottimizzate per l'agente.
azd ai agent eval generatene crea uno automaticamente come file modificabilerubric_dimensions.json.
Per la maggior parte degli agenti, l'analizzatore di rubriche generato fornisce i punteggi più significativi perché è personalizzato per il dominio. Modificare l'oggetto generato rubric_dimensions.json per perfezionare le dimensioni, quindi eseguire azd ai agent eval update per registrare le modifiche come nuova versione. Per informazioni su come generare, modificare e gestire le versioni dei valutatori, vedere Inizializzare gli asset di valutazione.
Per collegare gli analizzatori nella configurazione di esecuzione, vedere Configurare l'esecuzione dell'ottimizzazione.
Creare un set di dati personalizzato (avanzato)
Creare un set di dati personalizzato quando è necessario un controllo preciso sugli scenari di test o avere dati di produzione da usare direttamente. L'approccio consigliato consiste nell'eseguire l'iterazione sul set di dati di inizializzazione che azd ai agent eval generate produce, perfezionarlo in un set di dati locale o puntare a un altro set di dati già registrato nel progetto Foundry.
Scegliere un'origine del set di dati
Un set di dati può provenire da una delle due origini seguenti:
-
Set di dati Foundry : set di dati già registrato nel progetto Foundry. Farvi riferimento in
eval.yamldanameeversion. -
Set di dati locale : un file JSONL creato e mantenuto nel progetto. Fai riferimento in
eval.yamltramitelocal_uri.
Entrambe le fonti utilizzano lo stesso schema di task descritto nella sezione successiva. Per il eval.yaml cablaggio, vedere Configurare l'esecuzione dell'ottimizzazione.
Schema del set di dati
Un set di dati usa il formato JSONL (json lines). Ogni riga è un oggetto JSON che rappresenta una singola attività di valutazione, ovvero un singolo scenario. Un'attività ha un prompt (query) e, facoltativamente, criteria a livello di attività.
{"name": "task_1", "query": "Your prompt here"}
{"name": "task_2", "query": "Another prompt", "ground_truth": "Expected answer"}
| Campo | Obbligatorio | Descrizione |
|---|---|---|
name |
Sì | Identificatore univoco dell'attività ( ad esempio , "greeting"). "math_test" |
query |
Sì | Messaggio inviato all'agente. |
ground_truth |
No | Risposta prevista, usata dagli analizzatori che supportano un riferimento. |
criteria |
No | Controlli facoltativi a livello di attività. Vedere Aggiungere criteri a livello di attività. |
Quando si usa un set di dati locale, convalidare la sintassi JSONL prima di eseguire l'ottimizzazione:
python -c "import json; [json.loads(l) for l in open('eval.jsonl')]"
Aggiungere criteri a livello di attività
I criteri sono facoltativi. Gli analizzatori configurati in eval.yaml si applicano a ogni attività nel set di dati. Aggiungi criteria specifico per attività solo quando un'attività specifica richiede controlli aggiuntivi rispetto a quelli dei valutatori condivisi. Se presenti, i criteria di un'attività ricevono un punteggio e vengono aggregati insieme ai valutatori condivisi per produrre il punteggio complessivo dell'attività.
| Campo | Obbligatorio | Descrizione |
|---|---|---|
criteria[].name |
Sì | Nome breve per il criterio (ad esempio, "is_polite"). |
criteria[].instruction |
Sì | Che cosa controlla l'analizzatore. Essere specifici e testabili. |
Il set di dati di supporto clienti seguente mostra le attività con criteri a livello di attività:
{"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"}]}
Suggerimenti per la scrittura di set di dati validi
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 |
I set di dati più grandi offrono una copertura più ampia, ma richiedono più tempo per la valutazione.
Fornire la verità sul terreno quando utile
Il ground_truth campo fornisce agli analizzatori una risposta di riferimento da confrontare. Non è obbligatorio: i valutatori possono anche valutare le risposte basandosi unicamente sulle proprie istruzioni e sugli eventuali criteri a livello di attività.
{"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"}]}
Scrivere richieste come utenti reali
Se possibile, usare i messaggi effettivi degli utenti. I prompt reali rispecchiano il vocabolario e il contesto che il tuo agente incontra in produzione, il che aiuta anche a definire criteri realistici per i singoli task.
Essere specifici nei criteri
I criteri vaghi comportano un punteggio incoerente. Rendere specifici e testabili ogni criterio.
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"}
Risoluzione dei problemi
| Problema | Motivo | Correzione |
|---|---|---|
dataset not found |
Percorso errato in eval.yaml |
Per dataset.local_uri, usa un percorso relativo alla posizione del file di configurazione. Per un set di dati Foundry, verificare dataset.name e dataset.version. |
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 testabili i criteri. |