返回思考列表

Agent 的“幽灵”:从 Demo 到生产环境的距离

Twitter 上每天都有令人惊叹的 AI Agent 演示:全自动写代码、全自动做市场调研、全自动订机票。看起来,通用人工智能(AGI)似乎已经触手可及。

但在我们实际的工程落地中,这些 Demo 往往也是“见光死”。一旦脱离了精心挑选的测试用例(Cherry-picked cases),进入真实、脏乱的生产环境,Agent 就会表现出各种“幽灵”般的行为。

无限循环的幽灵

最常见的问题是死循环。Agent 可能会陷入一种自我纠结的状态:

  • Agent: "我需要查找 X 的价格。"
  • Tool: "未找到 X,请确认拼写。"
  • Agent: "好的,我尝试查找 X 的价格..."
  • Tool: "未找到 X..."

如果不加干预,这种循环会一直消耗 Token 直到触发配额限制。在生产环境中,我们需要设计严格的状态机(State Machine)来约束 Agent 的行为,强制它在尝试 N 次失败后降级或寻求人工介入。

概率性的工具调用

传统的软件工程是确定性的,而 LLM 驱动的工具调用(Function Calling)是概率性的。即使你定义了完美的 JSON Schema,模型仍有可能在 5% 的情况下输出错误的参数类型。

这意味着,我们的后端接口不能假设输入总是合法的。我们需要构建一个强大的中间件层(Middleware),负责校验、清洗甚至自动修复 LLM 产生的参数,充当确定性系统与概率性模型之间的缓冲。

可观测性(Observability)缺失

当 Agent 任务失败时,Debug 是一场噩梦。是因为 Prompt 写得不好?还是检索回来的上下文有误?或者是模型本身的幻觉?

构建 Agent 系统,90% 的工作量其实不在于写 Prompt,而在于构建一套全链路追踪系统(Tracing System)。我们需要记录每一步的思考(Reasoning)、每一个工具的输入输出、以及消耗的时间和 Token。没有这套黑匣子,优化 Agent 就如同盲人摸象。

结语

Agent 不是魔法。它依然需要遵循软件工程的基本规律。从 Demo 到生产环境,中间隔着的是无数个边界情况(Edge Cases)和容错设计。让我们少一点 Hype,多一点 Engineering。