你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

代理跟踪概述

重要

本文中标记为(预览)的项目目前以公共预览版提供。 此预览版在没有服务级别协议的情况下提供,不建议将其用于生产工作负荷。 某些功能可能不受支持,或者可能具有受限功能。 有关详细信息,请参阅 Microsoft Azure 预览版的使用条款

注意

跟踪仅对提示智能体正式发布。 托管代理、工作流代理和外部代理目前均为预览版。

Microsoft Foundry 提供监视和跟踪 AI 代理的可观测性平台。 它在代理运行期间捕获关键详细信息,例如输入、输出、工具使用情况、重试、延迟和成本。 了解代理执行背后的原因对于故障排除和调试非常重要。 但是,由于多种原因,了解复杂的代理带来了挑战:

  • 生成响应所涉及的步骤可能很多,因此很难跟踪所有这些步骤。
  • 步骤序列可能因用户输入而异。
  • 每个阶段的输入/输出可能很长,值得进行更详细的检查。
  • 代理运行时的每个步骤也可能涉及嵌套。 例如,代理可能会调用一个工具,该工具使用另一个进程,然后调用另一个工具。 如果发现顶级代理运行的异常或不正确的输出,则很难确切地确定在执行中引入问题的位置。

跟踪结果可让你查看特定代理运行中涉及的每个基元的输入和输出,这些基元按调用顺序显示,从而轻松理解和调试 AI 代理的行为。

先决条件

若要使用端到端跟踪,需要:

注意

跟踪将遥测数据存储在 Azure Monitor Application Insights 中,可能根据数据量和保留设置产生费用。 有关定价详细信息,请参阅 Application Insights 定价

Foundry 中的 OpenTelemetry

OpenTelemetry (OTel) 提供用于收集和路由遥测数据的标准化协议。 Foundry 使用 OpenTelemetry 语义约定,以确保在受支持的工具和集成之间实现一致的跟踪。

跟踪关键概念

下面是入门前关键概念的简要概述:

关键概念 描述
跟踪 跟踪通过记录事件和状态变化(函数调用、值和系统事件)来捕获请求或工作流在应用程序中的历程。 请参阅 OpenTelemetry 跟踪
跨度 跨度是跟踪的基本构件,表示跟踪中的单个操作。 每个范围捕获开始和结束时间、属性,并且可以嵌套以显示分层关系,使你能够看到完整的调用堆栈和操作序列。
属性 属性是附加到跟踪和跨度的键值对,提供上下文元数据,如函数参数、返回值或自定义批注。 这些扩充跟踪数据,使其更具信息性,并可用于分析。
语义约定 OpenTelemetry 定义语义约定,以标准化跟踪数据属性的名称和格式,以便更轻松地跨工具和平台进行解释和分析。 若要了解详细信息,请参阅 OpenTelemetry 的语义约定
跟踪导出器 跟踪导出程序将跟踪数据发送到后端系统进行存储和分析。 在 Foundry 中,跟踪存储在 Azure Monitor Application Insights 中。 若要了解如何启用和查看跟踪,请参阅如何在 Microsoft Foundry 中设置跟踪

Foundry 中跟踪的工作原理

跟踪有助于回答“此响应来自何处?”和“哪个步骤引入了错误或延迟峰值?”

从较高层面讲,跟踪会捕获:

  • 用户输入和代理输出。
  • 工具用法,包括工具调用和结果。
  • 令牌消耗
  • 持续时间和延迟等时间信号。

为项目启用跟踪后,可以在 Foundry 门户和 Azure Monitor Application Insights 中检查跟踪。 有关分步设置和查看选项,请参阅 如何在 Microsoft Foundry 中设置跟踪

利用多代理可观测性扩展 OpenTelemetry

Microsoft与 Cisco Outshift 协作为多代理系统引入了新的语义约定,这些约定基于 OpenTelemetryW3C 跟踪上下文。 这些约定标准化了多代理者工作流程中的遥测过程,以便能够一致地记录关于质量、性能、安全性和成本的指标日志,其中包括工具调用和协作。

这些增强功能已集成到以下项中:

  • 铸造
  • Microsoft代理框架
  • LangChain
  • LangGraph
  • OpenAI 代理 SDK

若要了解详细信息,请参阅 跟踪集成

下表描述了多代理可观测性的语义约定。 跨度捕获离散操作,子跨度显示父范围中的嵌套操作,属性提供元数据,并在执行期间标记重大事件。

类型 上下文/父范围 名称/属性/事件 目的
跨度 执行任务 捕获任务计划和事件传播的过程,提供有关任务如何分解和分派的深刻见解。
子范围 invoke_agent 代理之间的互动 跟踪代理之间的通信。
子范围 invoke_agent agent.state.management 有效的上下文、短期或长期内存管理。
子范围 invoke_agent agent_planning 记录代理的内部规划步骤。
子范围 invoke_agent 代理编排 捕获智能体到智能体编排。
属性 invoke_agent 工具定义 描述工具的用途或配置。
属性 invoke_agent llm_spans 记录模型调用范围。
属性 execute_tool tool.call.arguments 记录在工具调用期间传递的参数。
属性 execute_tool tool.call.results 记录工具返回的结果。
事件 评估 (name, error.type, label) 启用对智能体性能和决策的结构化评估。

最佳做法

  • 使用一致的跨度属性:在所有代理和工具中应用相同的属性名称和格式,以简化查询和分析。
  • 关联评估运行 ID:将跟踪数据与评估运行进行匹配,以在统一界面中分析质量和性能。
  • 编辑敏感内容:在数据到达遥测之前,从提示、工具参数和跨度属性中删除或屏蔽个人数据、机密信息和凭据。

安全和隐私

跟踪可以捕获敏感信息(例如用户输入、模型输出以及工具参数和结果)。 使用以下做法来降低风险:

  • 不要在提示、工具参数或跨属性中存储机密、凭据或令牌。
  • 在遥测中显示个人数据之前,请对个人数据和其他敏感内容进行修订或最小化。
  • 将跟踪数据视为生产遥测数据,并应用用于日志和指标的相同访问控制和保留策略。

故障 排除

如果跟踪未出现在 Foundry 门户或 Application Insights 中:

  • 验证 Foundry 项目是否已连接到 Application Insights 资源。
  • 检查帐户是否具有查询遥测所需的权限。
  • 确保你的智能体代码包含必要的检测。 有关特定于框架的设置,请参阅 追踪集成

提示

在所有支持 Foundry 的区域中都提供跟踪功能。 跟踪数据的保留和采样遵循 Application Insights 的配置。 有关详细信息,请参阅 Azure Monitor Logs 中的 Data 保留和存档