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
Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente 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 avere funzionalità limitate. Per ulteriori informazioni, vedere Condizioni supplementari per l'uso delle versioni di anteprima di Microsoft Azure.
Acquisisci il feedback degli utenti finali, ad esempio reazioni con pollice in su o pollice in giù oppure scale di valutazione numeriche, dalla tua applicazione di IA e instradalo al tuo backend di osservabilità utilizzando la semantica di OpenTelemetry (OTel). Quando si registrano commenti e suggerimenti degli utenti, è possibile correlare i segnali di qualità soggettivi con i dati di traccia, misurare la soddisfazione dell'utente nel tempo e migliorare continuamente gli agenti e i modelli.
Overview
La registrazione dei commenti e suggerimenti degli utenti finali usa convenzioni semantiche OTel per generare eventi di feedback strutturati associati a una traccia o a un intervallo specifico. Ciò significa che i dati di feedback passano attraverso lo stesso canale di telemetria delle tracce e delle metriche, offrendo una visione unificata del comportamento dell'applicazione e del sentiment degli utenti.
Funzionalità chiave:
- Pollice in su o in giù: Registra segnali binari di approvazione dell'utente associati a una specifica risposta dell'agente.
- Scala di valutazione: Acquisire punteggi numerici, ad esempio 1-5 stelle, per quantificare la soddisfazione degli utenti.
- Correlazione di traccia: Ogni evento di feedback si collega alla traccia e all'intervallo di origine, in modo da poter eseguire il drill-down dalle metriche di soddisfazione aggregate alle singole interazioni.
- Trasporto OTel Standard: Gli eventi di feedback usano l'API Eventi OpenTelemetry, quindi vengono esportati tramite la pipeline OTel esistente in Application Insights o in qualsiasi back-end compatibile.
Prerequisites
Progetto Foundry con una risorsa di Application Insights connessa . Vedi Configurare il tracciamento.
Strumentazione OpenTelemetry configurata nell'applicazione. Per istruzioni sulla configurazione, vedi Configurare il tracciamento in Microsoft Foundry.
Python 3.9 o versione successiva o un linguaggio supportato con il supporto di OTel SDK.
I pacchetti
azure-ai-projectseazure-monitor-opentelemetryinstallati:pip install "azure-ai-projects>=2.0.0" azure-monitor-opentelemetry python-dotenv
Tipi di valutazione
Acquisisci il feedback degli utenti come evento OpenTelemetry gen_ai.evaluation.result. Il sistema supporta due tipi di valutazione:
| Type | Description | Rendering dell'interfaccia utente | Intervallo di punteggi |
|---|---|---|---|
| Binario | Valutazione con esito positivo/negativo. | Pollice verso l'alto o il pollice verso il basso |
0.0 (esito negativo) o 1.0 (passaggio) |
| Scala Likert a 5 punti | Valutazione ordinale su una scala a 5 punti. | Classificazione a 5 stelle o scala Likert (fortemente non d'accordo → fortemente d'accordo) |
1.0 a 5.0 |
Due tipi di origine possono fornire commenti e suggerimenti:
- Builder: Una valutazione umana con una soluzione di osservabilità Microsoft, ad esempio in Foundry o nel portale di Monitoraggio di Azure.
- End user: Una persona che esegue una valutazione tramite un'interfaccia applicativa monitorata da una soluzione Microsoft di osservabilità.
Attributi dell'evento
Ogni valutazione umana viene emessa come evento gen_ai.evaluation.result. Le sezioni seguenti descrivono gli attributi necessari per ogni tipo di valutazione. Per un'implementazione di riferimento completa, vedere sample_human_evaluations.py.
Generare una valutazione binaria (pollici su o giù)
Le valutazioni binarie registrano un feedback di esito positivo o negativo. Il punteggio deve essere 0.0 (esito negativo) o 1.0 (pass).
Norme:
-
gen_ai.evaluation.score.value:0.0o1.0 -
gen_ai.evaluation.score.label:"fail"o"pass" -
internal_properties.gen_ai.evaluation.type:"boolean" -
internal_properties.gen_ai.evaluation.min_value:0.0 -
internal_properties.gen_ai.evaluation.max_value:1.0 -
internal_properties.gen_ai.evaluation.threshold:1.0 -
internal_properties.gen_ai.evaluation.desirable_direction:"increase"
Esempio: l'utente finale fa un gesto di approvazione
Per un esempio eseguibile, vedere sample_human_evaluations.py.
Generare una valutazione a 5 punti Likert (scala di classificazione)
Le valutazioni di Likert a 5 punti raccolgono feedback ordinale su una scala da 1–5. Un punteggio superiore o superiore alla soglia (impostazione predefinita 3.0) viene considerato un passaggio.
Norme:
-
gen_ai.evaluation.score.value: valore compreso tra1.0e5.0 -
gen_ai.evaluation.score.label:"pass"se il punteggio ≥ soglia; in caso contrario,"fail" -
internal_properties.gen_ai.evaluation.type:"ordinal" -
internal_properties.gen_ai.evaluation.min_value:1.0 -
internal_properties.gen_ai.evaluation.max_value:5.0 -
internal_properties.gen_ai.evaluation.threshold:3.0 -
internal_properties.gen_ai.evaluation.desirable_direction:"increase"
Esempio: Builder valuta la pertinenza nel portale Foundry
Per un esempio eseguibile, vedere sample_human_evaluations.py.
Visualizzare commenti e suggerimenti in Application Insights
Dopo l'esportazione degli eventi di feedback tramite la pipeline OTel, è possibile eseguire query in Application Insights usando KQL:
customEvents
| where name == "gen_ai.evaluation.result"
| extend
eval_name = tostring(customDimensions["gen_ai.evaluation.name"]),
score = todouble(customDimensions["gen_ai.evaluation.score.value"]),
label = tostring(customDimensions["gen_ai.evaluation.score.label"]),
eval_source = tostring(customDimensions["microsoft.gen_ai.human_evaluation.source"]),
internal = parse_json(tostring(customDimensions["internal_properties"]))
| extend
eval_type = tostring(internal["gen_ai.evaluation.type"])
| where eval_source in ("builder", "end_user")
| summarize
total = count(),
pass_rate = round(countif(label == "pass") * 100.0 / count(), 1),
avg_score = round(avg(score), 2)
by eval_name, eval_type, bin(timestamp, 1h)
| order by timestamp desc