Sviluppare un flusso di valutazione nel portale di Azure AI Foundry
Importante
Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. 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 presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.
I flussi di valutazione sono tipi speciali di flussi che valutano se gli output di un'esecuzione sono ben allineati a criteri e obiettivi specifici.
Nel prompt flow è possibile personalizzare o creare flussi di valutazione personalizzati in base ad attività e obiettivi e quindi usarli per valutare altri flussi. In questo documento viene illustrato come:
- Come sviluppare un metodo di valutazione.
- Informazioni su input, output e metriche di registrazione per le valutazioni dei prompt flow.
Iniziare a sviluppare un metodo di valutazione
Esistono due modi per sviluppare i metodi di valutazione personalizzati:
Personalizzare un flusso di valutazione predefinito: modificare un flusso di valutazione predefinito.
- In Strumenti, selezionare Prompt flow.
- Selezionare Crea per aprire la creazione guidata del flusso.
- Nella raccolta di flussi sotto Esplora raccolta, selezionare Flusso di valutazione per filtrare in base a questo tipo di flusso. Selezionare un esempio e fare clic su Clona per eseguire la personalizzazione.
Creare un nuovo flusso di valutazione da zero: sviluppare un metodo di valutazione completamente nuovo da zero.
- In Strumenti, selezionare Prompt flow.
- Selezionare Crea per aprire la creazione guidata del flusso.
- Nella raccolta di flussi in Crea per tipo nella casella "Flusso di valutazione", selezionare Crea, quindi è possibile visualizzare un modello di flusso di valutazione.
Informazioni sulla valutazione in Prompt flow
In Prompt flow un flusso è una sequenza di nodi che elaborano un input e generano un output. I flussi di valutazione accettano anche gli input necessari e producono gli output corrispondenti.
Alcune funzionalità speciali dei metodi di valutazione sono:
- In genere vengono eseguiti dopo l'esecuzione da testare ricevendo output da tale esecuzione.
- Oltre agli output dell'esecuzione da testare, possono ricevere facoltativamente un altro set di dati che potrebbe contenere le verità di base corrispondenti.
- Possono avere un nodo di aggregazione che calcola le prestazioni complessive del flusso testato in base ai singoli punteggi.
- Possono registrare le metriche usando la funzione
log_metric()
.
Viene illustrato come definire gli input e gli output nello sviluppo di metodi di valutazione.
Input
Una valutazione viene eseguita dopo un'altra esecuzione per valutare se gli output dell'esecuzione sono ben allineati a criteri e obiettivi specifici. Pertanto, la valutazione riceve gli output generati da tale esecuzione.
Potrebbero essere necessari anche altri input, come la verità a terra, che potrebbe provenire da un set di dati. Per impostazione predefinita, la valutazione usa lo stesso set di dati di quello di test fornito all'esecuzione testata. Tuttavia, se le etichette corrispondenti o i valori delle verità di base di destinazione si trovano in un set di dati diverso, è possibile passare facilmente a quest'ultimo.
Pertanto, per eseguire una valutazione, è necessario indicare le origini di questi input necessari. A tale scopo, quando si invia una valutazione, viene visualizzata una sezione "Mapping dell'input".
- Se l'origine dati proviene dall'output di esecuzione, viene indicata come
${run.output.[OutputName]}
- Se l'origine dati proviene dal set di dati di test, viene indicata come
${data.[ColumnName]}
Nota
Se la valutazione non richiede dati dal set di dati, non è necessario fare riferimento ad alcuna colonna del set di dati nella sezione mapping di input, perché la selezione del set di dati è una configurazione facoltativa. La selezione del set di dati non influisce sul risultato della valutazione.
Immettere la descrizione
Per ricordare quali input sono necessari per calcolare le metriche, è possibile aggiungere una descrizione per ogni input necessario. Le descrizioni vengono visualizzate quando si esegue il mapping delle origini nell'invio dell'esecuzione batch.
Per aggiungere descrizioni per ogni input, selezionare Mostra descrizione nella sezione corrispondente durante lo sviluppo del metodo di valutazione. Ed è possibile selezionare "Nascondi descrizione" per nasconderla.
Questa descrizione viene quindi visualizzata quando si usa questo metodo di valutazione nell'invio dell'esecuzione batch.
Output e metriche
Gli output di una valutazione sono i risultati che misurano le prestazioni del flusso sottoposto a test. L'output contiene in genere metriche, ad esempio punteggi, e può includere anche testo relativo a motivi e suggerimenti.
Output dei punteggi a livello di istanza
Nel prompt flow il flusso elabora ogni set di dati di esempio alla volta e genera un record di output. Analogamente, nella maggior parte dei casi di valutazione è presente una metrica per ogni output, che consente di controllare il livello di prestazioni del flusso con ogni singolo dato.
Per registrare il punteggio per ogni campione di dati, calcolare il punteggio per ogni output e registrare il punteggio come output del flusso impostandolo nella sezione di output. Questa esperienza di creazione è identica a quella per la definizione di un output di flusso standard.
Questo punteggio viene calcolato in line_process
, che è possibile creare e modificare da zero durante la creazione in base al tipo. Si può anche sostituire questo nodo python con un nodo LLM in modo da usare LLM per calcolare il punteggio.
Quando questo metodo di valutazione viene usato per valutare un altro flusso, il punteggio a livello di istanza può essere visualizzato nella scheda Panoramica>Output.
Registrazione di metriche e nodo di aggregazione
Inoltre, è anche importante fornire un punteggio complessivo per l'esecuzione. È possibile controllare il "Imposta come aggregazione" di un nodo Python in un flusso di valutazione per trasformarlo in un nodo "reduce", consentendo al nodo di accettare gli input come elenco e di elaborarli in batch.
In questo modo, è possibile calcolare ed elaborare tutti i punteggi di ogni output del flusso e calcolare un risultato complessivo per ogni variante.
È possibile registrare le metriche in un nodo di aggregazione usando Prompt flow_sdk.log_metrics(). Le metriche devono essere numeriche (float/int). La registrazione di metriche dei tipi di stringa non è supportata.
Questo punteggio viene calcolato nel nodo aggregate
, che è possibile creare e modificare da zero durante la creazione in base al tipo. Si può anche sostituire questo nodo Python con un nodo LLM in modo da usare LLM per calcolare il punteggio. Vedere l'esempio seguente per l'uso dell'API log_metric
in un flusso di valutazione:
from typing import List
from promptflow import tool, log_metric
@tool
def calculate_accuracy(grades: List[str], variant_ids: List[str]):
aggregate_grades = {}
for index in range(len(grades)):
grade = grades[index]
variant_id = variant_ids[index]
if variant_id not in aggregate_grades.keys():
aggregate_grades[variant_id] = []
aggregate_grades[variant_id].append(grade)
# calculate accuracy for each variant
for name, values in aggregate_grades.items():
accuracy = round((values.count("Correct") / len(values)), 2)
log_metric("accuracy", accuracy, variant_id=name)
return aggregate_grades
Poiché questa funzione è stata chiamata nel nodo Python, non è necessario assegnarla altrove ed è possibile visualizzare le metriche in un secondo momento. Quando questo metodo di valutazione viene usato in un’esecuzione di un batch, il punteggio a livello di istanza può essere visualizzato nella scheda Panoramica ->Metriche.