网络一撒谎,代理就有 74% 的概率重复扣款
一次支付调用超时了,这笔钱到底扣没扣?重试,可能扣客户两次;放弃,可能一次都没扣。每个后端工程师都知道这个问题。Jiapeng Li 9 月 24 日挂出的论文问的是:代理场景下这件事该在哪一层解决,模型、代理框架,还是工具接口约定?答案完全取决于代理能看到什么。
测试环境叫 LIMBO,是一个确定性的沙箱,六个服务、真实的接口约定、十二种注入故障,包括延迟提交、重复投递、部分批次成功。每一局都拿一本已提交操作的账本来判分。总共 25,930 局,九个近期模型,三个生产级代理框架。如果马上回读就能知道写没写进去,决定结果的是模型:被要求「只执行一次」的前沿模型几乎不重复,0.5%,弱一些的模型就经常重复。如果回读看不出来,比如请求还在路上、或者传输层投递了两次,同样的前沿模型重复率是 56% 和 74%。这时候接口约定解释了 81% 的差异,模型几乎不重要。
作者还证明了:在存在延迟提交、又没有在途时间上限的情况下,任何「只靠验证」的策略都做不到恰好一次。在途时间上限短且已知时,等待有用;但延迟分布是长尾的话,每局等上一小时也不够。
给所有把代理接到真实系统上的人的结论:别想靠提示词换来幂等性。API 不接受幂等键,网络一出问题,模型再聪明也救不了你。更聪明的模型修好简单的那一半,接口约定才修得好难的那一半。论文:arxiv.org/abs/2609.29095。
← 返回所有文章
测试环境叫 LIMBO,是一个确定性的沙箱,六个服务、真实的接口约定、十二种注入故障,包括延迟提交、重复投递、部分批次成功。每一局都拿一本已提交操作的账本来判分。总共 25,930 局,九个近期模型,三个生产级代理框架。如果马上回读就能知道写没写进去,决定结果的是模型:被要求「只执行一次」的前沿模型几乎不重复,0.5%,弱一些的模型就经常重复。如果回读看不出来,比如请求还在路上、或者传输层投递了两次,同样的前沿模型重复率是 56% 和 74%。这时候接口约定解释了 81% 的差异,模型几乎不重要。
作者还证明了:在存在延迟提交、又没有在途时间上限的情况下,任何「只靠验证」的策略都做不到恰好一次。在途时间上限短且已知时,等待有用;但延迟分布是长尾的话,每局等上一小时也不够。
给所有把代理接到真实系统上的人的结论:别想靠提示词换来幂等性。API 不接受幂等键,网络一出问题,模型再聪明也救不了你。更聪明的模型修好简单的那一半,接口约定才修得好难的那一半。论文:arxiv.org/abs/2609.29095。
评论