1. Vercel 的月底预测是 $807,预算是 $430。下一步先做什么?
先看速度:最近 4 天每天只有 $13–15,尖峰已修好,按中位数预测是 $555。预算是 负责人 定的,不能自己调;「暂停生产部署」会停官网。
这门课用 AIDC 自己的真实案例,讲怎样给一家用云和大模型的公司建一套费用控制系统。你会看到我们从哪里开始、发现了什么、改了什么。
数字来自 2026-10-13 生产的只读查询。金额是美元。客户用「客户 A」「客户 B」代替。
后面每一节都用这些词。我们不换同义词。
系统里的每一样东西都是一个对象。对象之间有关系。下面这张图是我们在 Semantic 里的费用对象,一共五层。点一个对象,看它是什么、有多少条、连着谁。
「上限」是这次新加的对象。图用的是 AIDC UI 的本体图组件 ui.graph,和你在自己应用里能用的是同一个。
做法:读代码里所有外部服务的凭证名,读生产环境变量的名字(只读名字,不读值),再对照记忆和账单。每个服务回答四个问题:
| 付费账户 | 计费方式 | 10 月已花 | 9 月实付 | 月预算 | 谁在看 | 服务商上限 | 平台上限 |
|---|
订阅类(ChatGPT、Claude、企业邮箱、域名)是固定月费,按月对账即可,不放进这张表。
一个月的账单只告诉你「花了多少」。要知道「为什么」,要拆四层:账单 → 计费项 → 驱动量 → 归属(哪个客户、哪个功能)。每一层的和要对上上一层。
拆到驱动量以后,一项费用 = 次数 × 每次的工作量 × 单价。费用变了,先看是三个数里的哪一个变了。
AWS 从 10-05 起每天多约 $20:共享池换成了更大的机器。Vercel 10-05 到 10-07 有一个尖峰:构建机被平台自动升到 30 核。
每次调用平均带 25 万 token 的上下文。10-09 以前缓存命中是 0(没有按缓存计价,也没有复用前缀)。修好以后命中 97% 以上。
| 指标 | 怎么算 | 达标 / 越线 / 0 分 | 现在 |
|---|---|---|---|
| 云预算预测占用 | 月底预测 ÷ 预算,取最高的账户 | 90 / 100 / 120 % | 129% |
| 本月模型费 | 平台台账里全部调用的标价之和 | $300 / 500 / 800 | $669 |
| 预算覆盖率 · 新 | 预测花费里,所在账户有预算的占比 | 100 / 90 / 60 % | 67% → 100% |
| 上限覆盖率 · 新 | 按量账户里,有「已设、管全部」硬上限的占比 | 100 / 80 / 50 % | 25% → 42% |
| 越线连续天数 · 新 | 同一条检查、同一个对象连续越线的天数,取最长 | 1 / 2 / 7 天 | 5 天 |
| 账单采集正常率 | 30 小时内采到、没报错的账户占比 | 100 / 90 / 60 % | 100% |
原来的算法:本月至今 + 最近 7 天的平均 × 剩下的天数。问题是一次尖峰修好以后,平均值要 7 天才降下来。这 7 天里预测一直超预算,告警一直响,人就不再看告警。
新算法把「平均」换成「中位数」。7 天里有 3 天尖峰,中位数也不动。连续 4 天以上的上涨会进中位数,是真的涨了。单独一天的突增,另有一条告警管。
| 账户 | 旧算法 | 新算法 | 为什么不同 |
|---|---|---|---|
| Vercel | $807 | $555 | 10-05 到 10-07 的构建尖峰已修好 |
| AWS | $2,282 | $2,401 | 最新一天账没结完(只有半天),旧算法被它拉低 |
| DeepSeek | $1,701 | $1,526 | 桌面端的尖峰已修好;云端智能体从 10-10 起按真实用量计价 |
账单之外,每家都有一两个最先出问题的资源。这些指标由资源用量那一边的系统采集,这里列出来,方便对照。
| 服务商 | 指标 | 公式 | 常见的线 |
|---|---|---|---|
| Supabase | 磁盘 IO 突发额度 | 剩余突发时间 ÷ 每天 30 分钟 | < 20% 就会变慢 |
| Supabase | 出网 | 本月出网 ÷ 套餐含量 250 GB | ≥ 80% |
| Redis | 缓存命中率 | 命中 ÷(命中 + 未命中) | < 90% |
| Redis | 连接被拒 | 每天新增的拒绝次数 | > 0 |
| Vercel | 回源流量 | 每路由每周 GB × 区域单价 | 周环比 ≥ 2 倍 |
| Vercel | 函数内存时长 | GB × 小时(长连接按时长算钱) | 周环比 ≥ 2 倍 |
| AWS | 空转机器 | 7 天平均 CPU | < 5% 且不是待命机 |
| 模型 | 每次调用的平均输入 | 输入 token ÷ 调用次数 | ≥ 20 万 |
| 模型 | 缓存命中 | 缓存 token ÷ 输入 token | < 80% |
上限有两个地方可以设:
平台这边的每日上限(10-13 起):一把 Key(一台设备或一个数字员工)一天 $60,一家公司一天 $150。所有调模型的入口都先过这一道,到线拒绝调用,UTC 0 点恢复。线的依据:修好以后一把 Key 一天最多约 $9、一家公司约 $35;10-06 的事故是一把 Key $153、一家公司 $228。语音演示另有每天 100 场的总量上限。
平台这边的上限更细:一台设备用超,不会让所有客户一起停。服务商的上限是最后一道闸。
| 付费账户 | 服务商的硬上限 | 服务商的通知 | 平台的额度 | 到线会怎样 |
|---|
每一行都是 Semantic 里的一个 SpendLimit 对象,一共 27 个。改了设置,就改对象;上限覆盖率每小时重算一次。
谁能决定什么,事先定好。这样大部分事不用等人:
| 决策权 | 例子 | 谁做 |
|---|---|---|
| 例行 | 修让费用上涨的缺陷;加缓存;改轮询;加监控规则 | AI 层直接做,做完报告 |
| 花钱 | 定预算、设上限的数字、升配、降配、删快照 | 写审批包(现状、变化、替代做法、能不能撤回、不批的后果),负责人 批 |
| 负责人操作 | 只有 负责人 能登录的服务商控制台 | 负责人 自己点;AI 写好在哪里点、点哪个 |
按「每月能省多少」排序。已经做完的,7 天后用同一个脚本复算,写回实际省了多少。
| 措施 | 每月约省 | 决策权 | 状态 |
|---|---|---|---|
| 桌面端模型调用复用缓存前缀,按缓存价计量 | 约 $2,000(台账) | 例行 | 已完成 |
| GitHub 检查:不再每次新提交都手动重跑(两天 91 次),本机先跑,合并前最多一次 | 每月约 $40 | 例行 | 已完成 |
| 构建机固定免费档、关按需并发 | $112 | 例行 | 已完成 |
| 月底预测改中位数;三个新指标进 ADIS | 不省钱,少误报 | 例行 | 本次完成 |
| 客户 A 的专用箱降一档(先在工作日压测) | $525 | 花钱 | 等负责人 |
| 共享池按需拉起、空闲冻结 | $400 | 定目标 | 等负责人 |
| 共用机器降配:白天 r7i.xlarge、夜里 r7i.large(缩到零以后,内存峰值只用了 64 GB 里的 10.9 GB) | 约 $540 | 花钱 | 已批准,10-15 起生效 |
| 停机 30 天以上的磁盘先快照再删;快照打到期标签 | $182 | 花钱 | 等负责人 |
| 模型调用每日美元上限(每把 Key $60、每家公司 $150);语音演示每天 100 场 | 防止一天 $228 再发生 | 例行 | 已完成 |
10-13 当天批了三件:模型月预算、GitHub 预算、共用机器降配。还在等的几项(客户 A 箱降配、旧磁盘与快照清理)加起来每月约 $700,都有审批包。资源用量这一边(每台机器每小时的 CPU、内存、磁盘)由另一套用量监控采集,它的发现也写进 Semantic,供定预算和上限时参考。
先看速度:最近 4 天每天只有 $13–15,尖峰已修好,按中位数预测是 $555。预算是 负责人 定的,不能自己调;「暂停生产部署」会停官网。
余额用完,调用就失败,所以它是上限。预算邮件只提醒,服务不停;检查只看,不拦。
告警有用,但没人关。先派负责人查原因:能修的直接修,要花钱的(例如扩盘)写审批包。调线是「定目标」,要 负责人 同意。
做完这五件事,这个服务就在指标里。没做完,「上限覆盖率」「预算覆盖率」会越线,系统会提醒你。
这套内容也做成了 Academy 的公开课(4 课,中英日德):花钱有数:费用控制。