代理评估输入架构
重要
此功能目前以公共预览版提供。
本文介绍代理评估评估评估应用程序的质量、成本和延迟所需的输入架构。
- 在开发期间,评估会脱机进行,评估集是代理评估所需的输入。
- 当应用程序处于生产环境中时,代理评估的所有输入都来自推理表或生产日志。
对于联机和脱机评估,输入架构是相同的。
有关评估集的一般信息,请参阅 评估集。
评估输入架构
下表显示了代理评估的输入架构。
列 | 数据类型 | 描述 | 作为输入参数传递的应用程序 | 提供的先前生成的输出 |
---|---|---|---|---|
request_id | string | 请求的唯一标识符。 | 可选 | 可选 |
请求 | 请参阅请求架构。 | 用于评估的应用程序输入,用户的问题或查询。 例如,“什么是 RAG?”。 | 必须 | 必须 |
expected_retrieved_context | array | 包含请求的预期检索上下文的对象数组(如果应用程序包含检索步骤)。 数组架构 | 可选 | 可选 |
expected_response | string | 输入请求的真实(正确)答案。 请参阅 expected_response 准则。 | 可选 | 可选 |
response | string | 正在评估的应用程序生成的响应。 | 由代理评估生成 | 可选。 如果未提供,则从跟踪派生。 response 或 trace 是必需的。 |
retrieved_context | array | 正在评估的应用程序中的检索器生成的检索结果。 如果应用程序中有多个检索步骤,则这是最后一步(跟踪中按时间顺序排列)的检索结果。 数组架构 | 由代理评估生成 | 可选。 如果未提供,则从提供的跟踪派生。 |
跟踪 | MLflow 跟踪的 JSON 字符串 | 应用程序对相应请求的执行的 MLflow 跟踪。 | 由代理评估生成 | 可选。 response 或 trace 是必需的。 |
expected_response
准则
基本事实 expected_response
应仅包含正确响应所需的最小事实集。 如果从其他来源复制响应,请务必编辑响应以删除任何不需要的文本,以使答案被视为正确。
仅包含所需的信息,而忽略答案中不严格要求的信息,使得代理评估能够提供更可靠的输出质量信号。
请求架构
请求架构可以是下列项之一:
- 纯字符串。 此格式仅支持单轮对话。
messages
字段,它遵循 OpenAI 聊天完成架构,并且可对完整聊天进行编码。- 用于最新请求的
query
字符串字段,以及对先前对话轮次进行编码的可选history
字段。
对于多轮聊天应用程序,请使用上面的第二个或第三个选项。
以下示例显示了评估数据集的同一 request
列中的所有三个选项:
import pandas as pd
data = {
"request": [
# Plain string
"What is the difference between reduceByKey and groupByKey in Spark?",
# Using the `messages` field for a single- or multi-turn chat
{
"messages": [
{
"role": "user",
"content": "How can you minimize data shuffling in Spark?"
}
]
},
# Using 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)。 | 必须 | 必须 |
计算指标
下表中的列指示输入中包含的数据,并 ✓
指示提供该数据时支持该指标。
有关这些指标度量值的详细信息,请参阅 LLM 评委如何评估质量。
测算指标 | request |
request 和 expected_response |
request 、expected_response 和 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 |
✓ |