生产级Agent需要全链路追踪、严格的工具调用边界设计(JSON Schema验证)、幂等性保障,以及断点续跑能力。网络失败、重试策略、循环上限都是标配。
前三篇分别覆盖了论点、成本和安全。这一篇涵盖所有将 demo 与生产系统区分开来的东西。没有一样是激动人心的。但所有这些正是有些团队能睡安稳觉的原因。
追踪一切。Langfuse、LangSmith 或 OpenTelemetry;选一个并坚持用下去。当(不是如果)某个 workflow 在生产环境出现异常时,traces 是调试和对着黑盒发呆之间的区别。
像对待软件一样测试,因为本来就是软件。单元测试、集成测试、CI。不过也要接受一个残酷的事实:永远无法对模型行为达到完全覆盖。所以关键路径需要验证循环,其余的靠用户反馈循环。
LLM 不是计算器。强迫它们通过工具来做算术,对输入输出使用严格的 JSON schema。在每个边界层做校验。
处处为失败做设计:
让 workflow 可以恢复。持久化执行引擎和 checkpointing 意味着一个崩溃的 40 步运行可以从第 31 步恢复,而不是从头开始。每个工具调用也应该是幂等的,这样 retry 不会重复扣费。
Run agent step ──► failed? ──yes──► resume from checkpoint ──► retry idempotent tool
│ │
no └──► retries are safe because every call is idempotent
▼
Next step ──► log + trace + meter cost
像 SRE 一样 rollout,而不是像发布员一样。受控 rollout、金丝雀部署、版本化 prompt、功能开关,每个变更都可以一键回滚。模型更新会悄无声息地改变行为。你希望是通过监控和告警先于客户发现这个问题的人。
疯狂计量费用。每个层级都设成本限制:每次对话、每个用户、每个租户、每个 SaaS 账号。一个有 bug 的 retry 循环如果没有预算限制,云账单就会变成公司内部的新闻。
保持模型可切换。提供商宕机和涨价是常态。在 LLM 调用上加一层抽象层,把这些从事故变成配置变更。
有一件事要停止做:不再把 harness 当作事后想法。Harness(schema、限制、retry、锁、密钥)才是产品。模型只是其中的一个组件。
对照这份清单审核你当前的 setup,找出缺失的那一行。没 tracing?每个租户没有成本预算?prompt 变更没有回滚计划?这周先修最可怕的缺口。每一个的成本都比它能防止的事故要低。
下一期最后一篇:第五部分《人在回路但不把人烧干》。因为总得有人点批准。