进入最后的 Phase 6——生产化收束。前 37 篇讲了怎么搭 LangChain 应用,这最后 5 篇讲怎么让它敢上线:可观测、评估、调试、部署。

这一篇讲 Phase 6 第一个——LangSmith Tracing。回到第 01 篇立的第三根轴「可观测治理」:LLM 调用是黑盒,没有可观测性就永远停在 demo。Tracing 是可观测的基础。

为什么 LLM 应用特别需要 Tracing

传统软件,看代码大致能推断运行时发生了什么。但 LLM 应用不行——模型调用是黑盒:同样的输入可能给不同输出,模型为什么这么答,你看代码看不出来。

更要命的是,LLM 应用是多步的:一个 Agent 跑起来,可能调了好几次模型、好几次工具、做了好几次判断。最后答错了,到底是哪一步错的?没有 trace,你只能瞎猜。

LLM 应用:黑盒且多步

Tracing 解决的就是这个:把每一次 run 的每一步都记录下来,让你看清 Agent 内部到底发生了什么

Trace:分层调用树

LangSmith 的 trace,是一次 run 的分层调用树。一个 Agent run,拆成:

  • 顶层:这次完整的 run
  • 下层:每次模型调用、每次工具调用、每次检索
  • 更下层:每次调用的输入、输出、耗时、token、错误

Trace 是分层调用树

你能在 LangSmith 里展开这棵树,看到「模型第 2 次调用时,传入了什么消息、输出了什么、花了多少 token、用了多久」。哪一步有问题,一目了然。

Trace 记录什么

一个 trace 节点,典型记录:

信息 作用
输入 这一步收到了什么
输出 这一步产出了什么
耗时 这一步花了多久(找慢的环节)
token 数 这一步消耗多少(算成本)
错误 这一步有没有报错

Trace 节点记录的信息

这些信息合起来,让你能回答:答错了是哪步错、慢是哪步慢、贵是哪步贵。没有 trace,这些问题都答不了。

LangChain 应用自动可追踪

一个重要的事实:用 LangChain(Runnable/LCEL/LangGraph)写的应用,trace 是自动的

因为所有组件都是 Runnable(第 03 篇),Runnable 协议层内置了 trace 钩子。你配好 LangSmith,跑应用时每一步自动上报——不用手动埋点。

LangChain 应用自动可追踪

这是 Runnable 协议的又一个红利:第 03 篇说「统一协议带来可组合、可替换、能力一致」——「可追踪」就是能力一致的一环。不用 LangChain(纯手写调 API)的应用,要自己埋点才能有 trace;用 LangChain 的,免费就有。

Trace 怎么用:排查问题

实际用 trace,最常见是排查「Agent 答错了」。流程:

  1. 在 LangSmith 找到这次 run 的 trace
  2. 展开调用树,看每一步
  3. 定位是哪一步出了问题(模型判断错?工具返回错?检索没查到?)
  4. 针对那一步优化

用 trace 排查问题

这个流程对 Agent 这种「多步、不确定」的程序,价值巨大。没有 trace,Agent 答错了你只能干瞪眼;有 trace,能精确知道哪步错、为什么错。

收束:Tracing 是 LLM 应用的眼睛

这一篇讲了 LangSmith Tracing:

  • LLM 应用是黑盒且多步,特别需要 trace
  • Trace 是分层调用树,记录每步的输入输出耗时 token 错误
  • LangChain 应用自动可追踪(Runnable 协议红利)
  • 用来排查「答错是哪步错、慢是哪步、贵是哪步」

下一篇讲 评估:怎么用数据集量化 Agent/RAG 的质量,而不是凭感觉。


关于十三Tech

我是十三,All in AI Agent 方向的架构师,专注 AI 工程实践。我相信 AI 是程序员的最佳搭档。

如果你想跟完这套「图解 LangChain」,欢迎关注公众号 「十三Tech」。全系列 42 篇,会按认识基础、LangGraph 状态机、Agent 与 middleware、RAG 检索、Tools/MCP/记忆、生产化收束这条线更新。

十三Tech公众号二维码