Schema per la valutazione dell'input degli agenti
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 a come viene fornito l'input alla chiamata mlflow.evaluate()
. Per informazioni dettagliate, vedere Fornire input per un'esecuzione di verifica.
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 | Consultare lo 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 |
istruzioni | matrice di valori string | Elenco di linee guida a cui si prevede che l'output del modello sia conforme. Consultare le linee guida e. | 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 array | 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 array | 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 campo expected_facts
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.
guidelines
linee guida
Il campo guidelines
specifica l'elenco di linee guida a cui deve essere conforme qualsiasi risposta del modello corretta. Le linee guida possono fare riferimento a vari tratti della risposta, inclusi elementi stilistici o correlati al contenuto. Per il segnale più affidabile sulla conformità alle linee guida, Databricks consiglia di usare il linguaggio seguente:
- "La risposta deve ..."
- "La risposta non deve ..."
- "La risposta può facoltativamente ..."
In particolare, è necessario fare riferimento direttamente alla richiesta e alla risposta e lasciare il minimo ambiguità possibile nelle linee guida. Per le linee guida applicabili all'intero set di valutazione, ad esempio per garantire che le risposte abbiano un tono professionale o siano sempre in inglese, usare il parametro global_guidelines
nella configurazione dell'analizzatore come indicato di seguito:
eval_set = [
{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
"guidelines": [
"The response must be in English",
"The response must be clear, coherent, and concise",
]
}
]
mlflow.evaluate(
data=pd.DataFrame(eval_set),
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"global_guidelines": [
"The response must be in English",
"The response must be clear, coherent, and concise",
],
}
}
)
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
Lo schema 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 parametro
messages
. 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 colonna request
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
è 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 , expected_retrieved_context e guidelines |
request e expected_retrieved_context |
request e guidelines |
---|---|---|---|---|---|
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 |
✓ | ✓ | |||
response/llm_judged/guideline_adherence/rating |
✓ | ✓ |