Skip to content

链路追踪

当一次应用、工作流或知识库调用出现结果错误、响应缓慢、Token 消耗异常或执行失败时,仅查看最终结果通常无法判断问题发生在哪一步。链路追踪会记录一次执行中的调用关系、输入输出、耗时、Token 和状态,帮助你从整条执行过程定位到具体调用。

本页将帮助你完成以下任务:

  • 找到一次具体执行对应的 Trace;
  • 读懂 Trace、Span 和 Span 树;
  • 排查执行失败、结果错误、响应缓慢和 Token 消耗过高;
  • 修复问题后验证结果;
  • 安全地查看和分享链路数据。

一、先判断应该查看哪里

应用日志、链路追踪和统计分析关注的范围不同:

你要解决的问题建议入口
某位用户反馈某次回答不正确先查应用日志,定位用户、会话或消息
想知道模型、知识检索、工具或工作流中的哪一步有问题链路追踪
想查看一次执行各调用步骤的输入、输出、耗时和 Token链路追踪
想判断错误或性能问题是否普遍发生统计分析
想观察一段时间内的调用量、错误量和 Token 趋势统计分析

推荐排查顺序:

应用日志定位目标请求 → 链路追踪分析单次执行 → 统计分析判断影响范围

应用日志与统计分析的具体用法,分别参见日志与分析统计分析

二、核心概念

2.1 Trace:一次完整执行

Trace 是一次端到端执行的观测记录。例如:

  • 用户在应用中发送一次消息;
  • 试运行一次工作流;
  • 发起一次知识库检索;
  • 单独调用一次模型。

每条 Trace 都有唯一的 Trace ID,用于准确识别这一次执行。链路列表中的服务名称、入口类型、Token、运行时长、状态和时间,都是这条 Trace 的整体信息。

2.2 Span:执行中的一次操作

Span 是 Trace 中记录的一次具体操作,例如工作流执行、提示词处理、模型调用或知识检索。每个 Span 都有自己的 Span ID、类型、状态、耗时、输入和输出。

多个 Span 按调用关系组成 Span 树

  • Root Span 是整条 Trace 的入口;
  • 子 Span 表示入口执行过程中继续发生的调用;
  • 父 Span 的耗时通常包含其子 Span 的运行时间;
  • 一个工作流画布节点可能产生一个或多个 Span。

因此,Span 不等于工作流画布上的业务节点。链路列表虽然以“工作流(8 个节点)”等形式展示数量,但这里表示本次 Trace 记录的 Span 数,不一定等于画布上的节点数。

2.3 三种 ID 的区别

标识含义用途
Trace ID一次完整执行的唯一标识搜索并定位整条链路
Span ID一次具体操作的唯一标识定位模型调用、检索或其他具体步骤
Root Span ID入口 Span 的标识确认整条链路的起点

向其他人员提交问题时,优先提供 Trace ID、问题发生时间和服务名称;需要定位到具体调用时,再补充 Span ID。

三、进入链路追踪

在左侧菜单中进入 应用观测 → 链路追踪。工作流试运行、应用调试等执行完成后,Trace 会立即出现在链路列表中,不需要等待数据同步。

工作流试运行结果

工作流试运行页面会显示整体耗时和 Token,但不会直接展示 Trace ID。进入链路追踪后,可以根据服务名称、执行时间、耗时和 Token 找到对应记录。

四、查找目标 Trace

页面顶部提供服务、Span 类型、时间范围、Trace ID 和状态筛选。设置条件后点击 立即查询,点击 重置条件可恢复默认。

链路追踪列表页

4.1 已知 Trace ID

将完整 Trace ID 粘贴到 Trace ID 输入框并立即查询。这是最准确的定位方式,不受服务重名或同一时间存在多次调用的影响。

API 调用返回了 trace_id 时,应优先使用该值查询。

4.2 不知道 Trace ID

按以下顺序缩小范围:

  1. 服务 中选择应用、工作流或知识库;
  2. 时间范围缩小到问题发生时间;
  3. 根据问题表现选择正常或异常状态;
  4. 结合列表中的 Token、运行时长和时间确认目标记录。

如果刚完成执行却没有找到记录,先检查当前工作空间、服务、时间范围、Span 类型和状态条件,再点击列表右上角 刷新。Trace 写入不存在等待延迟,不需要反复等待同步。

4.3 Span 类型怎样筛选

Span 类型按 Trace 的入口 Span 类型筛选,而不是搜索 Trace 内部是否包含某类子 Span。

例如,选择“模型调用”后,列表只显示入口类型为模型调用的 Trace。一个入口类型为工作流的 Trace,即使其内部包含模型调用 Span,也不会出现在结果中。

按模型调用筛选 Trace

因此:

  • 查完整工作流执行时选择“工作流”;
  • 查独立模型调用时选择“模型调用”;
  • 查独立知识检索时选择“检索”;
  • 不确定入口类型时保持“全部”。

4.4 链路列表怎么看

含义
Trace ID本次执行的唯一标识,可复制
服务名称产生本次执行的应用、工作流或知识库
Span 类型入口类型及本次 Trace 的 Span 数
Token 数量本次执行汇总的 Token
运行时长本次执行从开始到结束的整体耗时
状态正常或异常
时间本次执行的开始时间
详情打开 Trace 详情

服务类型和入口类型不是同一个概念。例如,一个应用内部采用工作流编排时,可以显示“服务类型:应用、入口类型:工作流”。

五、读懂 Trace 详情

点击链路列表中的 详情。页面分为顶部概览、左侧 Span 树、中间运行数据与元数据、右侧 Span 属性四部分。

工作流 Trace 详情

5.1 顶部概览

顶部展示整条 Trace 的:

  • 服务名称和状态;
  • 总耗时和总 Token;
  • Trace ID 与 Root Span ID;
  • Span 数;
  • 服务类型与入口类型;
  • 开始时间。

这里适合确认“当前打开的是不是目标执行”,以及快速判断整体是否异常、是否耗时或 Token 偏高。

5.2 Span 树

Span 树按父子关系展示本次执行记录的调用步骤。每个 Span 通常显示名称、类型、耗时,涉及模型调用时还会显示 Token。

点击任一 Span,中间和右侧区域会切换为该 Span 的数据。排查时应沿树逐层展开,而不是只查看 Root Span。

页面中可能出现工作流、Agent、图执行、lambda 函数、提示词、模型调用、检索等类型。类型用于说明当前记录的操作性质;实际可见类型取决于本次执行包含的能力。

5.3 运行数据

运行数据展示当前 Span 已记录的:

  • 输入:该操作实际收到的数据;
  • 输出:该操作实际产生的数据;
  • 错误:异常 Span 的错误信息。

输入和输出支持 文本 / JSON 两种视图。数据结构较深时,优先使用 JSON 视图核对字段层级、变量值和数组内容。

5.4 元数据

元数据用于查看当前 Span 的业务标签和系统标签,例如应用、工作流、服务、运行环境和错误信息。

元数据不是工作流的输入变量。它主要用于确认调用属于哪个业务对象、关联其他日志,以及读取系统记录的错误信息。

Span 元数据

5.5 Span 属性

右侧展示当前 Span 的状态、Span ID、类型、原始名称、耗时、开始时间和 Token。

涉及模型调用时,通常可以看到:

  • 输入 Token;
  • 输出 Token;
  • 总 Token。

非模型调用或在模型调用前就失败的 Span,Token 可能为 0。

六、排查执行失败

6.1 定位真正的错误来源

一项底层调用失败后,上层工作流或 Agent 也可能显示异常。因此,红色 Span 不一定都是根因。

建议按以下顺序排查:

  1. 在列表中将状态筛选为 异常
  2. 打开目标 Trace;
  3. 在 Span 树中找到异常分支;
  4. 沿父子关系找到最具体、且包含有效错误信息的 Span;
  5. 查看该 Span 的错误、输入和元数据;
  6. 判断上层异常是根因还是错误传播结果。

6.2 知识检索失败示例

下图中的 Trace 只有一个“检索”Span,错误为“模型配置请求失败”,Token 为 0。

知识检索异常 Trace

这表示请求在检索依赖的模型配置阶段已经失败,没有进入后续正常检索过程,也没有产生模型 Token。此时应检查知识库依赖的模型配置,而不是先调整用户问题或检索阈值。

6.3 根据错误类型返回配置位置

Trace 中发现的问题优先检查
模型配置或模型调用失败模型管理、应用或工作流中的模型配置
知识检索失败或无结果知识库、Embedding/Rerank 模型、检索配置
工具调用参数错误工具配置及上游变量映射
接口调用失败接口资源的地址、鉴权、参数和调试结果
工作流条件走错选择器条件及参与判断的变量
代码执行失败代码节点输入、返回结构和错误信息
Agent 重复调用工具提示词、工具描述、最大步数和编排逻辑

七、排查结果不正确

“状态正常”只表示执行完成,不代表业务结果一定正确。结果不符合预期时,应找出数据从哪一步开始偏离。

建议沿执行方向依次核对:

  1. Root Span 的输入是否与用户实际输入一致;
  2. 工作流变量是否正确传入;
  3. 条件分支是否符合预期;
  4. 知识检索是否返回了相关内容;
  5. 工具或接口是否收到正确参数;
  6. 模型调用的输入中是否包含所需上下文;
  7. 最终输出是否正确引用上游结果。

如果某个 Span 的输入已经错误,继续向上游查找;如果输入正确但输出错误,则重点检查当前 Span 的配置。

八、排查响应缓慢

打开目标 Trace 后,先看顶部总耗时,再沿 Span 树寻找耗时集中的具体调用。

8.1 不要把父子耗时相加

父 Span 的耗时通常包含子 Span。截图中的工作流、图执行和模型调用都显示约 5.27 秒,这不代表三段调用合计约 15.81 秒,而是同一段执行在不同层级的记录。

正确方法是:

  1. 从 Root Span 开始找到耗时最长的子分支;
  2. 继续展开,直到找到最具体的模型、检索、工具或代码调用;
  3. 结合输入数据量和调用配置判断原因。

8.2 常见耗时来源

耗时集中位置常见原因
模型调用模型响应慢、输入上下文过长、输出较长
知识检索文档量大、向量化或重排模型较慢
工具/接口外部服务响应慢、网络异常、重试
循环或 Agent调用次数过多、停止条件不清晰
代码节点处理数据量大或代码逻辑耗时

九、排查 Token 消耗过高

Trace 顶部和 Root Span 展示整次执行的汇总 Token;具体模型调用 Span 展示该调用的 Token。

9.1 不要重复累计

上层 Span 可能汇总下层模型调用的 Token。不要把父 Span 和子 Span 的 Token 全部相加,否则会重复计算。

  • 查看整次执行用量:以 Trace 顶部或 Root Span 为准;
  • 分析具体模型调用:选择“模型调用”Span,查看其输入、输出和 Token。

9.2 常见原因

  • 系统提示词或上下文过长;
  • 知识库一次返回的内容过多;
  • 对话历史保留过长;
  • 模型输出过长;
  • Agent 重复调用模型或工具;
  • 循环次数超出预期;
  • 同一问题被重复处理。

分析时同时观察输入 Token、输出 Token 和模型调用次数,避免只根据总 Token 判断。

十、修复后验证

定位问题后,不要只修改配置就结束。建议完成以下闭环:

  1. 记录原 Trace ID、输入、错误、耗时和 Token;
  2. 返回对应模块修改配置;
  3. 使用相同或等价输入重新执行;
  4. 打开新 Trace;
  5. 对比出错 Span、最终输出、整体耗时和 Token;
  6. 确认问题已经解决且没有引入新的异常。

一次结果正常只能证明当前测试通过。涉及正式业务时,还应结合统计分析观察一段时间内的错误和性能变化。

十一、历史 Trace 与删除行为

Trace 是已经产生的历史观测记录。删除原应用或工作流后,已有 Trace 不会随之消失,仍可在链路列表中查看服务名称、执行时间、状态和详情。

删除应用后保留的 Trace

删除业务对象不等于删除其中已经记录的输入输出。清理应用或工作流前,仍需按照数据管理要求处理历史观测数据。

十二、数据安全与权限

Trace 的运行数据可能包含:

  • 用户输入和模型输出;
  • 提示词和工作流变量;
  • 知识库召回内容;
  • 工具或接口参数;
  • 用户、会话、应用和工作空间标识;
  • 医疗业务数据或患者敏感信息。

查看链路追踪及其操作权限由管理员在「角色管理」中分配。使用时应遵守以下要求:

  • 仅向排障所需人员提供访问权限;
  • 分享截图或复制运行数据前先检查并脱敏;
  • 不在公开文档、外部工单或无权限群组中粘贴完整运行数据;
  • 不传播 API Key、Token、请求头或其他凭证;
  • 排障时只使用解决问题所需的最少数据;
  • 删除应用或工作流后,不要假设其历史 Trace 已被删除。

AI 应用开发平台 - 面向医疗场景的 AI 应用创新引擎