MLflow Blog

Evaluating and Improving Agent Skills with MLflow

8.5内容质量
Evaluating and Improving Agent Skills with MLflow

TL;DR · AI 摘要

MLflow通过实验跟踪和自定义评估器系统解决AI代理技能漂移问题,实现模块化技能的版本控制与持续改进。

核心要点

  • 使用MLflow实验跟踪可量化技能改进效果,避免人工评估的主观性
  • 技能模块化需配合版本控制与自定义评估器实现持续优化
  • 退款技能示例显示:版本迭代可能引入新问题(如模糊图像检测失效)

结构提纲

按章节快速跳转。

  1. 阐述AI代理技能模块化趋势及评估挑战

  2. 解析技能作为可复用能力的标准化结构

  3. 揭示生产反馈导致的技能版本迭代风险

  4. ·MLflow解决方案

    通过实验跟踪、数据集和评估器实现技能量化改进

  5. 退款技能案例

    展示技能版本迭代对功能影响的实证分析

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 评估与改进AI代理技能
    • 技能定义
      • 可复用能力模块
    • 核心挑战
      • 技能漂移风险
    • MLflow方案
      • 实验跟踪
      • 自定义评估器
      • 版本控制

金句 / Highlights

值得收藏与分享的关键句。

#MLflow#AI代理#技能评估#实验跟踪#软件工程
打开原文

使用 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、验证收据、规划执行步骤或审查生成的代码。与其将所有指令嵌入到一个庞大的系统提示中,开发人员可以创建独立进化的专注技能。例如,我们可能定义一个可重用的退款技能,而不是围绕包含所有政策的一个大型提示构建客户支持代理。

code
---
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:

code
---
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:

code
---
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天后退款 | 拒绝 | | 错误商品送达 | 升级处理 | | 数字商品购买 | 遵循数字政策 | | 缺失收据 | 要求提供文件 |

与基准数据集不同,评估数据集会随着生产环境的演进而更新。每当用户发现失败案例时,应将其添加到数据集中,以防止未来出现回归问题。

评分器

  1. 正确性:基于输出

将技能的最终响应与预期结果(期望值/真实值)进行比较。仅查看答案,不检查追踪记录。

python
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}"
    )
  1. 合规性:基于规则(部分依赖追踪记录)

检查技能是否遵守了该场景的业务规则。它会读取预期结果以确定适用规则,并经常通过追踪记录确认规则是否被遵循。

  • 数字商品购买 → 响应必须为 FOLLOW_DIGITAL_POLICY
  • 缺失收据 → 响应必须为 REQUEST_DOCUMENTATION(不可盲目退款)
  1. 正确工具选择:基于追踪记录

读取执行追踪记录以确认预期工具按正确顺序运行,然后再生成响应。此评分器不评估最终答案,而是评估代理经历的中间步骤。由于追踪记录会记录每个操作跨度,评分器可以要求身份验证在退款决策之前完成:

python
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 函数实现的:

code
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 会自动在整个数据集上计算评估指标,使改进效果变得可衡量。

code
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 评估与可观测性:从开发到生产