第 19 章:LangSmith 调试:追踪一次 AI 调用发生了什么

7 阅读2分钟

第 19 章:LangSmith 调试:追踪一次 AI 调用发生了什么

本章目标

这一章解决调试问题。AI 应用不能只看最终答案,还要看中间发生了什么。

为什么需要 LangSmith

普通接口调试看请求和响应就够了。AI 应用还要看:

  • 使用了哪个模型
  • Prompt 是什么
  • 检索到了哪些文档
  • 工具是否被调用
  • 工具参数是什么
  • 每一步耗时多少
  • Token 消耗多少
  • 哪一步导致结果变差

LangSmith 的价值就是把这些过程可视化。

开启 tracing

环境变量:

LANGSMITH_TRACING=true
LANGSMITH_API_KEY=your_langsmith_api_key
LANGSMITH_PROJECT=ai-kb-agent

开启后,LangChain 相关调用可以被记录到 LangSmith 项目中。

调试一次 RAG

一次知识库问答至少要观察:

用户问题
改写后的问题
检索到的 chunks
最终 Prompt
模型输出
引用来源
耗时
Token 成本

如果答案错误,不要直接改 Prompt。先判断:

  • 检索结果对不对
  • 上下文是否包含答案
  • Prompt 是否允许模型编造
  • 模型是否忽略了引用
  • 用户问题是否模糊

本地日志补充

即使用 LangSmith,也建议保留业务日志:

console.log({
  event: "rag_request",
  question,
  rewrittenQuestion,
  sources: results.map((item) => item.record.metadata.source),
  scores: results.map((item) => item.score),
  model: process.env.CHAT_MODEL,
  createdAt: new Date().toISOString()
});

生产环境要换成结构化日志系统,不要长期依赖 console.log

评估集

准备一个 evals/rag-cases.json

[
  {
    "question": "报销超过 5000 元要谁审批?",
    "expectedKeywords": ["部门负责人", "审批"],
    "expectedSource": "报销制度.md"
  }
]

每次修改切分、Prompt、模型或向量库后,跑一遍评估集。

实战任务

完成:

  • 配置 LangSmith tracing
  • 跑一次普通 Chat
  • 跑一次工具 Agent
  • 跑一次 RAG
  • 对比三种调用链路
  • 准备 10 条评估问题

常见坑

不要只凭肉眼感觉优化 AI 应用。要保存测试问题和结果。

不要把敏感数据随意发送到第三方调试平台。企业项目要先确认合规要求。

不要忽略 Token 成本。调试阶段看起来便宜,规模上来后成本会放大。

本章小结

LangSmith 帮我们看清 AI 应用内部链路。下一章会补齐权限、限流、成本控制和日志。