代理程式評估輸入架構
重要
這項功能處於公開預覽狀態。
本文說明代理程式評估所需的輸入架構,以評估應用程式的品質、成本和延遲。
- 在開發期間,評估會脫機進行,而評估集是代理程式評估的必要輸入。
- 當應用程式在生產環境中時,代理程式評估的所有輸入都來自推斷數據表或生產記錄。
在線和離線評估的輸入架構都相同。
如需評估集的一般資訊,請參閱 評估集。
評估輸入架構
下表顯示代理程式評估的輸入架構。 數據表的最後兩個數據行會參考如何提供呼叫的 mlflow.evaluate()
輸入。 如需詳細資訊,請參閱 如何提供評估回合 的輸入。
資料行 | 資料類型 | 描述 | 傳遞為輸入自變數的應用程式 | 先前提供的輸出 |
---|---|---|---|---|
request_id | 字串 | 要求的唯一識別碼。 | 選擇性 | 選擇性 |
要求 | 請參閱要求的結構描述。 | 要評估的應用程式輸入、使用者的問題或查詢。 例如, {'messages': [{"role": "user", "content": "What is RAG"}]} 或「什麼是RAG?」。 當 以字串的形式提供時 request ,它會在傳遞至代理程式之前將其轉換成 messages 。 |
必要 | 必要 |
回覆 | 字串 | 評估應用程式所產生的回覆。 | 由代理程式評估產生 | 選擇性。 如果未提供,則衍生自追蹤。 (response 或 trace 為必要項目。) |
expected_facts | 字串陣列 | 模型輸出中預期的事實清單。 請參閱 expected_facts指導方針。 | 選擇性 | 選擇性 |
expected_response | 字串 | 輸入要求的基準真相 (正確) 答案。 請參閱 expected_response 方針。 | 選擇性 | 選擇性 |
expected_retrieved_context | 陣列 | 物件的陣列,其中包含要求的預期擷取內容 (如果應用程式包含擷取步驟)。 陣列結構描述 | 選擇性 | 選擇性 |
retrieved_context | 陣列 | 正在評估之應用程式中擷取器所產生的擷取結果。 如果應用程式中有多個擷取步驟,這是最後一個步驟的擷取結果 (依時間順序在追蹤中)。 陣列結構描述 | 由代理程式評估產生 | 選擇性。 如果未提供,則衍生自提供的追蹤。 |
追蹤 | MLflow 追蹤的 JSON 字串 | 對應要求上應用程式執行的 MLflow 追蹤。 | 由代理程式評估產生 | 選擇性。 (response 或 trace 為必要項目。) |
expected_facts
方針
欄位 expected_facts
會指定預期出現在特定輸入要求的任何正確模型回應中的事實清單。 也就是說,如果模型回應包含這些事實,則不論回應的片語方式為何,都會被視為正確。
只包含必要事實,並排除答案中並非嚴格要求的事實,可讓代理程式評估在輸出品質上提供更強固的訊號。
您最多可以指定和 的expected_facts
expected_response
其中一個 。 如果您同時指定兩者,則會報告錯誤。 Databricks 建議使用 expected_facts
,因為它是更具體的指導方針,可協助代理程式評估更有效率地判斷產生的響應品質。
expected_response
方針
欄位 expected_response
包含完整格式的回應,代表正確模型響應的參考。 也就是說,如果模型回應符合 中 expected_response
的信息內容,則視為正確。 相反地, expected_facts
只會列出出現在正確回應中所需的事實,而且不是完整格式的參考回應。
類似於 expected_facts
, expected_response
應該只包含正確回應所需的最小事實集。 只包含必要資訊,並排除答案中並非嚴格要求的資訊,可讓代理程式評估在輸出品質上提供更強固的訊號。
您最多可以指定和 的expected_facts
expected_response
其中一個 。 如果您同時指定兩者,則會報告錯誤。 Databricks 建議使用 expected_facts
,因為它是更具體的指導方針,可協助代理程式評估更有效率地判斷產生的響應品質。
要求的結構描述
請求結構描述可以是下列其中之一:
- OpenAI 聊天完成架構。 OpenAI 聊天完成架構必須有物件的陣列做為
messages
參數。 欄位messages
可以編碼完整的交談。 - 如果代理程式支援 OpenAI 聊天完成架構,您可以傳遞純字串。 此格式僅支援單一回合交談。 一般字串會在傳遞至代理程式之前,使用轉換成
messages
格式"role": "user"
。 例如,在傳遞至代理程式之前,會先將純字串"What is MLflow?"
轉換成{"messages": [{"role": "user", "content": "What is MLflow?"}]}
。 SplitChatMessagesRequest
. 最近要求的query
字串欄位,以及編碼先前交談回合的選擇性history
欄位。
針對多回合聊天應用程式,請使用上述第二或第三個選項。
下列範例顯示評估資料集相同 request
資料行中的所有三個選項:
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)
評估輸入中的陣列架構
陣列 expected_retrieved_context
和 retrieved_context
的結構描述,如下表所示:
資料行 | 資料類型 | 描述 | 傳遞為輸入引數的應用程式 | 先前提供的生成輸出 |
---|---|---|---|---|
content | 字串 | 擷取內容的內容。 任何格式的字串,例如 HTML、純文字或 Markdown。 | 選擇性 | 選擇性 |
doc_uri | 字串 | 區塊的來源父文件的唯一識別碼 (URI)。 | 必要 | 必要 |
計算計量
下表中的數據行表示輸入中包含的數據,並 ✓
指出提供該數據時支援計量。
如需這些計量量值的詳細資訊,請參閱 代理程式評估如何評估品質、成本和延遲。
計算計量 | request |
request 和 expected_response |
request 、expected_response 和 expected_retrieved_context |
request 和 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 |
✓ | ✓ |