随着 AI 代理从实验原型转向实际应用,理解其行为、监控其性能以及系统性地评估其输出变得尤为重要。
完成本课后,您将了解/掌握:
目标是让您掌握将“黑盒”代理转变为透明、可管理且可靠系统的知识。
注意: 部署安全且可信赖的 AI 代理非常重要。请同时查看 构建可信赖的 AI 代理 课程。
可观测性工具如 Langfuse 或 Microsoft Foundry 通常将代理运行表示为跟踪和跨度。
没有可观测性,AI 代理就像一个“黑盒子”——其内部状态和推理过程不透明,使诊断问题或优化性能变得困难。有了可观测性,代理变成“玻璃盒子”,提供了关键的透明度,有助于建立信任并确保其按预期运行。
将 AI 代理推向生产环境时,会面临一系列新的挑战和需求。可观测性不再是“锦上添花”,而是一项关键能力:
为了监控和理解代理行为,应跟踪多种指标和信号。具体指标会因代理目的有所不同,但有些是通用的重要指标。
以下是可观测性工具常监控的主要指标:
延迟:代理响应的速度有多快?长时间等待会影响用户体验。您应通过跟踪代理运行,测量任务整体及每个步骤的响应时间。举例来说,若代理完成所有模型调用需 20 秒,可以通过使用更快模型或并行调用模型来加速。
成本:每次代理运行的费用是多少?AI 代理依赖按 token 计费的 LLM 调用或外部 API,频繁使用工具或多次提示会迅速增加成本。例如,若代理为了微小的质量提升调用 LLM 五次,必须评估该成本是否合理,或是否能减少调用次数或采用更廉价的模型。实时监控还能帮助识别意外峰值(如错误引发的过度 API 循环)。
请求错误:代理失败的请求数是多少?包括 API 错误或工具调用失败。为增强代理在生产中的健壮性,您可以设置备用方案或重试机制。例如,当 LLM 提供者 A 宕机时,切换为备用提供者 B。
用户反馈:实施直接用户评价提供宝贵见解,包括明确的评分(👍赞/👎踩,⭐1-5 星)或文本评论。持续的负面反馈应引起警惕,说明代理未按预期工作。
隐式用户反馈:即使无明确评分,用户行为也能间接反馈,如立即改写问题、重复提问或点击重试按钮。例如,用户反复询问同一问题表明代理表现不佳。
准确率:代理产生正确或期望输出的频率如何?准确率定义多样(如解决问题的准确度、信息检索准确率、用户满意度)。首要步骤是定义代理的成功标准。可通过自动检查、评估得分或任务完成标签来跟踪准确率。例如,将跟踪标记为“成功”或“失败”。
自动评估指标:也可以设置自动评估。例如,使用 LLM 对代理输出评分,比如是否有用、准确等。还有多个开源库帮助评分代理不同方面。例如适用于检索增强生成(RAG)代理的 RAGAS 或检测有害语言和提示注入的 LLM Guard。
实际上,结合上述多项指标能全面覆盖 AI 代理的健康状况。本章节的 示例笔记本 将展示这些指标在实际案例中的表现,但首先,我们学习典型的评估流程。
为收集跟踪数据,需为代码添加监测。目标是让代理代码发出可被可观测平台捕获、处理和可视化的跟踪和指标。
OpenTelemetry (OTel): OpenTelemetry 已成为 LLM 可观测性的行业标准,提供生成、收集和导出遥测数据的 API、SDK 和工具集。
许多监测库包装现有代理框架,方便将 OpenTelemetry 跨度导出至可观测工具。Microsoft Agent Framework 原生集成 OpenTelemetry。下面展示了给 MAF 代理添加监测的示例:
from agent_framework.observability import get_tracer, get_meter
tracer = get_tracer()
meter = get_meter()
with tracer.start_as_current_span("agent_run"):
# Agent execution is traced automatically
pass
本章节的 示例笔记本 将演示如何为您的 MAF 代理添加监测。
手动创建跨度: 虽然监测库提供了良好基础,但常有需求采集更细致或自定义信息。您可以手动创建跨度以加入自定义应用逻辑。更重要的是,能够为自动或手动创建的跨度添加自定义属性(即标签或元数据),这些属性可包括业务特定数据、中间计算结果或调试与分析有用的上下文信息,如 user_id、session_id 或 model_version。
使用 Langfuse Python SDK 手动创建跟踪和跨度的示例如下:
from langfuse import get_client
langfuse = get_client()
span = langfuse.start_span(name="my-span")
span.end()
可观测性提供了指标,而评估是分析这些数据(并执行测试)以判定 AI 代理表现好坏及其改进方向的过程。换言之,拥有跟踪和指标后,如何利用它们评价代理并做出决策?
定期评估很重要,因为 AI 代理通常是非确定性的,且会随着更新或模型行为漂移而演变——没有评估,您无法知道“智能代理”是否真正胜任其职责,或是否出现性能退化。
AI 代理的评估分两类:在线评估和离线评估。两者都很重要,且相辅相成。通常从离线评估开始,这是部署任一代理的最低必要步骤。

这涉及在受控环境中评估代理,通常使用测试数据集,而非实时用户查询。您利用已知期望输出或正确行为的策划数据集来运行代理。
举例,若您构建了数学应用题代理,可能有包含 100 道已知答案的 测试数据集。离线评估常在开发阶段进行(并可作为 CI/CD 流程的一部分),用以检验改进或防止回退。其优点是可重复,且由于拥有真实答案,能获得清晰的准确率指标。您还可模拟用户查询,比较代理响应与理想答案,或使用上述自动指标。
离线评估的关键挑战是确保您的测试数据集全面且持续相关——代理在固定测试集上表现良好不代表其能应对生产中截然不同的查询。因此,应不断更新测试集,加入反映真实场景的新边缘用例和示例。结合小规模“冒烟测试”和大型评估集比较有用:小规模用于快速检查,大规模覆盖更广的性能指标。

指在真实生产环境中评估代理,即实际使用期间进行。在线评估涉及持续监控代理在真实用户交互中的表现并分析结果。
例如,您可能跟踪成功率、用户满意度评分或其他实时指标。在线评估的优势在于能捕捉实验室环境中难以预见的情况——您能观察模型随时间漂移(代理效果因输入模式变化而下降)并捕获意外查询或不在测试数据中的场景。它能真实反映代理在实际环境中的行为。
在线评估通常需收集隐式及显式用户反馈,如前所述,还有可能运行影子测试或 A/B 测试(并行运行新版本代理以与旧版比较)。挑战在于获取可靠的实时交互标签或评分较难——您可能依赖用户反馈或后续指标(如用户是否点击结果)。
在线和离线评估并非互斥,而极具互补性。在线监控获得的洞察(如代理表现不佳的新用户查询类型)可用于丰富和改进离线测试数据集。反之,离线测试表现良好的代理更可安心上线并进行在线监测。
实际上,许多团队采用循环流程:
离线评估 -> 部署 -> 在线监测 -> 收集失败案例 -> 增补离线数据集 -> 优化代理 -> 重复。
部署 AI 代理到生产时,您可能遭遇各种挑战。以下是一些常见问题及潜在解决方案:
| 问题 | 可能的解决方案 |
|---|---|
| AI 代理任务执行不稳定 | - 优化给 AI 代理的提示,明确目标。 - 确定将任务拆分为子任务并由多代理协同处理的场景。 |
| AI 代理陷入无限循环 | - 确保设定明确的终止条件,使代理知道何时停止流程。 - 对于需推理和规划的复杂任务,采用专注推理的大型模型。 |
| AI 代理调用工具效果不佳 | - 在代理系统外测试并验证工具输出。 - 优化工具参数、提示词和命名。 |
| 多代理系统表现不稳定 | - 为每个代理优化提示,确保相互具体且有区分。 - 构建分层系统,使用“路由”或控制代理确定正确代理。 |
很多问题通过可观测性更易被发现。前文提及的跟踪和指标帮助精准定位代理工作流程中出现问题的环节,使调试和优化更高效。
以下是一些管理 AI 代理生产部署成本的策略:
使用更小的模型: 小型语言模型(SLM)在某些自主用例中表现良好,并且能够显著降低成本。如前所述,建立一个评估系统来确定并比较其与大型模型的性能,是了解SLM在您的用例中表现如何的最佳方式。考虑将SLM用于意图分类或参数提取等较简单的任务,同时将大型模型保留用于复杂推理。
使用路由模型: 类似的策略是使用多样化的模型和尺寸。您可以使用LLM/SLM或无服务器函数,根据复杂性路由请求到最合适的模型。这也有助于降低成本,同时确保在正确的任务上实现性能。例如,将简单查询路由到较小且更快的模型,仅在复杂推理任务中使用昂贵的大型模型。
缓存响应: 识别常见请求和任务,并在其通过您的自主系统之前提供响应,是减少类似请求数量的好方法。您甚至可以实施一个流程,使用更基础的AI模型来识别请求与缓存请求的相似度。此策略可显著降低常见问题或常规工作流的成本。
在本节的示例笔记本中,我们将看到如何使用可观测性工具来监控和评估我们的代理。
加入Microsoft Foundry Discord,与其他学习者交流,参加答疑时间并获得您的AI代理问题的解答。
免责声明: 本文件由 AI 翻译服务 Co-op Translator 翻译完成。尽管我们力求准确,但请注意,自动翻译可能包含错误或不准确之处。原始语言版文件应视为权威来源。对于重要信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。