DeepSeek 高峰与低谷定价:一次路由成本实验

AIAPIDeepSeek成本
Read in other languages:English

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%,先把数字重算一遍,再对外承诺节省比例。

留下来的四条路由规则

  1. 把批处理任务挪出 09:00–12:00 和 14:00–18:00。夜间索引、批量分类、报表生成最容易挪。
  2. 交互流量默认走 Flash。只有评测步骤不通过时才升级到 V4 Pro,不要因为“看起来重要”就升级。
  3. 保持 prompt 前缀稳定。把会变的用户问题放末尾,固定的 system prompt 或检索文档放前面。每个请求开头塞一个时间戳,缓存基本就没了。
  4. 不要为了蹭折扣去挪延迟敏感流量。改之前测 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,路由调整不需要改业务代码。产品更新记录在更新日志。