什么是 Mosaic AI 代理人评估(旧版)?

重要

本页介绍<0.22 与 MLflow <2.x 的代理评估。 Databricks 建议使用与代理评估 >1.0集成的 MLflow 3。 代理评估 SDK 方法现在通过 mlflow SDK 公开。

有关本主题的信息,请参阅 Evaluate & Monitor

本文概述了如何使用 Mosaic AI 代理评估。 代理评估可帮助开发人员评估代理 AI 应用程序(包括 RAG 应用程序和链)的质量、成本和延迟。 代理评估旨在识别质量问题并确定这些问题的根本原因。 代理评估的功能在 MLOps 生命周期的开发、暂存和生产阶段保持统一,所有评估指标和数据都记录到 MLflow 运行中。

代理评测将先进的、基于研究的评测技术集成至一个用户友好的SDK和UI中,该系统与您的lakehouse、MLflow和其他Databricks Data Intelligence Platform组件实现集成。 这种专有技术与马赛克 AI 研究合作开发,提供了一种全面的方法来分析和增强代理性能。

显示评估的 LLMOps 关系图

代理 AI 应用程序很复杂,涉及许多不同的组件。 评估这些应用程序的性能并不像评估传统 ML 模型的性能那么简单。 用于评估质量的定性和定量指标本质上都更为复杂。 代理评估包括专有的 LLM 判定和代理指标来评估检索和请求质量以及延迟和令牌成本等整体性能指标。

如何使用代理评估?

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

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

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

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

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

开发(脱机)

agent_eval_overview_dev

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

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

生产(在线)

agent_eval_overview_prod

在生产环境中,代理评估的所有输入都来自生产日志。

如果使用马赛克 AI 代理框架部署 AI 应用程序,则可以将代理评估配置为从 监视器部署的代理 自动收集这些输入,并不断更新监视表。 有关详细信息,请参阅使用 Agent Framework 部署的监视应用(旧版)。

如果在 Azure Databricks 外部部署代理,还可以使用代理监视。 请参阅在 Azure Databricks 外部部署的监视应用(旧版)。

使用评估集建立质量基准

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

评估运行

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

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

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

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

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

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

Mosaic AI 代理评估是一项指定服务,在处理客户内容时按照地区来管理数据驻留。 若要详细了解不同地理区域中 Agent Evaluation 的可用性,请参阅 Databricks 指定服务

定价

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

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

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

示例笔记本

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

马赛克 AI 代理评估快速入门笔记本

获取笔记本

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

获取笔记本