ai-agents-for-beginners

生产中的 AI 代理:可观测性与评估

生产中的 AI 代理

随着 AI 代理从实验原型发展到实际应用,理解其行为、监控其性能并系统地评估其输出的能力变得尤为重要。

学习目标

完成本课后,您将了解/掌握:

目标是让您具备将“黑盒”代理转变为透明、可管理且可靠系统的知识。

注意: 部署安全可信的 AI 代理非常重要。也请查看构建可信 AI 代理课程。

跟踪与跨度

可观测性工具如 LangfuseMicrosoft Foundry 通常将代理执行表示为跟踪和跨度。

Langfuse 中的跟踪树

没有可观测性,AI 代理就像“黑盒子”——其内部状态和推理过程不透明,难以诊断问题或优化性能。有了可观测性,代理变成了“玻璃盒子”,提供了透明度,这对建立信任和确保按预期运行至关重要。

为什么可观测性在生产环境中至关重要

将 AI 代理转入生产环境会带来一系列新的挑战和需求。可观测性不再是“锦上添花”,而是一项关键能力:

关键指标跟踪

为监控和理解代理行为,应跟踪一系列指标和信号。虽然具体指标可能因代理目的而异,但某些指标是普遍重要的。

以下是常见的可观测性工具监控指标:

延迟: 代理响应的速度如何?长时间等待会严重影响用户体验。您应通过跟踪代理运行测量任务及各步骤的延迟。例如,所有模型调用共耗时 20 秒的代理可以通过使用更快模型或并行调用模型来加速。

成本: 每次代理运行的费用是多少?AI 代理依赖按令牌计费的 LLM 调用或外部 API。频繁使用工具或多次提示可迅速增加成本。例如,若代理为了微小质量提升调用了 LLM 五次,您需要评估成本是否合理,是否可以减少调用次数或选用更便宜的模型。实时监控还可帮助发现异常峰值(如造成过多 API 调用的缺陷)。

请求错误: 代理失败的请求有多少?这包括 API 错误或工具调用失败。为使代理在生产中更健壮,您可以设置回退或重试策略。例如,当 LLM 提供商 A 挂掉时,切换到提供商 B 作为备份。

用户反馈: 收集用户直接评价提供宝贵洞察。包括明确的评分(👍点赞/👎差评,⭐1-5 星)或文本评论。持续的负面反馈应引起警示,表明代理无法按预期工作。

隐式用户反馈: 用户行为即使没有明确评分也提供间接反馈。例如,立即改写问题、重复查询或点击重试按钮。如果您发现用户反复提出相同问题,这往往意味着代理未正常工作。

准确率: 代理生成正确或理想输出的频率如何?准确率定义因场景而异(如问题解决正确率、信息检索准确度、用户满意度)。第一步是明确代理的成功标准。您可以通过自动检测、评分或任务完成标签来跟踪准确率。例如,将跟踪标记为“成功”或“失败”。

自动评估指标: 也可以设置自动评估。例如,使用 LLM 对代理输出进行评分,判断其是否有帮助、准确等。还有一些开源库支持对代理多个方面评分,如针对检索增强生成代理的 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"):
    # 代理执行会被自动跟踪
    pass

本章节的示例笔记本将演示如何给 MAF 代理添加监控。

手动创建跨度: 虽然监控库提供了良好基础,但有时需要更详细或定制的信息。您可以手动创建跨度以加入自定义应用逻辑。更重要的是,可以给自动或手动创建的跨度添加自定义属性(即标签或元数据),这些属性可包含业务特定数据、中间计算结果或调试分析所需的任何上下文,如 user_idsession_idmodel_version

使用 Langfuse Python SDK 手动创建跟踪和跨度的示例:

from langfuse import get_client
 
langfuse = get_client()
 
span = langfuse.start_span(name="my-span")
 
span.end()

代理评估

可观测性给我们指标,评估则是分析这些数据(及执行测试)以判定 AI 代理表现优劣及改进方向。换句话说,获取跟踪和指标后,如何用它们判断代理并作出决策?

定期评估很重要,因为 AI 代理通常是非确定性的,且可能随时间(通过更新或模型行为漂移)变化——没有评估,就无法知道“智能代理”是否真的做得好,或是否出现回退。

AI 代理评估分为两类:在线评估离线评估。两者均有价值且互为补充。我们通常从离线评估开始,这是部署前的最低要求步骤。

离线评估

Langfuse 中的数据集项

离线评估指在受控环境中使用测试数据集(非实时用户查询)评估代理。您使用已知期望输出或正确行为的精选数据集,并让代理运行这些数据。

例如,若您构建了一个数学文字题代理,可能有一个含 100 道题且答案已知的 测试数据集。离线评估多在开发期间完成,也可纳入 CI/CD 流水线,检查改进或防止回退。其优势是可重复,且因有标准答案而能获取清晰准确率指标。您也可模拟用户查询,用自动指标如前所述衡量代理反应与理想答案的差异。

离线评估的主要挑战是确保测试集全面且持续相关——代理可能在固定测试集表现良好,但生产环境遇到截然不同的查询。因此,应不断更新测试集,加入反映真实场景的新边缘案例和示例。混合使用小型“冒烟测试”用例和较大评估集最为有效:小集快速检测,大集提供广泛性能指标。

在线评估

可观测性指标概览

在线评估指在真实运行环境,即生产中实际使用时,对代理表现的实时监控和分析。

例如,您可能跟踪成功率、用户满意度分数或其他实时流量指标。在线评估优势在于捕捉实验室无法预见的情况——可观察模型随时间漂移(代理效能因输入模式变化下降)并抓住测试数据中未涵盖的意外查询和情况。它提供代理在现实环境中的真实表现。

在线评估通常包括收集隐式与显式用户反馈,如前所述,也可能运行影子测试或 A/B 测试(新代理版本与旧版本并行运行进行对比)。挑战在于为实时交互获得可靠标签或评分较为困难——可能需依赖用户反馈或下游指标(如用户是否点击结果)。

两者结合

在线与离线评估并非相互排斥,而是高度互补。在线监控获得的见解(如代理在哪些新查询类型上表现差)可用于丰富和改进离线测试集。相反,离线测试表现良好的代理可以更放心地部署并监控在线表现。

事实上许多团队采用循环模式:

先做离线评估 -> 部署 -> 在线监控 -> 收集新失败案例 -> 添加入离线数据集 -> 优化代理 -> 重复

常见问题

在部署 AI 代理到生产时,您可能会遇到各种挑战。以下是一些常见问题及潜在解决方案:

问题 潜在解决方案
AI 代理任务执行不一致 - 优化给 AI 代理的提示,确保目标明确。
- 识别是否可以将任务拆分为子任务并由多个代理处理。
AI 代理进入连续循环 - 明确终止条件,确保代理知道何时停止流程。
- 对于复杂需要推理和规划的任务,使用专门针对推理的大模型。
AI 代理工具调用表现不佳 - 在代理系统外测试并验证工具输出。
- 优化工具的参数、提示和命名。
多代理系统表现不稳定 - 优化给每个代理的提示,确保它们具体且彼此区分。
- 构建使用“路由”或控制代理的层级系统,确定哪个代理负责处理。

许多此类问题通过启用可观测性能更有效识别。前述跟踪和指标帮助精确定位代理流程中的问题,提高调试和优化效率。

成本管理

下面是一些管理将 AI 代理部署到生产环境成本的策略:

使用更小的模型: 小型语言模型(SLM)在某些代理用例中表现良好,并且将大幅降低成本。如前所述,构建一个评估系统来确定和比较性能与更大模型的差异,是了解 SLM 在您的用例中表现如何的最佳方式。考虑将 SLM 用于意图分类或参数提取等简单任务,同时将更大模型保留用于复杂推理。

使用路由器模型: 一个类似的策略是使用多样化的模型和尺寸。您可以使用 LLM/SLM 或无服务器函数,根据复杂性路由请求到最合适的模型。这也有助于降低成本,同时确保在正确的任务上有良好表现。例如,将简单查询路由到更小、更快的模型,仅在复杂推理任务中使用昂贵的大型模型。

缓存响应: 识别常见请求和任务,并在它们通过代理系统之前提供响应,是减少类似请求数量的好方法。您甚至可以实现一个流程,利用更基础的 AI 模型来识别请求与缓存请求的相似度。这个策略可以显著降低常见问答或常见工作流的成本。

让我们看看这在实践中的运作方式

本节的示例笔记本中,我们将看到如何使用可观测性工具监控和评估我们的代理的示例。

关于生产环境中的 AI 代理还有更多问题吗?

加入Microsoft Foundry Discord,与其他学习者交流,参加答疑时间,获取您的 AI 代理相关问题的解答。

上一课

元认知设计模式

下一课

代理协议


免责声明: 本文件由 AI 翻译服务 Co-op Translator 翻译完成。尽管我们力求准确,但请注意,自动翻译可能包含错误或不准确之处。原始语言版文件应视为权威来源。对于重要信息,建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。