AI API成本优化怎么算?缓存命中与上下文预算指南

2026-08-10 91 0

AI API成本优化的核心不是换更便宜的模型,而是先把账单拆开:单次请求价格 = Cache Miss 输入 token 数 × 单价 + Cache Hit 输入 token 数 × 单价 + 输出 token 数 × 单价。从 2026 年 7 月 31 日 DeepSeek-V4-Flash-0731 公测公布的三档单价看,Cache Hit 与 Miss 的输入价格相差约 50 倍,这意味着一份 prompt 是命中缓存还是全部重算,对月账单的影响远大于模型档位差异。因此,AI API成本优化的正确顺序是先提高缓存命中率并控制输出长度,再考虑是否换模型。

先把账单拆开:一次请求到底在为哪三段 token 付费

大多数账单误区是把总 token 数乘一个均价来估算费用,但实际计费是三段分别计价。以 DeepSeek-V4-Flash-0731 官方定价为例(2026-07-31 观测,实际以官方定价页为准):

计费段单价(美元/百万 tokens)说明
Cache Miss 输入$0.14未命中缓存的输入 token
Cache Hit 输入$0.0028命中缓存的输入 token,约为 Miss 价格的 2%
输出 token$0.28模型生成的 token,单价远高于命中输入

单价来源:DeepSeek API Docs — Change Log 与 Models & Pricing(官方文档),观测时间 2026-07-31;第三方汇总口径可另行核对,官方定价页为最终依据。

当一次请求返回时,SDK 会在 usage 字段给出 prompt_tokens、prompt_tokens_details(含 cached_tokens)和 completion_tokens。正确的成本公式是:费用 = (prompt_tokens - cached_tokens) × Miss 单价 + cached_tokens × Hit 单价 + completion_tokens × 输出单价。

这里容易算错的地方是忽略 cached_tokens 的存在,把全部输入按 Miss 计价;或是把输出与输入混在一起按均价估算。先把这三个数字从日志里拉出来,才知道钱花在哪一段。

Cache Hit 与 Cache Miss 的价差有多夸张:用公开单价做一次量级演算

同样 100 万输入 token,按 $0.14 与 $0.0028 计算,在不同命中率下输入侧费用完全不同(示例演算,非实测承诺):

缓存命中率输入费用(美元)相对 0% 命中的节约
0%$140基线
50%$70 + $1.4 = $71.4约 49%
90%$14 + $2.52 = $16.52约 88%

命中率从 0% 提到 90%,输入侧费用下降近九成。这就是为什么 AI API成本优化里,prompt 结构设计比换模型更关键:同样一个模型,通过提高命中率就能把输入成本降一个量级。

单次请求成本三段拆解与计费数据流
图1:单次请求成本三段拆解与计费数据流。计价字段口径为 usage 中 prompt_tokens、cached_tokens、completion_tokens;单价口径为 2026-07-31 公开价格。

为什么 prompt 结构决定命中率:固定前缀、变量后置与多轮拼接三条规则

Prompt Cache 基于严格前缀匹配:只有 prompt 开头的内容和之前请求完全一致,才能命中缓存。动态数据放在开头会导致整段失配。

破坏命中的行为后果改法
在 prompt 开头注入时间戳、随机 ID、User ID前缀不匹配,整段 Cache Miss把固定 system prompt、工具 Schema 放在前面,动态值放到最后
多轮对话把历史消息直接拼在开头每轮前缀都变,命中率极低固定最近 N 轮顺序,历史使用摘要或额外缓存块
频繁修改工具 Schema前缀变化导致缓存失效尽量冻结 Schema 版本,变更时评估成本影响

这三条里,最容易被忽视的是变量位置。比如在 RAG 场景里,把检索片段插到 system prompt 之前,每次检索结果不同,前缀就被污染,缓存永远打不中。正确做法是固定 system prompt 在前,检索内容后置。

输出 token 才是隐形大头:max_tokens、停止条件与流式截断的成本控制

输出单价 $0.28/M 是命中输入 $0.0028/M 的 100 倍。所以 AI API成本优化不能只盯着输入,更要控制输出长度。

控制手段作用适用场景
设置 max_tokens 上限防止无限生成所有调用
明确 stop 条件提前终止生成长文本、代码补全
要求结构化输出减少多余解释数据提取、分类
流式场景早停达到预期即截断实时对话

实现上,可以先从日志统计平均输出 token 数,找到那些回答冗长且无实际价值的调用,再用 prompt 约束或 max_tokens 压下来。输出侧控制往往比压缩输入更快见效。

命中率与上下文预算决策矩阵
图2:命中率与输入规模决策矩阵,象限动作为方法建议,非实测降本结论。

长上下文不等于要塞满:1M 窗口下的上下文预算封顶策略

1M 上下文窗口能塞下的内容远超预算允许的量——长上下文调用成本高,通常不是窗口不够,而是每次调用没有输入上限。关键是不把窗口容量当作默认填充目标,而是给每次调用设输入硬上限。

策略做法
设定输入 token 硬上限max_input_tokens=200K,超限则截断或分块
按检索得分截断用重排序只取前 K 个片段,不全部塞入
区分固定知识与动态检索固定知识放缓存区,动态内容后置
对超长会话做摘要压缩定期把历史对话压缩成摘要再继续

判断方法很简单:如果某个 prompt 的输入 token 超过预期,先看是否真的需要全部信息。用上下文预算表记录每次调用的输入预算、实际用量和命中率,就能发现哪些调用在浪费钱。

批处理与实时链路要分开算:不同 SLA 对应不同的成本容忍度

实时对话链路对延迟敏感,为了保体验可能需要牺牲部分命中率;离线批处理则可以等更久,用更激进的压缩和小模型。

实时链路优先保证固定前缀以吃缓存,并对输出长度设硬上限,可接受延迟通常在秒级;批处理链路允许排队等待,可以激进压缩上下文,甚至降档使用更便宜的模型,可接受延迟可以到分钟级甚至更高。

实现时给每个请求打 tag(如 link=realtimelink=batch),在账单侧按 tag 归因,才能看清哪条链路在烧钱。

迁移前必做的成本 delta 测算:用同一份 eval 集跑对照而不是看标价

标价不等于账单。不同模型的 tokenizer 分词方式不同,同样的文本可能产生不同 token 数,缓存机制也不同,直接套用标价测算会偏差很大。

正确做法是用同一份 eval 集、同一套 prompt,在两个模型上分别跑,采集三段 token 数和请求数,再按各自单价折算。注意模型标识:2026 年 7 月 24 日,deepseek-chat 和 deepseek-reasoner 旧别名已彻底停用,必须显式声明 deepseek-v4-flashdeepseek-v4-pro,且返回体 model 字段要核对实际执行模型,防止成本口径失真。切换模型时如何核对 model 字段,可参考OpenAI兼容API 的 model 迁移路径。此外,还要警惕网关静默降级导致成本失真,可参考多模型API网关的静默降级检测排查。

NexAIX 提供 OpenAI Chat Completions 兼容接口(base_url https://api.nexaix.net/v1),可以用同一份 prompt 在多个模型间切换,只保留计费与排障元数据(请求 ID、模型名、token 数等,不记录 prompt 内容),且满载时返回标准 429 不静默降级,便于用同一套脚本跑成本对照。用同一份 eval 集跑对照时,可参考自有算力AI API 的性能压测框架设计测试方法。具体价格与缓存计费以 NexAIX 当前定价页为准。

成本优化落地清单:8 项可当周执行的检查项

序号检查项验证方式
1核对三段单价来源对照官方定价页,记录观测时间
2上线 usage 埋点与命中率看板确认能统计 cached_tokens 与命中率
3把动态变量后置检查 prompt 开头是否有时间戳、随机 ID
4冻结工具 Schema定版本,变更走评估
5设置 max_tokens 与 stop 条件检查调用参数,统计平均输出 token
6上下文输入硬上限为每类调用设 max_input_tokens
7按链路打 tag 归因检查日志是否有 link 字段
8迁移前跑 eval 成本对照用同一份 eval 集对比两模型三段 token

这 8 项里,前三项当天就能做,后面几项需要一点工程改造。做完第一轮,再决定是否换模型——很多时候换模型省的钱,不如提高命中率省得多。

常见问题

大模型API费用怎么算?

费用 = Cache Miss 输入 token 数 × Miss 单价 + Cache Hit 输入 token 数 × Hit 单价 + 输出 token 数 × 输出单价。先看 usage 里的 cached_tokens,再套公式。

prompt cache命中率怎么提高?

把固定 system prompt 和工具 Schema 放在最前面,动态数据(时间戳、用户 ID)后置,保持前缀不变。多轮对话避免改变历史顺序,工具 Schema 尽量冻结。

AI API输入输出token价格差多少?

以 DeepSeek-V4-Flash-0731 为例,输出单价 $0.28/M 是 Cache Miss 输入 $0.14/M 的 2 倍,是 Cache Hit 输入 $0.0028/M 的 100 倍。控制输出和命中输入是省钱关键。

长上下文调用成本太高怎么办?

设输入 token 硬上限,用检索截断和摘要压缩减少输入量。区分固定知识和动态检索,动态部分后置。

AI API账单突然暴涨是什么原因?

最常见是缓存命中率下降(prompt 前缀变了)、输出变长或调用量上升。用 usage 日志对比前后三段 token 数,定位是哪一段增长。

怎么估算换模型后的API成本?

用同一份 eval 集、同一套 prompt 在两个模型上跑一遍,采集三段 token 数与请求数,再按各自单价折算。不要只看标价,要实测 tokenizer 差异。

相关文章

Agent API 怎么接:从框架配置到工具调用的四个验证点
GLM-5.3 API接入:立即要改的致命参数与迁移清单
AI API中转站锁定模型关闭自动路由的请求配置与验证
DeepSeek API怎么接入?V4 Pro的6项配置核对
Claude Opus 5 API怎么接入?5处参数改动对照
工具调用API怎么写?跨模型四层差异与循环骨架

评论(0)

暂无评论

发布评论