OpenAI个人账户无法真正切断API消费,只能通过监控usage接口自己实现告警和熔断机制。建议用只读权限的Admin Key搭配定时任务来控制成本。
每隔几个月,r/OpenAI 或 OpenAI 开发者论坛上就会冒出一个帖子问同样的问题:"怎么设置一个硬上限,让我的 API key 在花到 $X 时自动失效?"截至今天,答案仍然是:做不到——个人/独立账号不行,通过 Dashboard 也做不到。
本文会介绍实际有哪些功能、哪些做不到,以及我自己碰到这堵墙之后最终是怎么解决的。
Usage 页面允许你设置月度预算,并在达到特定阈值时发送邮件通知。有两个重要的限制:
如果你曾经在重试循环已经跑了一天导致账单飙升之后才收到"已达到预算 100%"的邮件,你就已经明白这个差距了。
OpenAI 确实提供了一个真实的使用量 API,作用域为 api.usage.read——一个 Admin key 可以被限制为只有这个权限,无法消费或修改账户设置。这是个正确的基石:读取使用量、与阈值对比、触发告警。
自己动手的版本就是一个 cron job,轮询使用量端点,累加当前总数,超过阈值就发邮件。大概 100 行代码。但真正耗费时间的不是这个逻辑本身,而是所有周边的东西:cron 在哪里跑,重启后怎么不丢状态,怎么确保邮件不会进垃圾箱,以及六个月后 OpenAI 改了端点时谁来记得打补丁。
这种维护成本就是为什么大多数开始做这个项目的人都没完成的原因。前两次我也没能完成。
Fusebox 就是这个循环的托管版本:你给它一个只读的 Admin key(只有 api.usage.read 权限——它只能看你的使用量数据,无法消费一分钱也无法操作你的账户),设置一个美元上限,它就会在你超过之前给你发邮件。免费版覆盖基础的上限告警;付费版则提供更快的检查频率。
直接说清楚它不是什么:它不是一个硬性停止。除 OpenAI 本身之外,没有任何东西能在你超预算后真正拒绝请求——这个原始诉求至今没有人解决,包括我。它解决的问题是"账单已经发生"和"你发现这件事"之间的这个时间差,对于运行着 Agent 或重试密集型流水线的独立开发者来说,这通常才是真正的问题。
如果你自己搭建过这个 cron job 的版本,我真的很想听听你是如何处理维护那一块的——这是我最没把握的部分。