你的 AI Agent 不需要更聪明,它需要具备幂等性

大多数生产环境中的 AI agent 失败并不是因为推理能力差,而是因为网络错误。

模型选择了正确的工具,填写了正确的细节。然后,它给客户扣了两次款。

这种情况之所以发生,是因为具备写操作能力的 agent 运行在不可靠的网络环境中。

  • 请求超时。
  • 连接中断。
  • 框架重试已经完成的步骤。

对于只读型 agent,重试是无代价的。但对于具备写操作能力的 agent,重试意味着第二次不可逆的操作。

解决方案就是幂等性 (idempotency)。

看看这个常见的失败场景:

  1. Agent 调用一个函数来发送发票。
  2. 服务端创建了发票。
  3. 在响应到达 agent 之前,连接中断了。
  4. Agent 检测到超时并进行重试。
  5. 现在,你有了两张发票。

更聪明的模型无法解决这个问题。甚至,一个更聪明的模型可能会因为更激进的重试机制而让情况变得更糟。

你可以向 Stripe 等支付系统学习。它们使用 Idempotency-Key。服务端会保存第一次请求的结果。如果客户端再次发送相同的 key,服务端会返回存储的结果,而不是再次执行该操作。

对于 AI agent,你必须从意图 (intent) 中推导出这个 key。

不要使用随机 ID。请使用工具名称及其稳定参数的哈希值 (hash)。

示例:

  • Tool: charge_customer
  • Params: {customer_id: 42, amount: 500}
  • Key: hash(tool + params)

如果 agent 重试完全相同的扣款操作,key 将保持不变。系统会识别出这一点并防止重复扣款。

需要注意一点:你的 key 的有效性取决于你对“单次操作”的定义。

  • 如果你在哈希中包含了时间戳,那么每次重试都会得到一个新的 key。你的保护机制就会失效。
  • 如果你在哈希中包含了由 LLM 生成的消息体,模型可能会改变其中一个词。这会产生一个新的 key 并导致重复操作。

始终基于稳定数据(如客户 ID 或发票 ID)来生成 key。排除任何模型可能会更改的内容。

不要再试图通过优化提示词 (prompts) 来提高 agent 的可靠性了。

可靠性在于让重复决策的成本降为零。如果你的 agent 执行了两次相同的操作,不应该发生任何错误。

Source: https://dev.to/gs_sanjana_3e822112e14f8/your-ai-agent-doesnt-need-to-be-smarter-it-needs-to-be-idempotent-2736

Optional learning community: https://t.me/GyaanSetuAi