重要
Databricks 建议使用 MLflow 3 来评估和监视 GenAI 应用。 本页介绍 MLflow 2 代理评估。
- 有关 MLflow 3 上的评估和监视简介,请参阅 评估和监视 AI 代理。
- 有关迁移到 MLflow 3 的信息,请参阅 从代理评估迁移到 MLflow 3。
- 有关本主题的 MLflow 3 信息,请参阅 评估和监视 AI 代理。
本文概述了如何使用基于 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): (可选) 模型输出应遵循的准则或命名准则列表。
输出
根据这些输入,代理评估生成两种类型的输出:
-
评估结果(每行): 对于作为输入提供的每一行,代理评估会生成相应的输出行,其中包含对代理的质量、成本和延迟的详细评估。
- LLM 评委检查质量的不同方面,如正确性或基础性,提出是/否的分数,并编写该分数的理由。 有关详细信息,请参阅 代理评估(MLflow 2)如何评估质量、成本和延迟。
- LLM评委的评估组合在一起,生成一个总分数,指示该行是“通过”(是高质量)还是“失败”(有质量问题)。
- 对于任何失败的行,将确定根本原因。 每个根本原因都对应于特定的 LLM 法官评估,使你能够使用法官的理由来识别潜在的修补程序。
- 成本和延迟是从 MLflow 跟踪中提取的。 有关详细信息,请参阅 如何评估成本和延迟。
- 指标(聚合分数): 汇总所有输入行中代理的质量、成本和延迟的聚合分数。 其中包括指标,例如正确答案的百分比、平均令牌计数、平均延迟等。 有关详细信息,请参阅 如何评估 成本和延迟,以及如何 在 MLflow 运行级别聚合指标,以获取质量、成本和延迟。
开发(脱机评估)和生产(联机监视)
代理评估旨在确保开发环境(脱机)和生产环境(联机)之间的一致性。 通过此设计,可以实现从开发到生产环境的平滑过渡,从而能够快速迭代、评估、部署和监控高质量的代理应用程序。
开发和生产的主要区别在于,在生产中,你没有真实标签,而在开发中,可以选择使用真实标签。 通过使用基本事实标签,代理评估可以计算其他质量指标。
开发(脱机)
在开发中,你的 requests 和 expected_responses 来自一个评估集。 评估集是代理应能够准确处理的代表性输入的集合。 有关评估集的详细信息,请参阅评估集(MLflow 2)。
为了获取response和trace,代理评估可以调用您的代理代码,为评估集中的每一行生成相应的输出。 或者,可以自行生成这些输出,并将其传递给代理评估。 有关详细信息,请参阅如何为评估运行提供输入。
生产(在线)
有关生产环境中的监控信息,请参阅生产环境中的 GenAI 监控。 此 MLflow 3 功能与 MLflow 2 试验兼容。 若要在 MLflow 2 试验上启用监视,请使用 MLflow 3 SDK 进行安装 mlflow>=3.1。
使用评估集建立质量基准
若要衡量开发中 AI 应用程序的质量(脱机),需要定义一个评估集,即一组具有代表性的问题和可选的实况答案。 如果应用程序涉及检索步骤(例如在 RAG 工作流中),则可以选择提供预期响应所基于的支持文档。
- 有关评估集的详细信息,包括指标依赖项和最佳做法,请参阅评估集(MLflow 2)。
- 有关所需的架构,请参阅代理评估输入架构(MLflow 2)。
- 有关如何综合生成高质量评估集的信息,请参阅合成评估集。
评估运行
有关如何运行评估的详细信息,请参阅运行评估并查看结果(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 代理评估。