通过


代理评估 (MLflow 2)

重要

Databricks 建议使用 MLflow 3 来评估和监视 GenAI 应用。 本页介绍 MLflow 2 代理评估。

本文概述了如何使用基于 MLflow 2 的代理评估。

如何使用代理评估?

以下代码演示了如何对以前生成的输出调用和测试代理评估。 它返回一个数据帧,其中包含 LLM 判定计算的评估分数,这些分数是代理评估的一部分。 请参阅 示例笔记本,其中包含可在 Azure Databricks 工作区中运行的类似代码的快速入门示例笔记本。

可以将以下内容复制并粘贴到现有的 Azure Databricks 笔记本中:

%pip install mlflow databricks-agents
dbutils.library.restartPython()

import mlflow
import pandas as pd

examples =  {
    "request": [
      {
      # Recommended `messages` format
        "messages": [{
          "role": "user",
          "content": "Spark is a data analytics framework."
        }],
      },
      # SplitChatMessagesRequest format
      {
        "query": "How do I convert a Spark DataFrame to Pandas?",
        "history": [
          {"role": "user", "content": "What is Spark?"},
          {"role": "assistant", "content": "Spark is a data processing engine."},
        ],
      }
      # Note: Using a primitive string is discouraged. The string will be wrapped in the
      # OpenAI messages format before being passed to your agent.
    ],
    "response": [
        "Spark is a data analytics framework.",
        "This is not possible as Spark is not a panda.",
    ],
    "retrieved_context": [ # Optional, needed for judging groundedness.
        [{"doc_uri": "doc1.txt", "content": "In 2013, Spark, a data analytics framework, was open sourced by UC Berkeley's AMPLab."}],
        [{"doc_uri": "doc2.txt", "content": "To convert a Spark DataFrame to Pandas, you can use toPandas()"}],
    ],
    "expected_response": [ # Optional, needed for judging correctness.
        "Spark is a data analytics framework.",
        "To convert a Spark DataFrame to Pandas, you can use the toPandas() method.",
    ]
}
global_guidelines = {
  "english": ["The response must be in English"],
  "clarity": ["The response must be clear, coherent, and concise"],
}

result = mlflow.evaluate(
    data=pd.DataFrame(examples),    # Your evaluation set
    # model=logged_model.model_uri, # If you have an MLFlow model. `retrieved_context` and `response` will be obtained from calling the model.
    model_type="databricks-agent",  # Enable Mosaic AI Agent Evaluation
    evaluator_config={
       "databricks-agent": {"global_guidelines": global_guidelines}
    }
)

# Review the evaluation results in the MLFLow UI (see console output), or access them in place:
display(result.tables['eval_results'])

代理评估输入和输出

输入

有关代理评估的预期输入的详细信息,包括字段名称和数据类型,请参阅 输入架构。 以下是一些字段:

  • 用户的查询(request): 代理的输入(用户的问题或查询)。 例如,“什么是 RAG?”。
  • 代理的响应(response): 代理生成的响应。 例如“检索增强生成是…”。
  • 预期响应(expected_response): (可选)真实(正确)的响应。
  • MLflow 跟踪(trace): (可选)代理的 MLflow 跟踪,代理评估从中提取中间输出(如检索的上下文或工具调用)。 或者,可以直接提供这些中间输出。
  • 准则 (guidelines): (可选) 模型输出应遵循的准则或命名准则列表。

输出

根据这些输入,代理评估生成两种类型的输出:

  1. 评估结果(每行): 对于作为输入提供的每一行,代理评估会生成相应的输出行,其中包含对代理的质量、成本和延迟的详细评估。
    • LLM 评委检查质量的不同方面,如正确性或基础性,提出是/否的分数,并编写该分数的理由。 有关详细信息,请参阅 代理评估(MLflow 2)如何评估质量、成本和延迟
    • LLM评委的评估组合在一起,生成一个总分数,指示该行是“通过”(是高质量)还是“失败”(有质量问题)。
      • 对于任何失败的行,将确定根本原因。 每个根本原因都对应于特定的 LLM 法官评估,使你能够使用法官的理由来识别潜在的修补程序。
    • 成本和延迟是从 MLflow 跟踪中提取的。 有关详细信息,请参阅 如何评估成本和延迟。
  2. 指标(聚合分数): 汇总所有输入行中代理的质量、成本和延迟的聚合分数。 其中包括指标,例如正确答案的百分比、平均令牌计数、平均延迟等。 有关详细信息,请参阅 如何评估 成本和延迟,以及如何 在 MLflow 运行级别聚合指标,以获取质量、成本和延迟

开发(脱机评估)和生产(联机监视)

代理评估旨在确保开发环境(脱机)和生产环境(联机)之间的一致性。 通过此设计,可以实现从开发到生产环境的平滑过渡,从而能够快速迭代、评估、部署和监控高质量的代理应用程序。

开发和生产的主要区别在于,在生产中,你没有真实标签,而在开发中,可以选择使用真实标签。 通过使用基本事实标签,代理评估可以计算其他质量指标。

开发(脱机)

在开发中,你的 requestsexpected_responses 来自一个评估集。 评估集是代理应能够准确处理的代表性输入的集合。 有关评估集的详细信息,请参阅评估集(MLflow 2)。

为了获取responsetrace,代理评估可以调用您的代理代码,为评估集中的每一行生成相应的输出。 或者,可以自行生成这些输出,并将其传递给代理评估。 有关详细信息,请参阅如何为评估运行提供输入

生产(在线)

有关生产环境中的监控信息,请参阅生产环境中的 GenAI 监控。 此 MLflow 3 功能与 MLflow 2 试验兼容。 若要在 MLflow 2 试验上启用监视,请使用 MLflow 3 SDK 进行安装 mlflow>=3.1

使用评估集建立质量基准

若要衡量开发中 AI 应用程序的质量(脱机),需要定义一个评估集,即一组具有代表性的问题和可选的实况答案。 如果应用程序涉及检索步骤(例如在 RAG 工作流中),则可以选择提供预期响应所基于的支持文档。

评估运行

有关如何运行评估的详细信息,请参阅运行评估并查看结果(MLflow 2)。 代理评估支持提供链输出的两个选项:

  • 可以在评估运行过程中运行应用程序。 应用程序为评估集中的每个输入生成结果。
  • 可以提供应用程序上一次运行的输出。

有关何时使用每个选项的详细信息和说明,请参阅向评估运行提供输入

获取关于生成 AI 应用程序质量的人工反馈

借助 Databricks 评审应用,可以轻松地从人工审阅者收集有关 AI 应用程序质量的反馈。 有关详细信息,请参阅 使用评审应用进行第一代 AI 应用(MLflow 2)的人工评审

代理评估的异地可用性

代理评估是一项 指定服务,它通过 Geos 系统在处理客户内容时进行数据驻留管理。 若要详细了解不同地理区域中 Agent Evaluation 的可用性,请参阅 Databricks 指定服务

定价

有关定价信息,请参阅 Mosaic AI 代理评估定价

为 LLM 判定提供支持的模型相关信息

  • 评估 GenAI 应用程序时,LLM 的评审可能会使用第三方服务,包括由 Microsoft 运营的 Azure OpenAI。
  • 对于 Azure OpenAI,Databricks 已选择退出“滥用监视”,因此不会通过 Azure OpenAI 存储任何提示或响应。
  • 对于欧盟 (EU) 工作区,LLM 判定使用托管在 EU 的模型。 所有其他区域使用托管在美国的模型。
  • 禁用 合作伙伴支持的 AI 功能 可防止 LLM 法官调用合作伙伴支持的模型。 你仍然可以通过提供自己的模型来使用 LLM 评估功能。
  • LLM 评审旨在帮助客户评估他们的 GenAI 代理/应用程序,并且不应使用 LLM 评审结果来训练、改进或微调 LLM。

示例笔记本

以下笔记本演示如何使用代理评估。

Mosaic AI 代理评估快速入门笔记本

获取笔记本

代理评估自定义指标、指南和域专家标签笔记本

获取笔记本