DeepSeek 高峰与低谷定价:一次路由成本实验
DeepSeek 的价格在普通工作日会变两次。同一个模型、同样多的 token、同样的缓存命中,上午 10 点和晚上 8 点的账单可能差一倍。这首先是调度问题,其次才是选模型的问题。
先说答案: 高峰时段是北京时间周一至周五的 09:00–12:00 和 14:00–18:00,中国法定节假日除外;其余时间都按高峰价的一半计费。下面这组 2 亿输入、4000 万输出的月度负载,按高峰价算要 ¥887.36,挪到低谷时段只要 ¥443.68。如果不想自己维护路由层,可以创建 Tokuse 账号,用一个 OpenAI 兼容端点接入这两个 DeepSeek 模型,base URL 是 https://tokuse.com/v1。
官方时段和价格
DeepSeek 官方价格以人民币 / 百万 tokens 计。当前 Flash 和 V4 Pro 的价格是:
| 模型 | Token 类型 | 高峰 | 低谷 |
|---|---|---|---|
| deepseek-flash | 缓存命中输入 | ¥0.04 | ¥0.02 |
| deepseek-flash | 缓存未命中输入 | ¥2.00 | ¥1.00 |
| deepseek-flash | 输出 | ¥8.00 | ¥4.00 |
| deepseek-v4-pro | 缓存命中输入 | ¥0.30 | ¥0.15 |
| deepseek-v4-pro | 缓存未命中输入 | ¥9.00 | ¥4.50 |
| deepseek-v4-pro | 输出 | ¥27.00 | ¥13.50 |
高峰时段是周一至周五的 09:00–12:00、14:00–18:00,北京时间。周末和中国法定节假日全天都是低谷,12:00–14:00 午休也是低谷。
我计算的负载
这里用的是建模数据,不是生产环境的实测流量,便于复核:
- 每月 2 亿输入 tokens、4000 万输出 tokens。
- 输入 tokens 的 40% 命中缓存。
- 输入和输出 tokens 中,80% 走 Flash,20% 走 V4 Pro。
- 不计重试、失败请求、图片和音频 tokens。
拆分后是:
| 模型 | 缓存命中输入 | 缓存未命中输入 | 输出 |
|---|---|---|---|
| deepseek-flash | 6400 万 | 9600 万 | 3200 万 |
| deepseek-v4-pro | 1600 万 | 2400 万 | 800 万 |
按官方标价,月度成本是:
| 模型 | 高峰 | 低谷 |
|---|---|---|
| deepseek-flash | ¥450.56 | ¥225.28 |
| deepseek-v4-pro | ¥436.80 | ¥218.40 |
| 合计 | ¥887.36 | ¥443.68 |
这 50% 的差异来自时钟,不是换模型,也不是换了更好的提示词。把这批负载挪出高峰窗口,是这个模型里最大的单项杠杆。
钱花在哪里
低谷账单里,输出 tokens 占了大头。Flash 的 3200 万输出是 ¥128,Pro 的 800 万输出是 ¥108,两项合计 ¥236,占 ¥443.68 的 53%。
缓存命中确实便宜,但不是主故事。按 40% 命中率算,相比把所有输入都按未命中价收费,低谷时 Flash 大约省 ¥62.72,Pro 省 ¥69.60。
缓存命中率很容易被高估。固定的 system prompt、复用的 RAG 前缀可以把命中率做得很高;长尾用户问题经常只有 30–40%,有些场景根本命中不了。如果你测出来是 20% 而不是 40%,先把数字重算一遍,再对外承诺节省比例。
留下来的四条路由规则
- 把批处理任务挪出 09:00–12:00 和 14:00–18:00。夜间索引、批量分类、报表生成最容易挪。
- 交互流量默认走 Flash。只有评测步骤不通过时才升级到 V4 Pro,不要因为“看起来重要”就升级。
- 保持 prompt 前缀稳定。把会变的用户问题放末尾,固定的 system prompt 或检索文档放前面。每个请求开头塞一个时间戳,缓存基本就没了。
- 不要为了蹭折扣去挪延迟敏感流量。改之前测 p95,改之后再测;错过产品时限的便宜请求并不便宜。
我使用的时段判断
下面这段 Python 只用标准库,回答两个问题:现在是不是高峰,以及给定 token 结构在当前时段要多少钱。
from datetime import datetime
from zoneinfo import ZoneInfo
PRICES = {
"deepseek-flash": {
"peak": {"cache_hit": 0.04, "input": 2.0, "output": 8.0},
"off_peak": {"cache_hit": 0.02, "input": 1.0, "output": 4.0},
},
"deepseek-v4-pro": {
"peak": {"cache_hit": 0.30, "input": 9.0, "output": 27.0},
"off_peak": {"cache_hit": 0.15, "input": 4.5, "output": 13.5},
},
}
def is_peak(now: datetime) -> bool:
local = now.astimezone(ZoneInfo("Asia/Shanghai"))
if local.weekday() >= 5: # 周六、周日
return False
hour = local.hour
return 9 <= hour < 12 or 14 <= hour < 18
def cost(model: str, cache_hit: int, cache_miss: int, output: int, peak: bool) -> float:
price = PRICES[model]["peak" if peak else "off_peak"]
return (
cache_hit * price["cache_hit"]
+ cache_miss * price["input"]
+ output * price["output"]
) / 1_000_000
if __name__ == "__main__":
tz = ZoneInfo("Asia/Shanghai")
print(is_peak(datetime(2026, 11, 10, 10, 0, tzinfo=tz))) # True,周二
print(is_peak(datetime(2026, 11, 10, 13, 0, tzinfo=tz))) # False,午休
print(is_peak(datetime(2026, 11, 14, 10, 0, tzinfo=tz))) # False,周六
print(cost("deepseek-flash", 64_000_000, 96_000_000, 32_000_000, False))
最后一行输出 225.28,和上面的 Flash 低谷数字一致。
这个模型没有覆盖的部分
时段判断不认识中国法定节假日。工作日里的节假日会被当成高峰,成本会算高。如果这点重要,接一个节假日日历,把那些日期按低谷处理。
价格是写作时的官方人民币标价,之后可能调整。缓存命中率是建模输入,不是保证;我建议先用自己的真实 token 结构测一遍。Flash 和 Pro 的输出质量也不一样,省了钱但改变了答案质量,不算节省。
数字很容易复现。拿你真实的 token 数量,先跑一遍 DeepSeek 成本计算器,再看批处理部分能不能挪出高峰窗口。Continue、Cline、LangChain、Cursor、Dify、Open WebUI 和 OpenAI Node.js SDK 的接入指南都使用同一个 base URL,路由调整不需要改业务代码。产品更新记录在更新日志。