一次失控的脚本调用:如何意外烧掉1900美元API费用

开发者让AI写的meme脚本无人看管运行8小时,误用旗舰模型加死循环重试烧出近1900美元账单。
一位开发者委托Claude Code编写了一个自动生成meme文案的Python脚本,设定条件为"累计接受50条不重复文案后停止",随后放任脚本独立运行。由于同时叠加了三个致命问题——误用Opus旗舰模型、停止条件只计成功不限尝试次数、去重逻辑过严导致近乎无限重试——脚本在8小时内发出约2700次请求,累计消耗约3.75亿输入token,产生近1900美元账单,而进度计数器仅推进到12/50。更值得关注的是,脚本中原有的历史裁剪函数、账户级速率限制和月度额度等"保险"全部形同虚设,因为它们的设计目标都不是"在任务失控时叫停单个脚本"。这一案例系统性地揭示了AI自动化脚本中最常见的烧钱陷阱,以及应对这些风险的具体实践原则。
一位开发者在Reddit上分享了一段相当昂贵的教训:他让Claude Code写了一个自动生成meme文案变体的Python脚本,结果脚本在无人看管的几小时内疯狂调用API,最终产生了近1900美元的账单。这个案例几乎集中展示了AI自动化脚本中所有常见的"烧钱陷阱",对任何直接调用大模型API的开发者都极具警示意义。

事情是怎么发生的
这位开发者的想法很简单:他做了一个"doge-pepe"混合的meme模板(他给角色起名叫dope),希望脚本自动生成50条不重复的文案。API负责生成文字,Python在本地把文字贴到图片上。逻辑听起来朴素——"一直生成,直到攒够50条不重复的文案就停"。
他早上启动了脚本,看了几条觉得没问题就回去工作了。等到下午再查看时,脚本还在跑,进度却卡在12/50。而debug文件夹里已经堆了上千张几乎一模一样的dope图片——同一个笑话,只是换了几个词。关掉进程后他去查API用量,账单接近1900美元,一度以为是日期筛选出了错。
关键在于,这不是Claude订阅的意外扣费,而是脚本自身发起的API调用产生的费用。Claude Code只是写了这个脚本,真正烧钱的是脚本运行时的每一次请求。
1900美元是怎么烧出来的
拆解下来,这是多个问题叠加的结果,每一个单独看都不致命,但组合在一起就成了灾难。
用错了模型
脚本调用的是 Opus 4.6,走的是普通 Messages API。原因很朴素——他从另一个项目复制粘贴了配置,却忘了改模型名。Opus 作为旗舰级模型,单位 token 成本远高于轻量模型。对于"生成meme文案"这种任务,用顶级模型本身就是巨大的浪费。
最终的用量数据很惊人:8小时内约2700次请求,约3.75亿未缓存输入token,约100万输出token。每条响应不仅包含文案,还附带一段"为什么这条和上一条不同"的解释,进一步放大了输出规模。
Anthropic的Claude模型系列按能力分为不同层级:Opus是旗舰级,适合复杂推理任务,价格最高;Sonnet是性价比中间档;Haiku是轻量快速的低成本选项。以当时的定价为参考,Opus的输入token价格大约是Haiku的10-20倍。对于"生成50条meme文案"这种输出结构简单、无需深度推理的任务,Haiku完全够用,而误用Opus直接把单位成本放大了一个数量级。复制粘贴配置时忘记修改模型名,是AI应用开发中极为常见的失误,尤其在同时维护多个项目时。这也说明为什么建议在项目初始化阶段就把模型选择作为一个显式的、需要主动确认的配置项,而不是隐藏在通用配置文件里的默认值。
停止条件设计错误
整个脚本唯一的停止条件是"累计接受50条"。被拒绝的尝试完全不计数——没有最大尝试次数限制,没有超时,什么兜底都没有。用作者自己的话说:
"stop after 50 accepted" 和 "make 50 attempts" 根本不是一回事。
当重复检测过于严格时,这个设计就变成了死循环的温床。
去重逻辑过严引发无限重试
去重检查太严格,只要文案主题相近就被判定重复、直接拒绝,然后要求再生成一个版本。更糟的是,每次重试都把之前所有的文案和解释保留在对话上下文里。这意味着请求体越滚越大,而计数器几乎原地不动。
为什么所有的"保险"都失效了
这个案例最值得警惕的地方,在于开发者原本以为设置了防护,但每一道防线都没真正起作用。
脚本里确实有一个历史裁剪函数,所以他以为上下文不会出问题。但这个函数只在token超过约18万时才成块裁掉旧消息——它不会停止任务,也不会重新开始,只是让每次请求维持在上下文上限之下,于是脚本就能"永远"发送巨大的请求而不触发任何限制。
脚本也没有启用 prompt caching,意味着那3.75亿输入token全是按未缓存价格计费。如果开启缓存,重复的上下文部分成本会大幅下降。
而账户层面的限制同样没能救他:由于其他项目的缘故,他的账号本就有较高的速率限制,月度额度设在5000美元。单个任务没有独立的小额预算,所以在撞上5000美元上限之前,什么机制都不会触发。
还有一个细节解释了为什么图片堆成了山:图片是在去重检查之前就保存到debug目录的,所以即使计数器几乎没动,文件数也会疯狂增长。
Prompt caching是Anthropic提供的一项成本优化机制:当多次请求共享相同的前缀内容(如系统提示、长篇上下文)时,API可以将这部分内容缓存起来,后续请求命中缓存的token按大幅折扣价计费(通常为原价的10%左右),而非重复按全价收费。在这个案例中,每次重试都把前几百条文案历史拼接进请求体,这部分内容高度重复,正是prompt caching最能发挥作用的场景。未开启缓存意味着3.75亿输入token全部按未缓存价格累积,而如果开启了缓存,大部分重复上下文的成本本可以降至原来的一成。开启prompt caching通常只需在API请求中为对应内容块添加cache_control标记,改动极小但收益显著,是高重复度自动化场景的标配优化手段。
开发者能从中学到什么
作者表示脚本已经禁用,接下来会重写重试逻辑,并在重新运行前加上尝试次数上限和一个小额预算。这几条修复思路,其实就是所有调用大模型API的自动化脚本都应该遵守的基本原则:
- 按任务设独立预算:不要依赖账户层面的大额上限,给每个脚本单独设一个小额熔断阈值,超过就停。
- 用尝试次数而非成功次数兜底:除了"接受N条",必须同时有"最多尝试M次"和超时限制,防止拒绝陷入死循环。
- 匹配任务与模型:生成meme文案这类简单任务没必要动用旗舰模型,先选最便宜能用的模型。
- 开启prompt caching:当上下文重复度高时,缓存能把成本降低一个数量级。
- 警惕上下文随重试膨胀:每次重试都累积全部历史是典型反模式,裁剪函数不等于停止条件。
这个"1900美元的meme"是个有点好笑但很真实的提醒:让AI替你写代码很方便,但脚本一旦自己发起API调用,成本的责任仍然在你身上。无人看管的循环配上旗舰模型,几个小时就能烧出一张触目惊心的账单。
相关推荐

Workbuddy零基础入门:桌面AI智能体如何落地工作流
Workbuddy桌面AI智能体零基础教程解读:从安装、积分领取到文件管理与自动化工作流搭建,对比CodeX的适用场景与成本差异,帮助职场人完成从AI提问者到AI管理者的思维转变。

OpenAI智能体新栈:计算机操作、决策API与超速工作流
OpenAI Dev Day发布智能体新栈:Computer Use操作速度超越普通人,Decisions API基于Luna实现极低延迟分类,Agents API开放同源计算机操作能力,GPT-6.1 Sol成本仅为Astra七分之一。本文梳理核心更新、实测数据与开发者落地要点。

梁文峰开源推理框架DeepInfo,硬刚美国禁令
DeepSeek在开源模型后再开源推理框架DeepInfo,包含GPU/CPU交叉流水线、小模型预判大模型复核、华为昇腾与英伟达芯片全面适配等技术,直面美国联邦禁令。本文解析其对AI产业落地的意义与开源策略。