Schema di input di valutazione dell'agente
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Questo articolo illustra lo schema di input richiesto dalla valutazione dell'agente per valutare la qualità, il costo e la latenza dell'applicazione.
- Durante lo sviluppo, la valutazione viene eseguita offline e un set di valutazione è un input necessario per la valutazione dell'agente.
- Quando un'applicazione è in produzione, tutti gli input per la valutazione dell'agente provengono dalle tabelle di inferenza o dai log di produzione.
Lo schema di input è identico per le valutazioni online e offline.
Per informazioni generali sui set di valutazione, vedere Set di valutazione.
Schema di input di valutazione
La tabella seguente mostra lo schema di input di Agent Evaluation. Le ultime due colonne della tabella fanno riferimento al modo in cui viene fornito l'input alla mlflow.evaluate()
chiamata. Per informazioni dettagliate, vedere Come fornire input a un'esecuzione di valutazione.
Colonna | Tipo di dati | Descrizione | Applicazione passata come argomento di input | Output generati in precedenza forniti |
---|---|---|---|---|
request_id | string | Identificatore univoco della richiesta. | Facoltativo | Facoltativo |
request | Vedere Schema per la richiesta. | Input per l'applicazione da valutare, domanda o query dell'utente. Ad esempio, {'messages': [{"role": "user", "content": "What is RAG"}]} o "Che cos'è RAG?". Quando request viene specificato come stringa, verrà trasformato in messages prima che venga passato all'agente. |
Richiesto | Richiesto |
Risposta | string | Risposta generata dall'applicazione valutata. | Generato dalla valutazione dell'agente | Facoltativo. Se non viene specificato, derivata da Trace. È obbligatorio specificare response o trace . |
expected_facts | matrice di valori string | Elenco di fatti previsti nell'output del modello. Vedere expected_facts linee guida. | Facoltativo | Facoltativo |
expected_response | string | Risposta alla verità (corretta) per la richiesta di input. Vedere expected_response linee guida. | Facoltativo | Facoltativo |
expected_retrieved_context | array | Matrice di oggetti contenente il contesto recuperato previsto per la richiesta (se l'applicazione include un passaggio di recupero). Schema di matrice | Facoltativo | Facoltativo |
retrieved_context | array | Recupero dei risultati generati dal retriever nell'applicazione da valutare. Se nell'applicazione sono presenti più passaggi di recupero, si tratta dei risultati di recupero dell'ultimo passaggio (cronologicamente nella traccia). Schema di matrice | Generato dalla valutazione dell'agente | Facoltativo. Se non viene specificato, derivata dalla traccia fornita. |
trace | Stringa JSON di Traccia MLflow | MLflow Trace dell'esecuzione dell'applicazione nella richiesta corrispondente. | Generato dalla valutazione dell'agente | Facoltativo. È obbligatorio specificare response o trace . |
expected_facts
linee guida
Il expected_facts
campo specifica l'elenco di fatti che si prevede vengano visualizzati in qualsiasi risposta del modello corretta per la richiesta di input specifica. Ovvero, una risposta del modello viene considerata corretta se contiene questi fatti, indipendentemente dalla modalità di frase della risposta.
Includendo solo i fatti richiesti e lasciando fuori fatti che non sono strettamente richiesti nella risposta, consente alla valutazione dell'agente di fornire un segnale più affidabile sulla qualità dell'output.
È possibile specificare al massimo uno di expected_facts
e expected_response
. Se si specificano entrambi, verrà segnalato un errore. Databricks consiglia di usare expected_facts
, perché è una linea guida più specifica che aiuta il giudice di valutazione dell'agente a valutare in modo più efficace la qualità delle risposte generate.
expected_response
linee guida
Il expected_response
campo contiene una risposta completamente formata che rappresenta un riferimento per le risposte del modello corrette. Ovvero, una risposta del modello viene considerata corretta se corrisponde al contenuto delle informazioni in expected_response
. Al contrario, expected_facts
elenca solo i fatti necessari per essere visualizzati in una risposta corretta e non è una risposta di riferimento completamente formata.
Analogamente a expected_facts
, expected_response
deve contenere solo il set minimo di fatti necessari per una risposta corretta. Includendo solo le informazioni necessarie e lasciando le informazioni non strettamente necessarie nella risposta, consente alla valutazione dell'agente di fornire un segnale più affidabile sulla qualità dell'output.
È possibile specificare al massimo uno di expected_facts
e expected_response
. Se si specificano entrambi, verrà segnalato un errore. Databricks consiglia di usare expected_facts
, perché è una linea guida più specifica che aiuta il giudice di valutazione dell'agente a valutare in modo più efficace la qualità delle risposte generate.
Schema per la richiesta
Il corpo della richiesta può essere uno dei seguenti:
- Schema di completamento della chat OpenAI. Lo schema di completamento della chat OpenAI deve avere una matrice di oggetti come
messages
parametro. Ilmessages
campo può codificare la conversazione completa. - Se l'agente supporta lo schema di completamento della chat OpenAI, è possibile passare una stringa normale. Questo formato supporta solo conversazioni a turno singolo. Le stringhe semplici vengono convertite nel
messages
formato con"role": "user"
prima di essere passate all'agente. Ad esempio, una stringa"What is MLflow?"
normale viene convertita in{"messages": [{"role": "user", "content": "What is MLflow?"}]}
prima di essere passata all'agente. SplitChatMessagesRequest
. Unquery
campo stringa per la richiesta più recente e un campo facoltativohistory
che codifica i turni precedenti della conversazione.
Per le applicazioni di chat a più turni, usare la seconda o la terza opzione precedente.
L'esempio seguente mostra tutte e tre le opzioni nella stessa request
colonna del set di dati di valutazione:
import pandas as pd
data = {
"request": [
# Plain string. Plain strings are transformed to the `messages` format before being passed to your agent.
"What is the difference between reduceByKey and groupByKey in Spark?",
# OpenAI chat completion schema. Use the `messages` field for a single- or multi-turn chat.
{
"messages": [
{
"role": "user",
"content": "How can you minimize data shuffling in Spark?"
}
]
},
# SplitChatMessagesRequest. Use the `query` and `history` fields for a single- or multi-turn chat.
{
"query": "Explain broadcast variables in Spark. How do they enhance performance?",
"history": [
{
"role": "user",
"content": "What are broadcast variables?"
},
{
"role": "assistant",
"content": "Broadcast variables allow the programmer to keep a read-only variable cached on each machine."
}
]
}
],
"expected_response": [
"expected response for first question",
"expected response for second question",
"expected response for third question"
]
}
eval_dataset = pd.DataFrame(data)
Schema per le matrici nell'input di valutazione
Lo schema delle matrici expected_retrieved_context
e retrieved_context
viene illustrato nella tabella seguente:
Colonna | Tipo di dati | Descrizione | Applicazione passata come argomento di input | Output generati in precedenza forniti |
---|---|---|---|---|
content | string | Contenuto del contesto recuperato. Stringa in qualsiasi formato, ad esempio HTML, testo normale o Markdown. | Facoltativo | Facoltativo |
doc_uri | string | Identificatore univoco (URI) del documento padre da cui proviene il blocco. | Richiesto | Richiesto |
Metriche calcolate
Le colonne nella tabella seguente indicano i dati inclusi nell'input e ✓
indica che la metrica è supportata quando vengono forniti i dati.
Per informazioni dettagliate sulla misura di queste metriche, vedere Come vengono valutati la qualità, i costi e la latenza dalla valutazione dell'agente.
Metriche di calcolo | request |
request e expected_response |
request , expected_response e expected_retrieved_context |
request e expected_retrieved_context |
---|---|---|---|---|
response/llm_judged/relevance_to_query/rating |
✓ | ✓ | ✓ | |
response/llm_judged/safety/rating |
✓ | ✓ | ✓ | |
response/llm_judged/groundedness/rating |
✓ | ✓ | ✓ | |
retrieval/llm_judged/chunk_relevance_precision |
✓ | ✓ | ✓ | |
agent/total_token_count |
✓ | ✓ | ✓ | |
agent/input_token_count |
✓ | ✓ | ✓ | |
agent/output_token_count |
✓ | ✓ | ✓ | |
response/llm_judged/correctness/rating |
✓ | ✓ | ||
retrieval/llm_judged/context_sufficiency/rating |
✓ | ✓ | ||
retrieval/ground_truth/document_recall |
✓ | ✓ |