代理评估输入架构
重要
此功能目前以公共预览版提供。
本文介绍代理评估评估评估应用程序的质量、成本和延迟所需的输入架构。
- 在开发期间,评估会脱机进行,评估集是代理评估所需的输入。
- 当应用程序处于生产环境中时,代理评估的所有输入都来自推理表或生产日志。
对于联机和脱机评估,输入架构是相同的。
有关评估集的一般信息,请参阅 评估集。
评估输入架构
下表显示了代理评估的输入架构。 表的最后两列是指如何向调用提供 mlflow.evaluate()
输入。 有关详细信息,请参阅 如何为评估运行 提供输入。
列 | 数据类型 | 描述 | 作为输入参数传递的应用程序 | 以前生成的输出提供 |
---|---|---|---|---|
request_id | string | 请求的唯一标识符。 | 可选 | 可选 |
请求 | 请参阅请求架构。 | 用于评估的应用程序输入,用户的问题或查询。 例如, {'messages': [{"role": "user", "content": "What is RAG"}]} 或“什么是 RAG?”。 作为字符串提供时 request ,它将在传递给代理之前将其转换为 messages 该字符串。 |
必须 | 必须 |
response | string | 正在评估的应用程序生成的响应。 | 由代理评估生成 | 可选。 如果未提供,则从跟踪派生。 response 或 trace 是必需的。 |
expected_facts | 字符串数组 | 模型输出中预期的事实列表。 请参阅 expected_facts指南。 | 可选 | 可选 |
expected_response | string | 输入请求的真实(正确)答案。 请参阅 expected_response 准则。 | 可选 | 可选 |
expected_retrieved_context | array | 包含请求的预期检索上下文的对象数组(如果应用程序包含检索步骤)。 数组架构 | 可选 | 可选 |
retrieved_context | array | 正在评估的应用程序中的检索器生成的检索结果。 如果应用程序中有多个检索步骤,则这是最后一步(跟踪中按时间顺序排列)的检索结果。 数组架构 | 由代理评估生成 | 可选。 如果未提供,则从提供的跟踪派生。 |
跟踪 | 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"
。 例如,在传递给代理之前,{"messages": [{"role": "user", "content": "What is MLflow?"}]}
将转换为纯字符串"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 | string | 检索到的上下文的内容。 任意格式的字符串,例如 HTML、纯文本或 Markdown。 | 可选 | 可选 |
doc_uri | string | 区块的来源父文档的唯一标识符 (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 |
✓ | ✓ |