Evaluating and Improving Agent Skills with MLflow

TL;DR · AI 摘要
MLflow通过实验跟踪和自定义评估器系统解决AI代理技能漂移问题,实现模块化技能的版本控制与持续改进。
核心要点
- 使用MLflow实验跟踪可量化技能改进效果,避免人工评估的主观性
- 技能模块化需配合版本控制与自定义评估器实现持续优化
- 退款技能示例显示:版本迭代可能引入新问题(如模糊图像检测失效)
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 评估与改进AI代理技能
- 技能定义
- 可复用能力模块
- 核心挑战
- 技能漂移风险
- MLflow方案
- 实验跟踪
- 自定义评估器
- 版本控制
金句 / Highlights
值得收藏与分享的关键句。
技能模块化使开发更高效但引入评估难题:人工检查难以发现细微退化
MLflow实验跟踪使技能改进可量化,支持版本对比与回归检测
退款技能V2增加PDF支持却导致模糊图像检测失效,凸显评估必要性
使用 MLflow 评估和改进代理技能 | MLflow
使用 MLflow 评估和改进代理技能
2026年8月2日
·
8分钟阅读
Andres David Blandon
Databricks 高级交付工程师
如何构建可衡量、可测试并持续改进的人工智能代理能力。
代理正变得越来越擅长通过结合推理、工具、记忆和结构化工作流程来解决复杂任务。在 LangGraph、OpenAI Agents SDK、Claude Code、CrewAI、Cortex、OpenClaw 和 Hermes 等框架中,一个共同的模式已经出现:代理由可重用的技能构建而成。这些技能封装了特定能力,例如检索信息、生成 SQL、验证发票、规划多步骤任务或与 API 交互,使代理更易于开发和维护。但这种模块化方法引入了一个重要问题:如何确定技能是否真的在改进?
许多团队仍然通过运行几个提示并检查响应是否“看起来不错”来手动评估技能,但这种方法难以复现、无法扩展,并且可能忽略细微的回归。相反,技能应被视为软件组件:进行版本控制、测试、测量并持续改进。在本文中,我们将探讨 MLflow 如何通过使用追踪、数据集、自定义评估器和实验跟踪来实现基于评估的代理技能开发。
什么是代理技能?â
技能是代理可以调用的可重用能力,用于完成任务的一部分,例如从向量数据库检索文档、生成 SQL 查询、调用外部 API、验证收据、规划执行步骤或审查生成的代码。与其将所有指令嵌入到一个庞大的系统提示中,开发人员可以创建独立进化的专注技能。例如,我们可能定义一个可重用的退款技能,而不是围绕包含所有政策的一个大型提示构建客户支持代理。
---
name
:
refund
-
evaluation
description
:
Use this skill to evaluate whether a customer is eligible for a refund according to the applicable refund policy.
---
## Responsibilities
-
Validate purchase date
-
Verify order status
-
Apply refund policy
-
Escalate edge cases
-
Explain decisions clearly此技能现在可以在多个代理中重复使用,同时保持独立可测试性。
问题:技能会随时间漂移â
技能很少保持静态,随着生产反馈的到达,开发人员会持续修改它们。
版本 1:
---
name
:
refund
-
evaluation
description
:
Use this skill to evaluate whether a customer is eligible for a refund according to the applicable refund policy.
---
Validate receipts for refund.版本 2:
---
name
:
refund
-
evaluation
description
:
Use this skill to evaluate whether a customer is eligible for a refund according to the applicable refund policy.
---
-
Ignore duplicate uploads
-
Accept PDF receipts
-
Reject blurry images
-
Handle foreign currencies更新后的指令看起来更好,但外观可能具有误导性。重复检测可能有所改进,但模糊收据检测可能变得不那么可靠,或者由于技能现在执行更多推理,延迟可能增加。没有结构化评估,这些退化通常会在用户报告之前被忽视。
为什么仅评估最终答案是不够的â
传统大型语言模型(LLM)评估主要关注最终答案是否正确,但针对代理技能的评估,过程同样重要。退款代理可能在跳过身份验证的情况下给出正确的退款,或检索技能可能在返回正确答案的同时进行不必要的工具调用,增加延迟和成本。
技能评估应衡量行为,而不仅仅是输出结果。这正是追踪记录(traces)变得关键的地方。追踪记录会捕获代理的每一步操作,使得可以验证技能是否选择了正确的工具、按预期顺序调用API、遵循了业务政策、生成了高效的执行计划、完成了必要的验证步骤,并在适当情况下引用了检索到的证据。
这些行为指标对技能质量的洞察远比答案准确性更丰富。
构建评估数据集
每个技能都应有一个专用的评估数据集,代表现实场景。
对于我们的退款技能:
| 用户请求 | 预期结果 | |----------------------|----------------| | 5天后退款 | 批准 | | 45天后退款 | 拒绝 | | 错误商品送达 | 升级处理 | | 数字商品购买 | 遵循数字政策 | | 缺失收据 | 要求提供文件 |
与基准数据集不同,评估数据集会随着生产环境的演进而更新。每当用户发现失败案例时,应将其添加到数据集中,以防止未来出现回归问题。
评分器
- 正确性:基于输出
将技能的最终响应与预期结果(期望值/真实值)进行比较。仅查看答案,不检查追踪记录。
from mlflow.entities import Feedback
from mlflow.genai import scorer
@scorer
def correctness(outputs, expectations) -> Feedback:
"""最终决策与数据集的预期决策(真实值)匹配。"""
decision = outputs.get("decision")
expected = expectations.get("expected_decision")
return Feedback(
value=decision == expected,
rationale=f"decision={decision} vs expected={expected}"
)- 合规性:基于规则(部分依赖追踪记录)
检查技能是否遵守了该场景的业务规则。它会读取预期结果以确定适用规则,并经常通过追踪记录确认规则是否被遵循。
- 数字商品购买 → 响应必须为 FOLLOW_DIGITAL_POLICY
- 缺失收据 → 响应必须为 REQUEST_DOCUMENTATION(不可盲目退款)
- 正确工具选择:基于追踪记录
读取执行追踪记录以确认预期工具按正确顺序运行,然后再生成响应。此评分器不评估最终答案,而是评估代理经历的中间步骤。由于追踪记录会记录每个操作跨度,评分器可以要求身份验证在退款决策之前完成:
from mlflow.entities import Feedback, Trace
from mlflow.genai import scorer
@scorer
def correct_tool_selection(trace: Trace) -> Feedback:
"""verify_identity 必须在 decide_and_respond 之前运行。"""
verify = trace.search_spans(name="verify_identity")
decide = trace.search_spans(name="decide_and_respond")
ok = bool(verify and decide and verify[0].start_time_ns < decide[0].start_time_ns)
return Feedback(
value=ok,
rationale="verified before the decision" if ok else "verification missing"
)现在每次评估运行都会检查是否遵循了工作流程,而不仅仅是答案是否正确。这一模式同样适用于其他行为:API调用顺序、引用完整性、规划质量、成本效率以及失败后的重试行为。
使用 MLflow 运行技能评估
predict_fn 可以包装任何代理实现,无论使用何种框架。它的任务仅仅是针对单个评估示例执行技能,并以结构化格式返回结果。例如,如果你的退款技能是作为 Python 函数实现的:
def
run_agent
(
customer_message
,
order_id
=
None
)
:
result
=
refund_agent
.
run
(
message
=
customer_message
,
order_id
=
order_id
,
)
return
{
"response"
:
result
.
response
,
"decision"
:
result
.
decision
,
"tool_calls"
:
result
.
tool_calls
,
}一旦数据集就绪,评估技能变得简单直接。你不再需要手动检查数十次对话,MLflow 会自动在整个数据集上计算评估指标,使改进效果变得可衡量。
import
mlflow
results
=
mlflow
.
genai
.
evaluate
(
data
=
refund_dataset
,
predict_fn
=
run_agent
,
scorers
=
[
correctness
,
policy_compliance
,
correct_tool_selection
]
)使用追踪分析失败原因
评估告诉你“某事失败了”,而追踪则告诉你“为什么会失败”。
打开追踪记录会显示:
用户请求 → 搜索订单 → 生成响应
注意到什么缺失了吗?工作流程跳过了“验证客户身份”步骤,这意味着技能说明从未明确要求在访问订单历史之前进行身份验证。在更新技能要求以访问订单数据前必须进行身份验证后,追踪记录正确地包含了缺失的验证步骤。
重新运行评估后得到:
对技能说明进行小幅修改显著提升了代理行为,正确工具选择评分从 43% 提升至 98%。
为什么选择 MLflow 进行技能评估
评估技能需要的不仅仅是单一基准指标。它需要一个端到端的工作流程,能够捕捉执行过程、衡量行为、跟踪实验并支持持续改进。
MLflow 将这些能力整合到一个平台中:
- 追踪记录技能的执行方式。
- 评估通过内置和自定义评分器衡量输出和行为。
- 实验跟踪记录每次运行以实现可重复性和比较。
- 数据集通过代表性场景支持回归测试。
这些能力共同构建了一个以评估驱动的开发流程,使每次技能更改都可衡量、可重复,并有数据支持。随着可复用技能成为现代 AI 代理的基本构建模块,系统性地评估和改进技能变得越来越重要。团队不再需要简单判断代理“是否似乎有效”,而是可以识别哪些技能失败、理解原因、比较版本、检测回归并用客观数据验证改进。通过结合追踪、数据集、自定义评估器和实验跟踪,MLflow 帮助团队将技能视为可衡量、可版本化并持续改进的组件,从而打造更可靠、更易于维护且更值得信赖的 AI 代理。
如果觉得这有帮助,请在 GitHub 上给我们点个 ⭐。
相关阅读
- 使用 MLflow 测试和优化 Claude 代码技能
- 使用代码助手和 MLflow 技能加速 LLM 代理部署
- 使用 MLflow 构建 AI 评估与可观测性:从开发到生产