代理评估输入架构

重要

此功能目前以公共预览版提供。

本文介绍代理评估评估评估应用程序的质量、成本和延迟所需的输入架构。

  • 在开发期间,评估会脱机进行,评估集是代理评估所需的输入。
  • 当应用程序处于生产环境中时,代理评估的所有输入都来自推理表或生产日志。

对于联机和脱机评估,输入架构是相同的。

有关评估集的一般信息,请参阅 评估集

评估输入架构

下表显示了代理评估的输入架构。

数据类型 描述 作为输入参数传递的应用程序 提供的先前生成的输出
request_id string 请求的唯一标识符。 可选 可选
请求 请参阅请求架构 用于评估的应用程序输入,用户的问题或查询。 例如,“什么是 RAG?”。 必须 必须
expected_retrieved_context array 包含请求的预期检索上下文的对象数组(如果应用程序包含检索步骤)。 数组架构 可选 可选
expected_response string 输入请求的真实(正确)答案。 请参阅 expected_response 准则 可选 可选
response string 正在评估的应用程序生成的响应。 由代理评估生成 可选。 如果未提供,则从跟踪派生。 responsetrace 是必需的。
retrieved_context array 正在评估的应用程序中的检索器生成的检索结果。 如果应用程序中有多个检索步骤,则这是最后一步(跟踪中按时间顺序排列)的检索结果。 数组架构 由代理评估生成 可选。 如果未提供,则从提供的跟踪派生。
跟踪 MLflow 跟踪的 JSON 字符串 应用程序对相应请求的执行的 MLflow 跟踪。 由代理评估生成 可选。 responsetrace 是必需的。

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_contextretrieved_context 的架构如下表中所示:

数据类型 描述 作为输入参数传递的应用程序 提供的先前生成的输出
content string 检索到的上下文的内容。 任意格式的字符串,例如 HTML、纯文本或 Markdown。 可选 可选
doc_uri string 区块的来源父文档的唯一标识符 (URI)。 必须 必须

计算指标

下表中的列指示输入中包含的数据,并 指示提供该数据时支持该指标。

有关这些指标度量值的详细信息,请参阅 LLM 评委如何评估质量。

测算指标 request requestexpected_response requestexpected_responseexpected_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