工具调用链路追踪:一次回答到底走了哪几步
2026/6/25 14:03:36 网站建设 项目流程

Agent 答错了,最让人抓狂的不是错,是你不知道它哪一步错了。一次回答背后可能调了三四个工具、查了知识库、又问了一遍模型,黑箱一团。我后来给每个 Agent 都加了链路追踪,把"这次回答走了哪几步"全记下来,排错效率直接翻倍。这篇讲我怎么追的。

为什么必须追链路

举个把我坑惨的例子。用户问"我上个月话费多少",Agent 回了个明显错的数。我盯着最终输出看半天看不出毛病。加了链路追踪后一看记录才发现:它该调"查账单"工具的,结果调成了"查套餐",参数还传错了月份。问题压根不在模型生成那步,在工具选择那步。没有链路,我能瞎猜一整天。

一条链路该记哪些字段

我每一步都落这几样,缺一不可:

  • 步骤序号 + 类型(模型推理 / 工具调用 / 知识检索)

  • 输入:这步拿到了什么

  • 输出:这步吐出了什么

  • 耗时:这步花了多久

  • 谁触发了下一步:模型决定调哪个工具、为什么

最后那条最值钱。Agent 的核心决策就是"下一步调谁",把模型的这个选择理由记下来,错在哪一眼就看出来。

一条真实链路长这样:

[1] 模型推理 输入:"上月话费多少" 决策:调用 query_bill 工具 [2] 工具调用 query_bill(month="2026-05") 耗时 420ms 输出:{amount:89} [3] 模型推理 输入:账单结果 输出:"您上月话费89元"

一目了然。要是第 2 步调成了 query_package,立刻就暴露了。

追踪要注意的坑

坑一:别把敏感信息明文记进链路。我一开始把用户手机号、账单明细原样落日志,事后想想后怕。后来对敏感字段做了脱敏(手机号中间打码),链路照样能看,隐私不外泄。

坑二:长输入要截断。知识检索那步召回的内容动辄几千字,全记下来日志爆炸还难看。我对每个字段设了长度上限,超了就截断加省略号,留个钩子能溯源就够。

坑三:耗时一定要记。有次用户反馈"答得慢",我靠每步耗时一眼定位到是某个外部工具调用卡了 3 秒,模型本身很快。没有分步耗时,你只知道"总共慢",不知道慢在哪。

一个小取舍

全量记录链路是有成本的,存储和性能都吃一点。我没给所有请求都开,只对"出错的"和"随机抽样 5%"的请求记完整链路,正常请求只记关键节点。全量留痕虽好,但没必要为了万分之一的排错需求拖慢所有人。

怎么实现的

我用的是一个拖拖拽拽就能配工作流、还自带测评的智能体平台,每个节点的输入输出和耗时它本身就有记录,我顺着扒出来拼成链路视图就行,没自己埋点。中间各步调的模型 API 走讯飞星辰 MaaS,现成接口,省了自建。

调试 Agent 的第一原则:先让它可观测,再谈优化。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询