Day 030|LangSmith Trace:调 Agent 不能靠猜
系列:100 天系统学习 AI Agent 开发
当前阶段:LangChain 与 LangGraph 工程化
今日目标:Trace 把模型调用、工具调用、输入输出和错误链路记录下来,方便定位失败原因。
1. 用项目眼光看
今天的主题更偏工程化:Trace 把模型调用、工具调用、输入输出和错误链路记录下来,方便定位失败原因。 看起来没有写 Demo 那么刺激,但它决定 Agent 能不能持续变好。没有记录和评测,优化就只能靠猜。
今天也是阶段节点,文章里要多写一点复盘:前几天学到的东西有没有真的串起来,哪里还只是停留在概念层。
2. 设计取舍
- 可观测:记录模型调用、工具调用、错误和耗时,失败时能回放。
- 可评分:把好坏拆成指标,例如事实正确、工具选择、安全合规。
- 可回归:每次改 prompt、工具或模型,都要用旧样本重新验证。
3. 小实验
今天的主任务是:为每次 Agent run 记录:用户问题、工具列表、每步输出、耗时、最终结果。
我会按这个节奏做:
- 把今天主题拆成至少 5 条可测试样本。
- 完成主题任务:为每次 Agent run 记录:用户问题、工具列表、每步输出、耗时、最终结果。
- 给每条样本写通过标准,不再只写“看起来还行”。
4. 验收样例
今天的产物可以是一份评分标准,后面每次改 Agent 都能复用:
| 维度 | 1 分 | 3 分 | 5 分 |
|---|---|---|---|
| 任务完成度 | 没有解决核心问题 | 部分完成但缺步骤 | 完整完成且可验证 |
| 工具使用 | 未调用或误调用 | 调用正确但缺少校验 | 调用正确并记录证据 |
| 风险控制 | 忽略风险 | 有提醒但不可执行 | 有拦截、追问或确认机制 |
5. 复盘记录
今天我把「LangSmith Trace」的判断标准写得具体一点:发布前要能拿着文章反问三遍。
- 这篇有没有一个真实产物?有,目标是 一份评分 rubric、trace 字段表或回归样本。
- 这篇有没有一个真实风险?有,重点是没有 trace 的 Agent 就像没有日志的后端服务,出了问题只能凭感觉。
- 这篇有没有一个真实读者收益?有,读者应该能做到:读者看完能给自己的 Agent 设计第一批测试样本。
面试官会追问:Trace 里最少要记录什么?
一次 run 至少要串起 user_request、model_call、tool_call、retrieval、approval 与 final_output,并用 trace_id 和 span_id 表示父子关系。模型版本、Prompt 版本、工具版本、Token、延迟、错误码也要进入 span 属性,否则无法比较两次运行。
记录越多不代表越好。原始 Prompt、文档片段和工具结果可能含密钥与隐私,进入观测平台前要分级、脱敏和设置保留期。生产 trace 默认记录摘要与哈希,需要排障时再在授权范围内查看原文。
面试时我会用一个失败 trace 讲故事:先看到最终答案错,再定位到 reranker 把正确证据排到了第八位,而不是笼统地说“模型产生了幻觉”。
今日检查清单
- 给今天的产物命名,后面文章能继续引用:一份评分 rubric、trace 字段表或回归样本
- 给今天的坑找一个反例或失败输入
- 给今天的文章补一个读者能直接照做的步骤
- 写出 5 条能复跑的评测样本
- 给「LangSmith Trace」定义至少 3 个评分维度
- 保存一条失败 trace,说明失败发生在哪个环节
- 把下一篇需要的输入单独列出来
更多推荐


所有评论(0)