长上下文为什么贵
一次请求的费用 ≈(输入 token × 输入价)+(输出 token × 输出价)。回答通常很短,几百到几千 token;输入却每一轮都在变长:新问题和上一轮回答都加进历史,然后全部再发给模型。 例子:一个聊天机器人,系统提示里放了 10 万 token 的文档。用户问 30 个问题,光文档就是 30 × 10 万 = 300 万输入 token,哪怕每个问题只有一行。所以长上下文要省钱,先从输入下手。一次请求多少钱
输入 15 万 token、回答 2 千 token 的一次请求。「有缓存」指其中 14 万 token 和上一次请求相同、从缓存读取,1 万是新的。
Claude 的 1 万新 token 按写入缓存的价格算(普通输入的 1.25 倍),GPT 和 DeepSeek 按普通输入算。
claude-haiku-5-5 在 15 万 token 时已经超过 10 万的门槛,按高档计价(见下一节)。
两点结论:一是在这个例子里,缓存能把这几个模型的账单降到原来的 1/4~1/5.5;二是长上下文下不同模型的价格能差到 40 倍,这个差距比短测试里看起来更要紧。
哪些模型过了门槛会涨价
有些模型是分档计价:整个提示短于门槛时按低档;超过门槛,整次请求都按高档算,不是只算超出的部分。缓存里的 token 也计入门槛。价格为每 100 万 token,输入 / 输出:
不分长短一个价的:
deepseek-flash、deepseek-v4-pro、claude-sonnet-5-5、claude-opus-5-5、glm-5.3、kimi-k3.1-pro、gemini-3.8-flash、gemini-2.5-flash-lite。
表里只是举例。除了 gpt-5.4-mini、gpt-5.4-nano(一个价)以外,GPT-5.x 和 GPT-6 模型都有 27.2 万的门槛,gemini-2.5-pro 是 20 万;完整名单和两档价格见 价格页。
实际效果:上下文从 15 万翻倍到 30 万 token,不走缓存时 deepseek-flash、claude-sonnet-5-5 的费用大约是原来的 2 倍,gpt-6-luna、gpt-5.4 却是原来的将近 4 倍:上下文变长了,整次请求还跳到了高档。到 30 万 token 时,deepseek-flash(每次 $0.053)已经比 gpt-6-luna($0.074)便宜。
六个省钱办法
1. 打开缓存
Claude、GPT、DeepSeek 从缓存读的重复上下文,比普通输入便宜 10 倍以上。GPT 和 DeepSeek 自动缓存。Claude 通过原生 Anthropic 接口,或在 OpenAI 兼容格式里加cache_control 标记来缓存;RuAPI 也能替你加标记。检查缓存是否命中:控制台 → 使用日志 → 记录详情 →「缓存 Tokens」。详见 提示缓存。
2. 别改提示的开头
只有请求从第一个 token 起和上一次完全一样,缓存才会命中。开头改了一处,整段长上下文就要按全价重新付。常见原因:- 系统提示里放了当前日期、时间或随机 ID;
- 工具列表每次请求都不一样(顺序变了、加了或删了工具);
- 文档每次插入的顺序不同;
- 程序在历史最前面加了一条附注。
3. 压缩旧历史
过了 20 到 30 轮,把前面的对话换成一段简短摘要,最近几条消息原样保留。摘要可以交给便宜的模型来写,比如deepseek-flash。别太频繁,几十轮做一次就行,不要每轮都做:压缩会改变提示开头,缓存要重新写一次。
4. 只发需要的,不发全部
回答只需要大文档或知识库里的一节时,不要整份发过去。把文本切成小段,按语义找出相关的几段(同一个 key 就能用text-embedding-3-small、text-embedding-3-large),只发这几段。5 千 token 的请求比 30 万 token 便宜几十倍,模型也不容易被无关内容带偏。
5. 按上下文长度选模型
- 长对话、角色扮演、客服、写草稿:
deepseek-flash,多长都是一个价,上下文最多 100 万 token。 - 单价最低、任务简单:
gemini-2.5-flash-lite,多长都是一个价,上下文最多 100 万 token。 - 27.2 万 token 以内、要用 GPT:
gpt-6-luna,我们这里最便宜的 GPT。 - 提示短、必须用 Claude:
claude-haiku-5-5,提示保持在 10 万 token 以内。 - 长文档精细分析、要求准确:
claude-sonnet-5-5加缓存,长请求不涨价,缓存能省掉大头。
6. 问题一口气问完
对同一份长文档有好几个问题时,连着发,中间别停:Claude 的缓存默认在最后一次请求后保留 5 分钟,停久了长上下文又要按全价付一次。问题事先就知道的话,可以一次请求全问,让模型列表作答,长文档只发一次。常见问题
我只问了一个词,为什么扣得像一大段文字?
我只问了一个词,为什么扣得像一大段文字?
跟着你这个词一起发给模型的,还有整段对话历史和系统提示,模型不会在请求之间保存它们。使用日志 里能看到输入了多少 token。历史越长,后面每个问题越贵。
缓存里的 token 算不算进 10 万 / 20 万 / 27.2 万的门槛?
缓存里的 token 算不算进 10 万 / 20 万 / 27.2 万的门槛?
算。门槛按整个提示计算:普通 token 和缓存读取的 token 都算。提示超过门槛,整次请求(包括缓存部分)都按高档计费。
50 万 token 的文档用哪个模型最便宜?
50 万 token 的文档用哪个模型最便宜?
按单价算是
gemini-2.5-flash-lite:上下文最多 100 万 token,多长都是一个价。要更强一点的模型,用 deepseek-flash,同样 100 万 token、一个价。同一份文档有几个问题,就连着问,让重复的上下文从缓存读。压缩历史和靠缓存,哪个更好?
压缩历史和靠缓存,哪个更好?
两个都要。缓存让重复上下文变便宜,但每一轮还是要为它付钱,而且上下文一长就容易越过分档门槛。每几十轮压缩一次,能让上下文本身变小。只是别每轮都压缩,不然缓存永远命中不了。
怎么看出缓存没生效?
怎么看出缓存没生效?
打开 使用日志 → 记录详情。重复请求时「缓存 Tokens」一栏是空的或很小,说明提示开头每次都在变(见办法 2),或者两次请求间隔超过 5 分钟(Claude 默认)。
继续阅读
提示缓存
Claude、GPT、DeepSeek 的缓存怎么工作,怎么检查命中。
Claude Code 和 Cline 省钱
编程智能体的同类做法:缓存、/compact、选模型。
DeepSeek 还是 Claude
同一天的工作量,按不同模型的价格算。
价格
所有模型、分档和缓存价格。