系列:100 天系统学习 AI Agent 开发
当前阶段:LangChain 与 LangGraph 工程化
今日目标:Trace 把模型调用、工具调用、输入输出和错误链路记录下来,方便定位失败原因。

1. 用项目眼光看

今天的主题更偏工程化:Trace 把模型调用、工具调用、输入输出和错误链路记录下来,方便定位失败原因。 看起来没有写 Demo 那么刺激,但它决定 Agent 能不能持续变好。没有记录和评测,优化就只能靠猜。

今天也是阶段节点,文章里要多写一点复盘:前几天学到的东西有没有真的串起来,哪里还只是停留在概念层。

2. 设计取舍

  • 可观测:记录模型调用、工具调用、错误和耗时,失败时能回放。
  • 可评分:把好坏拆成指标,例如事实正确、工具选择、安全合规。
  • 可回归:每次改 prompt、工具或模型,都要用旧样本重新验证。

3. 小实验

今天的主任务是:为每次 Agent run 记录:用户问题、工具列表、每步输出、耗时、最终结果。

我会按这个节奏做:

  1. 把今天主题拆成至少 5 条可测试样本。
  2. 完成主题任务:为每次 Agent run 记录:用户问题、工具列表、每步输出、耗时、最终结果。
  3. 给每条样本写通过标准,不再只写“看起来还行”。

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,说明失败发生在哪个环节
  • 把下一篇需要的输入单独列出来
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐