Mosaic AI 代理评估 (MLflow 2)

重要

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

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

如何使用代理评估?

以下代码演示了如何对以前生成的输出调用和测试代理评估。 它返回一个数据帧,其中包含 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)的人工评审

Mosaic AI 代理评估的地域可用性

Mosaic AI 代理评估是一项指定服务,在处理客户内容时按照地区来管理数据驻留。 若要详细了解不同地理区域中 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 代理评估。

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

获取笔记本

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

获取笔记本