Sonnet 5输入/输出定价从$2/$10涨至$3/$15,使用该模型构建预算或路由逻辑的开发者需在9月前更新价格参数。
11 天后,Sonnet 5 的价格将从 $2/$10 涨至 $3/$15 每百万 token。全线涨幅 50%。
如果你基于这个入门价格建立了会话预算、成本估算或路由逻辑——你很可能这么做了,因为在你定价时那是正确的价格——那么 9 月 1 日起你的成本模型就会失效。不是因为 bug。而是因为你硬编码的价格本来就是临时的。
这是一种不同类型的过期定价问题
大多数过期定价是渐进式的:你硬编码一个费率,供应商悄悄调价,你的守卫在数月内一直出错却无人察觉。
入门定价则不同。价格不是慢慢漂移——而是定点切换。就在一个特定日期。如果你的注册表在那个日期前没有更新,它会在 9 月 1 日醒来,发现昨天的准确数字今天已经错了。
同样的 bug,不同的失效模式。更难捕捉,因为你知道你当初设的是对的。
硬编码的模型价格——代码库中任何写着 sonnetInputPerM: 2.00 的地方。那个数字从现在起 11 天后就是错的。
基于入门价格校准的会话预算——一个围绕 $10/M 输出构建的 $0.10 会话预算,覆盖 10,000 个输出 token。到了 $15/M,同样的预算只能覆盖 6,667 个。原本在限制内的会话开始突破限额。
容量规划——如果你的团队使用 $2/M 的 Sonnet 5 估算下季度的 AI 支出,那么 8 月 31 日之后运行的任何内容,这个数字都低了 50%。
路由决策——如果你的模型路由器因为 Sonnet 5 在 $2/M 时更便宜而选择它,那么这个计算需要在 $3/M 时重新运行。答案可能不同。
修复方案:在 8 月 31 日之前更新注册表
// 8月31日之前
const MODEL_PRICES: Record<string, { inputPerM: number; outputPerM: number; expiresAt?: Date }> = {
'claude-sonnet-5': {
inputPerM: 2.00,
outputPerM: 10.00,
expiresAt: new Date('2026-08-31'), // 入门价格
},
'claude-opus-4-8': {
inputPerM: 15.00,
outputPerM: 75.00,
},
};
// 8月31日之后 — 更新这条记录
'claude-sonnet-5': {
inputPerM: 3.00, // 原 2.00 — 入门价格已于8月31日失效
outputPerM: 15.00, // 原 10.00
},
expiresAt 字段值得加上,即使你的框架不会自动消费它。一条写着"入门价格"但没有日期的注释,在 sprint review 时会被忽略。而有具体日期的字段会被人注意到。
在启动检查中加入这个验证
function validatePricingRegistry(
prices: Record<string, { inputPerM: number; outputPerM: number; expiresAt?: Date }>,
asOf: Date = new Date()
): { expired: string[]; expiringSoon: string[] } {
const sevenDaysFromNow = new Date(asOf.getTime() + 7 * 24 * 60 * 60 * 1000);
const expired: string[] = [];
const expiringSoon: string[] = [];
for (const [model, pricing] of Object.entries(prices)) {
if (!pricing.expiresAt) continue;
if (pricing.expiresAt <= asOf) {
expired.push(model);
} else if (pricing.expiresAt <= sevenDaysFromNow) {
expiringSoon.push(model);
}
}
return { expired, expiringSoon };
}
// 今天运行:
const { expired, expiringSoon } = validatePricingRegistry(MODEL_PRICES);
// expiringSoon: ['claude-sonnet-5'] — 还有11天到期
把结果展示在显眼的地方——启动日志、Slack 告警或 CI 检查。目标是让过期成为一个计划内的更新,而不是账单上的惊吓。
还有一个需要注意的:DeepSeek
DeepSeek 已宣布涨价,但具体日期未定。如果你正在路由到 V4-Flash 或 V4-Pro,现在就标记它:
'deepseek-v4-flash': {
inputPerM: 0.27,
outputPerM: 1.10,
expiresAt: undefined, // 已宣布涨价,日期TBD — 关注DeepSeek定价页面
},
不是因为你知道什么时候。而是因为标记为待定意味着它落地时你不会错过。
仅 2026 年 8 月:Luna 于 7 月 30 日下跌 80%,Sonnet 5 入门价格 8 月 31 日失效,DeepSeek 涨价待定。生产环境中最常用的三个模型——全部在同一个月内价格变动。
这就是你的成本模型所处的环境。模型价格不是稳定配置。它们是带版本号的输入,需要用与驱动关键业务计算的任何东西相同的规范来进行验证。
@salimassili/ai-costguard 将这些维护在一个集中注册表中,并带有未知模型拦截——所以当 Sonnet 5 的价格变动而你的注册表还没跟上时,第一次调用就会立即暴露不匹配,而不是悄无声息地以错误费率计费一个月。
入门价格本来就是临时的。8 月 31 日只是让截止日期变得具体了。