智能体课程文档

AI 智能体可观测性和评估

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

AI 智能体可观测性和评估

🔎 什么是可观测性?

可观测性是指通过查看日志、指标和跟踪等外部信号来了解 AI 智能体内部发生的情况。对于 AI 智能体而言,这意味着跟踪动作、工具使用、模型调用和响应,以调试和改进智能体性能。

Observability dashboard

🔭 为什么智能体可观测性很重要

如果没有可观测性,AI 智能体就是“黑箱”。可观测性工具使智能体透明,让您能够

  • 了解成本和准确性之间的权衡
  • 测量延迟
  • 检测有害语言和提示注入
  • 监控用户反馈

换句话说,它让您的演示智能体为生产环境做好了准备!

🔨 可观测性工具

常用的 AI 智能体可观测性工具包括 LangfuseArize 等平台。这些工具有助于收集详细的跟踪并提供仪表板以实时监控指标,从而轻松检测问题并优化性能。

可观测性工具的功能和能力差异很大。有些工具是开源的,受益于庞大的社区,这些社区塑造了它们的路线图和广泛的集成。此外,某些工具专门针对 LLMOps 的特定方面——例如可观测性、评估或提示管理——而另一些工具旨在覆盖整个 LLMOps 工作流程。我们鼓励您探索不同选项的文档,以选择最适合您的解决方案。

许多智能体框架(例如 smolagents)使用 OpenTelemetry 标准向可观测性工具公开元数据。除此之外,可观测性工具还构建了自定义检测功能,以便在快速变化的 LLM 世界中提供更大的灵活性。您应该查阅您正在使用的工具的文档,以了解支持的功能。

🔬 跟踪和跨度

可观测性工具通常将智能体运行表示为跟踪和跨度。

  • 跟踪表示从开始到结束的完整智能体任务(例如处理用户查询)。
  • 跨度是跟踪中的独立步骤(例如调用语言模型或检索数据)。

Example of a smolagent trace in Langfuse

📊 要监控的关键指标

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

延迟:智能体的响应速度有多快?长时间的等待会严重影响用户体验。您应该通过跟踪智能体运行来测量任务和单个步骤的延迟。例如,如果一个智能体对所有模型调用的响应时间为 20 秒,则可以通过使用更快的模型或并行运行模型调用来加速。

成本:每次智能体运行的费用是多少?AI 智能体依赖于按令牌计费的 LLM 调用或外部 API。频繁的工具使用或多次提示会迅速增加成本。例如,如果一个智能体调用 LLM 五次以边际提高质量,您必须评估成本是否合理,或者是否可以减少调用次数或使用更便宜的模型。实时监控还可以帮助识别意外峰值(例如,导致 API 循环过多的错误)。

请求错误:智能体失败了多少请求?这可能包括 API 错误或失败的工具调用。为了使您的智能体在生产环境中对这些错误更具鲁棒性,您可以设置回退或重试。例如,如果 LLM 提供商 A 停机,则切换到 LLM 提供商 B 作为备份。

用户反馈:实施直接用户评估提供有价值的见解。这可以包括明确的评级(👍赞/👎踩,⭐1-5 星)或文本评论。持续的负面反馈应该提醒您,因为这表明智能体没有按预期工作。

隐式用户反馈:即使没有明确的评级,用户行为也提供间接反馈。这可能包括立即重新措辞问题、重复查询或点击重试按钮。例如,如果您发现用户重复问相同的问题,这表明智能体没有按预期工作。

准确性:智能体生成正确或理想输出的频率如何?准确性定义各不相同(例如,解决问题的正确性、信息检索准确性、用户满意度)。第一步是定义您的智能体的成功标准。您可以通过自动化检查、评估分数或任务完成标签来跟踪准确性。例如,将跟踪标记为“成功”或“失败”。

自动化评估指标:您还可以设置自动化评估。例如,您可以使用 LLM 来评估智能体的输出,例如它是否有用、准确或不准确。还有一些开源库可以帮助您评估智能体的不同方面。例如,用于 RAG 智能体的 RAGAS 或用于检测有害语言或提示注入的 LLM Guard

实际上,这些指标的组合能够最好地涵盖 AI 智能体的健康状况。在本章的 示例笔记本 中,我们将向您展示这些指标在实际示例中的样子,但首先,我们将了解典型的评估工作流程。

👍 评估 AI 智能体

可观测性为我们提供指标,但评估是分析数据(并执行测试)以确定 AI 智能体表现如何以及如何改进的过程。换句话说,一旦您有了这些跟踪和指标,您如何使用它们来判断智能体并做出决策?

定期评估很重要,因为 AI 智能体通常是非确定性的,并且会演变(通过更新或模型行为漂移)——如果没有评估,您就不会知道您的“智能智能体”是否真的做得很好,或者它是否已经退化。

AI 智能体的评估分为两类:在线评估离线评估。两者都很有价值,并且相互补充。我们通常从离线评估开始,因为这是部署任何智能体之前最必要的步骤。

🥷 离线评估

Dataset items in Langfuse

这涉及到在受控环境中评估智能体,通常使用测试数据集,而不是实时用户查询。您使用经过整理的数据集,其中您知道预期的输出或正确的行为是什么,然后在该数据集上运行您的智能体。

例如,如果您构建了一个数学文字问题智能体,您可能有一个包含已知答案的 100 个问题的 测试数据集。离线评估通常在开发期间完成(并且可以是 CI/CD 管道的一部分),以检查改进或防止退化。好处是它可重复,并且您可以获得清晰的准确性指标,因为您拥有真实情况。您还可以模拟用户查询,并根据理想答案测量智能体的响应,或者使用上述自动化指标。

离线评估的关键挑战是确保您的测试数据集全面且保持相关性——智能体可能在固定的测试集上表现良好,但在生产环境中遇到非常不同的查询。因此,您应该使用新的边缘案例和反映真实世界场景的示例来更新测试集。混合小型“冒烟测试”用例和大型评估集很有用:小型集用于快速检查,大型集用于更广泛的性能指标。

🔄 在线评估

这指的是在实时、真实世界环境中评估智能体,即在生产环境中的实际使用期间。在线评估涉及监控智能体在真实用户交互中的性能并持续分析结果。

例如,您可以跟踪实时流量的成功率、用户满意度分数或其他指标。在线评估的优势在于它捕获了您在实验室环境中可能无法预料的事情——您可以观察模型随时间的漂移(如果智能体的有效性随着输入模式的变化而降低)并捕获测试数据中没有的意外查询或情况。它提供了智能体在实际环境中的真实行为。

在线评估通常涉及收集隐式和显式用户反馈,如前所述,并可能运行影子测试或 A/B 测试(其中新版本的智能体并行运行以与旧版本进行比较)。挑战在于,为实时交互获得可靠的标签或分数可能很棘手——您可能依赖用户反馈或下游指标(例如用户是否点击了结果)。

🤝 两者结合

实际上,成功的 AI 智能体评估融合了在线离线方法。您可以定期运行离线基准测试以定量评估智能体在已定义任务上的表现,并持续监控实时使用情况以捕获基准测试遗漏的问题。例如,离线测试可以捕获代码生成智能体在已知问题集上的成功率是否正在提高,而在线监控可能会提醒您用户已经开始提出智能体难以处理的新类问题。两者结合可以提供更全面的情况。

事实上,许多团队采用了一种循环:离线评估 → 部署新智能体版本 → 监控在线指标并收集新的故障示例 → 将这些示例添加到离线测试集 → 迭代。通过这种方式,评估是持续且不断改进的。

🧑‍💻 让我们看看这在实践中如何运作

在下一节中,我们将看到如何使用可观测性工具来监控和评估我们的智能体的示例。

< > 在 GitHub 上更新