什么是 Mosaic AI 代理评估?
重要
此功能目前以公共预览版提供。
本文概述了如何使用 Mosaic AI 代理评估。 代理评估可帮助开发人员评估代理 AI 应用程序(包括 RAG 应用程序和链)的质量、成本和延迟。 代理评估旨在识别质量问题并确定这些问题的根本原因。 代理评估的功能在 MLOps 生命周期的开发、暂存和生产阶段保持统一,所有评估指标和数据都记录到 MLflow 运行中。
代理评估将高级、支持研究的评估技术集成到与 lakehouse、MLflow 和其他 Databricks Data Intelligence Platform 组件集成的用户友好 SDK 和 UI 中。 这种专有技术与马赛克 AI 研究合作开发,提供了一种全面的方法来分析和增强代理性能。
代理 AI 应用程序很复杂,涉及许多不同的组件。 评估这些应用程序的性能并不像评估传统 ML 模型的性能那么简单。 用于评估质量的定性和定量指标本质上都更为复杂。 代理评估包括专有的 LLM 判定和代理指标来评估检索和请求质量以及延迟和令牌成本等整体性能指标。
如何使用代理评估?
以下代码演示了如何对以前生成的输出调用和测试代理评估。 它返回一个数据帧,其中包含 LLM 判定计算的评估分数,这些分数是代理评估的一部分。
可以将以下内容复制并粘贴到现有的 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.",
]
}
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
)
# Review the evaluation results in the MLFLow UI (see console output), or access them in place:
display(result.tables['eval_results'])
或者,可以在 Databricks 工作区中导入并运行以下笔记本:
Mosaic AI 代理评估示例笔记本
代理评估输入和输出
下图概述了代理评估接受的输入以及代理评估生成的相应输出。
输入
有关代理评估的预期输入的详细信息,包括字段名称和数据类型,请参阅 输入架构。 下面是一些字段:
- 用户的查询(
request
): 代理的输入(用户的问题或查询)。 例如,“什么是 RAG?”。 - 代理的响应(
response
): 代理生成的响应。 例如,“检索扩充生成为...”。 - 预期响应(
expected_response
): (可选)一个基本事实(正确)响应。 - MLflow 跟踪(
trace
): (可选)代理的 MLflow 跟踪,代理评估从中提取中间输出(如检索的上下文或工具调用)。 或者,可以直接提供这些中间输出。
Outputs
根据这些输入,代理评估生成两种类型的输出:
- 评估结果(每行): 对于作为输入提供的每一行,代理评估会生成相应的输出行,其中包含对代理的质量、成本和延迟的详细评估。
- 指标(聚合分数): 汇总所有输入行中代理的质量、成本和延迟的聚合分数。 其中包括指标,例如正确答案的百分比、平均令牌计数、平均延迟等。 有关详细信息,请参阅 如何评估 成本和延迟,以及如何 在 MLflow 运行级别聚合指标,以获取质量、成本和延迟。
开发(脱机评估)和生产(在线监视)
代理评估设计为在开发(脱机)和生产环境(联机)之间保持一致。 通过此设计,可以从开发顺利过渡到生产环境,从而快速循环访问、评估、部署和监视高质量的代理应用程序。
开发和生产的主要区别在于,在生产中,你没有地实标签,而在开发中,可以选择使用地实标签。 使用实数标签,代理评估可以计算其他质量指标。
开发(脱机)
在开发中,你requests
来自一个expected_responses
。 评估集是代理应能够准确处理的代表性输入的集合。 有关评估集的详细信息,请参阅 评估集。
若要获取和response
,trace
代理评估可以调用代理的代码,为评估集中的每一行生成这些输出。 或者,可以自行生成这些输出,并将其传递给代理评估。 有关详细信息,请参阅 如何为评估运行 提供输入。
生产(在线)
在生产环境中,代理评估的所有输入都来自生产日志。
如果使用马赛克 AI 代理框架部署 AI 应用程序,则可以将代理评估配置为从 代理增强的推理表 自动收集这些输入,并不断更新监视仪表板。 有关详细信息,请参阅 如何监视代理在生产流量上的质量。
如果在 Azure Databricks 外部部署代理,则可以将日志 ETL 部署到所需的 输入架构 ,并类似地配置监视仪表板。
使用评估集建立质量基准
若要衡量开发中 AI 应用程序的质量(脱机),需要定义一个评估集,即一组具有代表性的问题和可选的实况答案。 如果应用程序涉及检索步骤(例如在 RAG 工作流中),则可以选择提供预期响应所基于的支持文档。
评估运行
若要详细了解如何运行评估,请参阅如何运行评估并查看结果。 代理评估支持提供链输出的两个选项:
- 可以在评估运行过程中运行应用程序。 应用程序为评估集中的每个输入生成结果。
- 可以提供应用程序上一次运行的输出。
有关何时使用每个选项的详细信息和说明,请参阅如何向评估运行提供输入。
获取有关 GenAI 应用程序质量的人工反馈
借助 Databricks 评审应用,可以轻松地从人工审阅者收集有关 AI 应用程序质量的反馈。 有关详细信息,请参阅获取有关代理型应用程序质量的反馈。
助手功能的地区可用性
Mosaic AI Agent Evaluation 是一项指定服务,在处理客户内容时按照地区来管理数据驻留。 若要详细了解不同地理区域中 Agent Evaluation 的可用性,请参阅 Databricks 指定服务。
定价
有关定价信息,请参阅 Mosaic AI 代理评估定价。
有关为 LLM 判定提供支持的模型的信息
- LLM 判定可能会使用第三方服务来评估 GenAI 应用程序,包括由 Microsoft 运营的 Azure OpenAI。
- 对于 Azure OpenAI,Databricks 已选择退出“滥用监视”,因此不会通过 Azure OpenAI 存储任何提示或响应。
- 对于欧盟 (EU) 工作区,LLM 判定使用托管在 EU 的模型。 所有其他区域使用托管在美国的模型。
- 禁用 Azure AI 支持的 AI 辅助功能即会阻止 LLM 判定调用 Azure AI 支持的模型。
- 发送到 LLM 判定的数据不用于任何模型训练。
- LLM 判定旨在帮助客户评估其 RAG 应用程序,LLM 判定输出不应用于训练、改进或微调 LLM。