响应丢失时,你的 AI Agent 会导致重复扣款

如果你的 AI agent 调用工具进行扣款,而网络丢失了响应,你的 agent 就会出现严重的故障。它会在不知情的情况下对客户进行重复扣款。

资金已经划转。Agent 从未收到“ok”的确认。它会像所有的重试循环一样:再次尝试。它使用相同的提示词(prompt)和相同的参数。这会导致第二次扣款。

重试不仅仅是一个网络事件。它是一个关于“可能已经发生的副作用”的决策。

像退避(backoff)和抖动(jitter)这样的标准重试工具能让重试变得“礼貌”。但它们无法阻止重复扣款。

你需要一个幂等账本(idempotency ledger)。它通过使用唯一键来确保某个操作最多只发生一次。

工具调用失败有两种情况:

对于 agent 来说,这两者看起来是一样的。它们看起来都像是超时或连接中断。

如果一个工具具有支付、发送邮件或退款等副作用,你不能依赖简单的重试。你必须使用幂等键(idempotency key)。

如何修复此问题:

不要将“至少一次”(at-least-once)误认为“精确一次”(exactly-once)。在分布式系统中,通过将“至多一次”(at-most-once)交付与“至少一次”重试以及去重账本相结合,才能实现“精确一次”。

不要像对待读取(read)一样对待写入(write)。重试读取是免费的,而重试写入是要花钱的。

Source: https://dev.to/0012303/your-ai-agent-will-double-charge-on-a-lost-response-5eed

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