"同名同价"这四个字容易让人得出一个错误结论:成本没变。实际上,这次的版本升级在成本上有两处值得单独拿出来算的地方——官方明确说了输出长度和任务运行时长都在下降,而输出 token 通常是账单里单价最高的那一项。

再加上 DeepSeek 本身就存在的峰谷价差和缓存命中价差,同一个任务用不同方式跑,成本可能相差一个数量级。

本文只解决一个问题:在不依赖实测吞吐的前提下,把 V4.1-Flash-1017 的成本按官方口径算清楚,并给出与 pro 档位的分流判据。 价格与规则来自官方 API 文档,检索日期 2026-10-19。

计价口径:先分清三种 token

DeepSeek 的模型计费按 token 用量计算,价格单位是"每 100 万 token"。关键在于输入 token 被拆成了两类:

项目 deepseek-flash deepseek-v4-pro
输入(缓存命中)· 低谷 $0.003 $0.022
输入(缓存命中)· 高峰 $0.006 $0.044
输入(缓存未命中)· 低谷 $0.15 $0.66
输入(缓存未命中)· 高峰 $0.3 $1.32
输出 · 低谷 $0.6 $1.98
输出 · 高峰 $1.2 $3.96
并发上限 2500 500

单位:美元 / 100 万 token。Models & Pricing、Rate Limit & Isolation(访问日期:2026-10-19)

这张表里有两个数量级级别的信息值得单独强调。

第一,缓存命中与未命中的输入价差很大。 Flash 档高峰时段,命中价 $0.006 与未命中价 $0.3 之间相差约 50 倍。也就是说,一个 100 万 token 的上下文请求,是否命中缓存,直接决定这次请求的输入成本是在"分"的量级还是"角"的量级。

第二,输出单价比输入未命中还高。 Flash 高峰时段的输出价是 $1.2,是输入未命中价 $0.3 的四倍。这解释了为什么"输出长度下降"对成本的意义不比跑分小:Agent 类任务里模型反复输出长文本,账单的增长往往来自输出而不是输入。

峰谷时段:一个可以直接用于调度的杠杆

官方对时段的定义如下:

来源:Models & Pricing(访问日期:2026-10-19)

把它换算成北京时间更直观:高峰时段对应北京时间 09:00–12:00 与 14:00–18:00 的工作日,正好是国内的工作时段;也就是说,北京时间夜间、清晨、午休时段以及全部周末和法定节假日,都按低谷价计费。

这个结构对两类团队特别有用:

需要提醒的是:低谷价是按请求执行时结算的,所以长任务如果跨越了时段边界,不要指望整单按低谷价计算。稳妥做法是把任务粒度切小,或者干脆放在完整的时间窗口内跑。

缓存命中:默认开启,但命中条件比想象中严格

DeepSeek 的上下文硬盘缓存(Context Caching)默认对所有用户开启,不需要修改代码。每次请求都会触发构建缓存;后续请求如果与之有重叠前缀,重叠部分按缓存命中价计费。

但命中不是"只要有重复内容就算"。官方给出的规则是:

来源:Context Caching(访问日期:2026-10-19)

官方给了两个例子,值得记住:

由此可以推出几条工程建议:

  1. 把稳定不变的内容放在前面:系统提示词、工具定义、固定的文档上下文应置于消息数组前部,易变内容放在后面。前缀一旦被改动,后面的缓存单元全部失效。
  2. 不要在前缀里放时间戳、随机 ID、会话序号:这类字段每次请求都变,等于主动破坏缓存。
  3. 多轮对话天然有利于缓存:因为历史消息是逐轮追加的,前缀自然稳定。
  4. 第一次请求一定不命中:缓存需要先写入再读取,评估成本时要把首次未命中算进去。

单位任务成本怎么算

不要用每百万 token 单价做决策,要用单位任务成本。建议按下面的公式逐项记录:

单次任务成本 =
    命中输入 token 数 × 命中单价
  + 未命中输入 token 数 × 未命中单价
  + 输出 token 数 × 输出单价
(单价按请求实际所处时段选取)

单位任务成本 = 单次任务成本 × (1 + 重试率)

需要落盘的字段:

task_id
model
peak_or_offpeak
input_tokens_cache_hit
input_tokens_cache_miss
output_tokens
retry_count
latency_ms
run_at

其中 peak_or_offpeak 与 run_at 是最容易被漏掉的两列——漏掉它们,你就无法解释同样的任务为什么这个月的单价不一样。

一个示例核算(假设值,非实测)

为了说明量级,构造一个假设场景:一次 Agent 任务有 20 万 token 的稳定前缀(系统提示、工具定义、仓库文档),单轮新增输入 5 千 token,输出 2 万 token,全部在低谷时段执行,且前缀已命中缓存。

命中输入      0.2M  × $0.003 = $0.0006
未命中输入    0.005M × $0.15  = $0.00075
输出          0.02M × $0.6   = $0.012
--------------------------------------
单次任务成本 ≈ $0.0133

对照一下缓存完全未命中的情况:那 20 万 token 前缀会按 $0.15 计价,仅这一项就是 $0.03,超过三项合计总成本的两倍。这是缓存是否命中对成本的直观影响。

再对照一下时段差异:同样的任务放在高峰时段,三项单价翻倍,单次成本约为 $0.0266。

必须说明:以上数字是基于官方单价的算术推演,不是实测账单;实际成本还受输出长度、重试次数、图片 token 等因素影响。

同档位内还有哪些成本变量

什么时候该从 Flash 分流到 pro

两档的差异可以归纳为三个判据:

判据 倾向 Flash 倾向 pro
单价 输入输出单价均更低 约为 Flash 的 4 至 5 倍
并发 2500 500
视觉输入 支持 不支持

作者建议按下面的顺序判断:

  1. 有视觉输入:直接选 Flash,pro 不支持图像。
  2. 高并发、面向用户的在线流量:优先 Flash,2500 与 500 的并发上限决定了 pro 档更容易触达 429。
  3. 单次任务价值高、对质量敏感:先用固定样本在 Flash 与 pro 上各跑一遍,比较通过率与单位任务成本,再决定。
  4. 长上下文但内容重复度高:优先 Flash,因为缓存命中价更低,长前缀的复用收益更明显。

需要强调的是,第 3 条不能用官方跑分替代。官方成绩是在特定框架下的结果,没有给出两档在你自己任务上的对照,这个对照只能自己做。

并发与隔离:影响成本的不只是价格

429 带来的隐性成本经常被忽略:请求被拒后重试,既消耗时间,也可能重复计费(重试成功的请求是要计费的),还会放大峰值时段的用量。

DeepSeek 提供 user_id 参数用于三类隔离:内容安全隔离、KVCache 隔离、调度隔离。对多租户业务来说,user_id 有两个实际用途:一是把不同租户的缓存隔离开,避免互相污染;二是当账户开通扩容后,可以对单个 user_id 单独限流,防止某个租户把配额占满。

注意:user_id 必须匹配 [a-zA-Z0-9-_]+,长度上限 512,且官方明确要求不要写入用户隐私信息。

来源:Rate Limit & Isolation(访问日期:2026-10-19)

限制与结论

把成本拆开看,V4.1-Flash-1017 的账其实由三个变量决定:缓存是否命中、请求落在哪个时段、输出有多长。 模型单价本身这次没有变化,但后三个变量的可控空间比想象中大。

可以直接落地的三件事:

本文限制:所有价格与时段规则均来自官方文档,检索日期 2026-10-19,官方保留调整价格的权利;文中的核算示例是算术推演,不是实测账单,也不构成对任何具体业务成本的承诺。