凌晨两点收到超额账单短信之后,我给token突增排查画了一张决策树
一条短信引发的排查夜
上个月的一个周四凌晨,我被一条云服务商的费用预警短信叫醒:当日API消耗达到日常均值的6倍,且仍在爬升。作为一个同时维护三个AI功能模块的小团队负责人,我 faced 的第一个问题不是“钱”,而是“哪”。
token用量突增的本质,是用量与业务动作之间的对应关系断了。你不清楚是哪个功能、哪个模型、哪类请求在烧钱,就只能眼睁睁看着曲线往上走。这篇文章复盘我们那晚走过的完整排查路径,以及后来如何把排查时间从数小时压缩到分钟级。
第一步:先定性——是业务真的涨了,还是出了问题?
突增不等于异常。我们建立了一个简单的分流判断:
| 信号 | 判断方向 | 响应动作 |
|---|---|---|
| 突增曲线平滑、随业务高峰时段波动 | 正常增长 | 复核预算线,评估扩容 |
| 某一时刻垂直跳升、持续不回落 | 异常循环或代码缺陷 | 立即定位,必要时熔断 |
| 用量涨但业务指标(活跃、请求成功数)没动 | 重试风暴或低效调用 | 查重试逻辑与超长prompt |
| 集中在单一key、单一模型 | 依赖失控或白名单外逃逸 | 查路由配置 |
那晚我们属于第三种:token涨了5倍,但成功完成的业务请求数只涨了12%。这个“剪刀差”是关键证据。
第二步:归因——把一把总账拆成多把细账
事后看,我们最吃亏的地方在于:所有调用共用一个API key、一个供应商账号。用量面板只有一条合并后的曲线,归因等于盲猜。
排查路径应该是三层层剥离:
- 按调用方拆:哪个应用、哪个模块贡献的?
- 按模型拆:是不是本该走小模型的请求漂移到了旗舰模型?
- 按请求特征拆:输入token还是输出token在膨胀?prompt里有没有异常重复内容?
我们最终定位到的原因很朴素:某个同事上线的新功能没设输出长度上限,遇上一个长文档摘要场景,单次响应输出超过8000 token,且失败重试逻辑写成了无上限指数退避。两件事叠加,账单就炸了。定位花了3小时40分钟——其中3小时花在“猜是哪个模块”,真正看代码只用了40分钟。
第三步:治理——三种让归因变快的方法
这次事故后我们做了三件事,每件都能量化出收益。
方法一:按团队/功能拆分密钥与配额
给每个功能模块独立分配API key,各自设日配额与月预算。这不是形式主义:拆分后再次出现异常时,定位时间从“3小时猜”变成“看一眼哪个key超线,10分钟内锁定”。对三人团队,一次事故节省的排查时间约等于一个开发日的产出。
方法二:模型白名单 + 路由治理
我们把可用模型收敛进网关的白名单,代码里不再写死模型名,而是声明任务等级(轻量/标准/复杂),由路由决定落到哪个模型。好处有两个:
- 防止“模型漂移”——没有人能在代码里悄悄把摘要任务指向旗舰模型;
- 更换供应商或调价时,改路由配置即可,不用逐个改代码。
切换后我们抽查了30天的请求:约61%的调用属于轻量任务,此前其中大半误用了旗舰模型。仅这一项路由收敛,token总成本下降了约四成,且没有任何业务方感知到质量变化——因为轻量任务本来就不需要大模型。
方法三:托管渠道 + 用量维度的可观测
自建多供应商接入时,用量数据散落在各家后台,口径还不一致(有的按字符、有的按token)。改用托管网关(我们用的是ThisToken.AI的网关)后,所有调用经过统一入口,天然具备统一的用量维度:
- 每个key、每个模型、每个时间窗口的token消耗一目了然;
- 预算告警可以按维度设置,而不是一条全局红线;
- 异常突增时,先看分组曲线再查代码,排查路径从发散变成收敛。
同样的“输出无上限+无限重试”问题,治理后我们在告警触发的15分钟内就锁定了模块——因为告警本身就带着key归属信息。
附:我们的预算治理清单
上线治理后,我们把复盘经验固化为一张清单,供你直接套用:
| # | 检查项 | 未治理前 | 治理后 |
|---|---|---|---|
| 1 | 每个功能模块独立key与预算 | 单key混用 | 全部拆分 |
| 2 | 输出token上限(max_tokens) | 未设置 | 按场景设置上限 |
| 3 | 重试次数上限与退避封顶 | 无限重试 | 最多3次、封顶60秒 |
| 4 | 模型白名单 | 代码随意指定 | 网关统一管控 |
| 5 | 任务分级路由 | 一律旗舰模型 | 约61%流量落到轻量模型 |
| 6 | 预算告警维度 | 一条全局线 | 按key/模型/日/月多维 |
| 7 | 用量与业务指标对照看板 | 无 | 每日自动对比 |
| 8 | 定期审阅top消耗请求样本 | 不看 | 每周抽查 |
算一笔效率账
把那次事故和治理后的状态做个对比:
- 排查时间:3小时40分钟 → 15分钟内定位,节省约95%;
- token成本:路由分级后总成本下降约40%;
- 配置变更:更换/新增供应商从改代码+回归测试(约半天),变成改一条路由配置(分钟级);
- 告警误报:单条全局红线时期,告警要么太晚要么太吵;多维告警后,每条告警都可直接对应一个责任模块。
对一个三人团队,这些数字翻译成具体收益就是:每年省下大约两到三周的排查与配置工时,外加一笔可观的token账单折扣——而且团队睡得着觉了。
结语
token突增不可怕,可怕的是账单是一条没有结构的总量曲线。key拆分、模型白名单、分级路由、统一用量的托管网关,本质上都是在为“异常发生时能快速归因”做铺垫。治理的成本是一次性的,排查的节省是每一次事故都复利累积的。
如果你的团队还在共用一个key、看一条合并曲线,建议从接入统一网关开始重构你的用量账本——ThisToken.AI提供网关、模型白名单与托管渠道的一体化路由治理,注册入口在这里:https://api.thistoken.ai/register。等下一次凌晨的告警短信来临时,你会庆幸自己提前画好了那张决策树。
---
想直接跑通示例?访问 https://api.thistoken.ai/register 注册 ThisToken.AI,获取 API Key 后即可开始。