Dopo aver sviluppato un agente, puoi utilizzare il servizio di valutazione dell'IA generativa per valutare la capacità dell'agente di completare attività e obiettivi per un determinato caso d'uso.
Definisci le metriche di valutazione
Inizia con un elenco vuoto di metriche (ad es. metrics = []
) e aggiungi le metriche pertinenti. Per includere altre metriche:
Risposta finale
La valutazione della risposta finale segue la stessa procedura della valutazione basata su modelli. Per maggiori dettagli, vedi Definire le metriche di valutazione.
Corrispondenza esatta
metrics.append("trajectory_exact_match")
Se la traiettoria prevista è identica a quella di riferimento, con le stesse chiamate dello strumento nello stesso ordine, la metrica trajectory_exact_match
restituisce un punteggio pari a 1
, altrimenti 0
.
Parametri di input:
predicted_trajectory
: l'elenco delle chiamate allo strumento utilizzate dall'agente per raggiungere la risposta finale.reference_trajectory
: l'utilizzo dello strumento previsto per consentire all'agente di soddisfare la query.
Corrispondenza in ordine
metrics.append("trajectory_in_order_match")
Se la traiettoria prevista contiene tutte le chiamate allo strumento della traiettoria di riferimento nello stesso ordine e può anche avere chiamate allo strumento aggiuntive, la metrica trajectory_in_order_match
restituisce un punteggio pari a 1
, altrimenti 0
.
Parametri di input:
predicted_trajectory
: la traiettoria prevista utilizzata dall'agente per raggiungere la risposta finale.reference_trajectory
: la traiettoria prevista per consentire all'agente di soddisfare la query.
Corrispondenza in qualsiasi ordine
metrics.append("trajectory_any_order_match")
Se la traiettoria prevista contiene tutte le chiamate allo strumento della traiettoria di riferimento, ma l'ordine non è importante e possono essere presenti chiamate allo strumento aggiuntive, la metrica trajectory_any_order_match
restituisce un punteggio pari a 1
, altrimenti 0
.
Parametri di input:
predicted_trajectory
: l'elenco delle chiamate allo strumento utilizzate dall'agente per raggiungere la risposta finale.reference_trajectory
: l'utilizzo previsto dello strumento per consentire all'agente di soddisfare la query.
Precisione
metrics.append("trajectory_precision")
La metrica trajectory_precision
misura quante chiamate allo strumento nella
traiettoria prevista sono effettivamente pertinenti o corrette in base alla
traiettoria di riferimento. Si tratta di un valore float
compreso nell'intervallo [0, 1]
: più alto è il punteggio, più precisa è la traiettoria prevista.
La precisione viene calcolata nel seguente modo: conteggia quante azioni nella traiettoria prevista compaiono anche nella traiettoria di riferimento. Dividi questo conteggio per il numero totale di azioni nella traiettoria prevista.
Parametri di input:
predicted_trajectory
: l'elenco delle chiamate allo strumento utilizzate dall'agente per raggiungere la risposta finale.reference_trajectory
: l'utilizzo dello strumento previsto per consentire all'agente di soddisfare la query.
Richiamo
metrics.append("trajectory_recall")
La metrica trajectory_recall
misura quante chiamate allo strumento essenziale
dalla traiettoria di riferimento vengono effettivamente acquisite nella
traiettoria prevista. È un valore float
compreso nell'intervallo [0, 1]
: più alto è il
punteggio, migliore è il richiamo della traiettoria prevista.
Il richiamo viene calcolato nel seguente modo: conteggia quante azioni nella traiettoria di riferimento compaiono anche nella traiettoria prevista. Dividi questo conteggio per il numero totale di azioni nella traiettoria di riferimento.
Parametri di input:
predicted_trajectory
: l'elenco delle chiamate allo strumento utilizzate dall'agente per raggiungere la risposta finale.reference_trajectory
: l'utilizzo previsto dello strumento per consentire all'agente di soddisfare la query.
Utilizzo di un solo strumento
from vertexai.preview.evaluation import metrics
metrics.append(metrics.TrajectorySingleToolUse(tool_name='tool_name'))
La metrica trajectory_single_tool_use
verifica se nella traiettoria prevista viene utilizzato uno strumento specifico specificato nella specifica della metrica. Non controlla l'ordine delle chiamate dello strumento o il numero di volte in cui viene utilizzato, ma solo se è presente o meno. È un valore 0
se lo strumento non è presente, 1
in caso contrario.
Parametri di input:
predicted_trajectory
: l'elenco delle chiamate allo strumento utilizzate dall'agente per raggiungere la risposta finale.
Personalizzato
Puoi definire una metrica personalizzata come segue:
from vertexai.preview.evaluation import metrics
def word_count(instance):
response = instance["response"]
score = len(response.split(" "))
return {"word_count": score}
metrics.append(
metrics.CustomMetric(name="word_count", metric_function=word_count)
)
Nei risultati sono sempre incluse le seguenti due metriche sul rendimento.
Non è necessario specificarli in EvalTask
:
latency
(float
): tempo (in secondi) impiegato dall'agente per rispondere.failure
(bool
):0
se l'invocazione dell'agente è riuscita,1
in caso contrario.
Prepara il set di dati di valutazione
Per preparare il set di dati per la valutazione della risposta finale o della traiettoria:
Risposta finale
Lo schema di dati per la valutazione della risposta finale è simile a quello della valutazione della risposta del modello.
Corrispondenza esatta
Il set di dati di valutazione deve fornire i seguenti input:
Parametri di input:
predicted_trajectory
: l'elenco delle chiamate allo strumento utilizzate dall'agente per raggiungere la risposta finale.reference_trajectory
: l'utilizzo dello strumento previsto per consentire all'agente di soddisfare la query.
Corrispondenza in ordine
Il set di dati di valutazione deve fornire i seguenti input:
Parametri di input:
predicted_trajectory
: la traiettoria prevista utilizzata dall'agente per raggiungere la risposta finale.reference_trajectory
: la traiettoria prevista per consentire all'agente di soddisfare la query.
Corrispondenza in qualsiasi ordine
Il set di dati di valutazione deve fornire i seguenti input:
Parametri di input:
predicted_trajectory
: l'elenco delle chiamate allo strumento utilizzate dall'agente per raggiungere la risposta finale.reference_trajectory
: l'utilizzo previsto dello strumento per consentire all'agente di soddisfare la query.
Precisione
Il set di dati di valutazione deve fornire i seguenti input:
Parametri di input:
predicted_trajectory
: l'elenco delle chiamate allo strumento utilizzate dall'agente per raggiungere la risposta finale.reference_trajectory
: l'utilizzo dello strumento previsto per consentire all'agente di soddisfare la query.
Richiamo
Il set di dati di valutazione deve fornire i seguenti input:
Parametri di input:
predicted_trajectory
: l'elenco delle chiamate allo strumento utilizzate dall'agente per raggiungere la risposta finale.reference_trajectory
: l'utilizzo previsto dello strumento per consentire all'agente di soddisfare la query.
Utilizzo di un solo strumento
Il set di dati di valutazione deve fornire i seguenti input:
Parametri di input:
predicted_trajectory
: l'elenco delle chiamate allo strumento utilizzate dall'agente per raggiungere la risposta finale.
A titolo esemplificativo, di seguito è riportato un esempio di set di dati di valutazione.
import pandas as pd
eval_dataset = pd.DataFrame({
"predicted_trajectory": [
[ # example 1
{
"tool_name": "set_device_info",
"tool_input": {"device_id": "device_3", "updates": {"status": "OFF"}}
},
],
[ # example 2
{
"tool_name": "get_user_preferences",
"tool_input": {"user_id": "user_z"},
}, {
"tool_name": "set_temperature",
"tool_input": {"location": "Living Room", "temperature": 23},
},
]
],
"reference_trajectory": [
[ # example 1
{
"tool_name": "set_device_info",
"tool_input": {"device_id": "device_2", "updates": {"status": "OFF"}},
},
],
[ # example 2
{
"tool_name": "get_user_preferences",
"tool_input": {"user_id": "user_y"},
}, {
"tool_name": "set_temperature",
"tool_input": {"location": "Living Room", "temperature": 23},
},
],
],
})
Set di dati di esempio
Abbiamo fornito i seguenti set di dati di esempio per dimostrare come puoi valutare gli agenti:
"on-device"
: set di dati di valutazione per un assistente Google Home on-device. L'agente aiuta con query come "Pianifica l'aria condizionata in camera da letto in modo che sia accesa dalle 23:00 alle 08:00 e spenta per il resto del tempo"."customer-support"
: set di dati di valutazione per un addetto all'assistenza clienti. L'agente aiuta a rispondere a domande come "Puoi annullare gli ordini in attesa e riassegnare i ticket di assistenza aperti?""content-creation"
: set di dati di valutazione per un agente di creazione di contenuti di marketing. L'agente risponde a query come "Riprogramma la campagna X come campagna singola sul sito di social media Y con un budget ridotto del 50% solo il 25 dicembre 2024".
Per importare i set di dati di esempio:
Installa e inizializza l'interfaccia a riga di comando
gcloud
.Scarica il set di dati di valutazione.
Sul dispositivo
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/on-device/eval_dataset.json .
Assistenza clienti
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/customer-support/eval_dataset.json .
Creazione di contenuti
gcloud storage cp gs://cloud-ai-demo-datasets/agent-eval-datasets/content-creation/eval_dataset.json .
Carica gli esempi del set di dati
import json eval_dataset = json.loads(open('eval_dataset.json').read())
Generare risultati di valutazione
Per generare i risultati della valutazione, esegui il seguente codice:
from vertexai.preview.evaluation import EvalTask
eval_task = EvalTask(dataset=eval_dataset, metrics=metrics)
eval_result = eval_task.evaluate(runnable=agent)
Visualizzare e interpretare i risultati
I risultati della valutazione vengono visualizzati come segue:
I risultati della valutazione contengono le seguenti informazioni:
Metriche di risposta finale
Metriche per riga:
response
: risposta finale generata dall'agente.latency_in_seconds
: tempo necessario (in secondi) per generare la risposta.failure
: indica se è stata generata o meno una risposta valida.score
: un punteggio calcolato per la risposta specificata nella specifica della metrica.explanation
: la spiegazione del punteggio specificato nella specifica della metrica.
Metriche di riepilogo:
mean
: punteggio medio per tutte le istanze.standard deviation
: deviazione standard per tutti i punteggi.
Metriche sulla traiettoria
Metriche per riga:
predicted_trajectory
: sequenza di chiamate allo strumento seguite dall'agente per raggiungere la risposta finale.reference_trajectory
: sequenza di chiamate allo strumento previste.score
: un punteggio calcolato per la traiettoria prevista e la traiettoria di riferimento specificata nella specifica della metrica.latency_in_seconds
: tempo necessario (in secondi) per generare la risposta.failure
: indica se è stata generata o meno una risposta valida.
Metriche di riepilogo:
mean
: punteggio medio per tutte le istanze.standard deviation
: deviazione standard per tutti i punteggi.
Passaggi successivi
Prova i seguenti notebook: