"同名同价"这四个字容易让人得出一个错误结论:成本没变。实际上,这次的版本升级在成本上有两处值得单独拿出来算的地方——官方明确说了输出长度和任务运行时长都在下降,而输出 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 类任务里模型反复输出长文本,账单的增长往往来自输出而不是输入。
峰谷时段:一个可以直接用于调度的杠杆
官方对时段的定义如下:
- 高峰时段:UTC 01:00–04:00 与 06:00–10:00,周一至周五,不含中国法定节假日。
- 低谷时段:其余所有时间,包括周末和中国法定节假日的全天。
- 价差:低谷价是高峰价的一半。
来源:Models & Pricing(访问日期:2026-10-19)
把它换算成北京时间更直观:高峰时段对应北京时间 09:00–12:00 与 14:00–18:00 的工作日,正好是国内的工作时段;也就是说,北京时间夜间、清晨、午休时段以及全部周末和法定节假日,都按低谷价计费。
这个结构对两类团队特别有用:
- 批量任务:文档处理、数据清洗、离线评估这类没有实时性要求的任务,完全可以排到夜间执行,单价直接减半。
- 周期性 Agent 任务:定时巡检、日报生成、仓库扫描之类的任务,把触发时间从上午挪到凌晨,账单结构会明显不同。
需要提醒的是:低谷价是按请求执行时结算的,所以长任务如果跨越了时段边界,不要指望整单按低谷价计算。稳妥做法是把任务粒度切小,或者干脆放在完整的时间窗口内跑。
缓存命中:默认开启,但命中条件比想象中严格
DeepSeek 的上下文硬盘缓存(Context Caching)默认对所有用户开启,不需要修改代码。每次请求都会触发构建缓存;后续请求如果与之有重叠前缀,重叠部分按缓存命中价计费。
但命中不是"只要有重复内容就算"。官方给出的规则是:
- 缓存前缀是独立完整的单元,后续请求必须完整匹配某个缓存前缀单元才能命中。
- 请求边界会自动持久化:每次请求会在用户输入末尾和模型输出末尾各产生一个缓存前缀单元。
- 公共前缀会被检测并持久化:系统识别到多个请求的公共前缀时,会把它单独持久化为一个单元。
- 长输入或长输出会按固定 token 间隔切分缓存单元,避免超长前缀永远无法命中。
来源:Context Caching(访问日期:2026-10-19)
官方给了两个例子,值得记住:
- 能命中的情况:第一轮请求是 A + B,第二轮请求是 A + B + C。第二轮完整匹配了 A + B 这个前缀单元,A + B 部分命中缓存。
- 暂时不能命中的情况:第一轮是 A + B,第二轮是 A + C。A + C 匹配不上 A + B,第二轮不命中;但系统会识别出两者共享前缀 A 并把它持久化,于是第三轮 A + D 可以命中 A。
由此可以推出几条工程建议:
- 把稳定不变的内容放在前面:系统提示词、工具定义、固定的文档上下文应置于消息数组前部,易变内容放在后面。前缀一旦被改动,后面的缓存单元全部失效。
- 不要在前缀里放时间戳、随机 ID、会话序号:这类字段每次请求都变,等于主动破坏缓存。
- 多轮对话天然有利于缓存:因为历史消息是逐轮追加的,前缀自然稳定。
- 第一次请求一定不命中:缓存需要先写入再读取,评估成本时要把首次未命中算进去。
单位任务成本怎么算
不要用每百万 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 等因素影响。
同档位内还有哪些成本变量
- 输出长度:官方称 1017 版本在能力提升的同时缩短了输出,这对按输出计费的账单是直接利好,但具体缩短幅度依任务而异,需要用你自己的样本测。
- 图片 token:视觉输入按尺寸折算 token,每张图上限 1024 token;多图任务要单独核算。
- 思考档位:reasoning_effort 越高,思维链越长,输出 token 越多。这不是免费的准确率,需要按任务价值权衡。
- 任务运行时长:官方提到任务运行时长同步下降,对 Agent 循环意味着更少轮次、更少累计 token。
什么时候该从 Flash 分流到 pro
两档的差异可以归纳为三个判据:
| 判据 | 倾向 Flash | 倾向 pro |
|---|---|---|
| 单价 | 输入输出单价均更低 | 约为 Flash 的 4 至 5 倍 |
| 并发 | 2500 | 500 |
| 视觉输入 | 支持 | 不支持 |
作者建议按下面的顺序判断:
- 有视觉输入:直接选 Flash,pro 不支持图像。
- 高并发、面向用户的在线流量:优先 Flash,2500 与 500 的并发上限决定了 pro 档更容易触达 429。
- 单次任务价值高、对质量敏感:先用固定样本在 Flash 与 pro 上各跑一遍,比较通过率与单位任务成本,再决定。
- 长上下文但内容重复度高:优先 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 的账其实由三个变量决定:缓存是否命中、请求落在哪个时段、输出有多长。 模型单价本身这次没有变化,但后三个变量的可控空间比想象中大。
可以直接落地的三件事:
- 把稳定前缀前置、把易变字段后置,让缓存真正命中;
- 把批量与离线任务排到低谷时段(北京时间工作时段之外),单价减半;
- 记录单位任务成本而不是 token 单价,并把重试率算进去。
本文限制:所有价格与时段规则均来自官方文档,检索日期 2026-10-19,官方保留调整价格的权利;文中的核算示例是算术推演,不是实测账单,也不构成对任何具体业务成本的承诺。