首页 › cost-hacks › 四个没开的官方开关:API账单砍九成

API账单砍九成:四个你没开的官方省钱开关

如果你在用 Claude、GPT-4o、Gemini 跑生产级应用,账单里大概率藏着一笔"冤枉钱"——不是模型贵,而是你没把官方白送的折扣开关打开。这一轮情报不谈换小模型、不谈 prompt 压缩(那些前几轮讲透了),只讲四把官方已经给你、但 90% 开发者从没碰过的省钱闸刀:原生 Prompt Caching、Batch API、语义缓存代理、输出端止血。组合到位,月账单从 ¥8000 砍到 ¥1500 不是玄学,是算术。

这批信息差的杀伤力在于:它们是官方机制,不是 hack。Anthropic、OpenAI、Google 都在文档里明码标价写着"打一折""对折",但默认全关。原因很简单——付费 prompt 的钱是它们赚的,没动力主动提醒你。


开关一:原生 Prompt Caching —— 命中即一折

这是四把刀里最锋利的一把。原理很直白:你的请求里如果有一大段重复的前缀(系统提示、知识库文档、Few-shot 示例、长对话历史),官方会在服务端把它缓存住。下次同样前缀进来,这段不再按原价算,直接打一折。

各家政策(核心比例,按官方文档口径):

厂商 缓存命中价(读取) 缓存写入价 触发条件 TTL
Anthropic 原价 10%(省 90%) 原价 ×1.25 代码里显式加 cache_control 标记,前缀≥1024 token 5 分钟 / 可选 1 小时
OpenAI 原价 50%(省一半) 无额外写入费 自动触发,无需改代码,前缀≥1024 token 5~10 分钟(低谷期最长 1 小时)
Google Gemini 原价 25% 左右 按小时存储费 显式创建 cached content 可自定义(默认 1 小时)

Anthropic 的关键操作:在 system prompt 或 messages 里加一个字段就行。伪代码长这样:

client.messages.create(
    model="claude-sonnet-4-...",
    system=[{
        "type": "text",
        "text": "<你那 8000 token 的产品手册/RAG 文档>",
        "cache_control": {"type": "ephemeral"}   # ← 就这一行,省 90%
    }],
    messages=[{"role": "user", "content": user_query}]
)

1 小时 TTL 是被忽视的进阶玩法:5 分钟缓存在真实流量里很容易过期(用户思考超 5 分钟再发问就 miss 了)。把 ttl 设成 "1h",缓存写入费变成原价的 2 倍,但读取仍然一折——对 RAG、客服、文档问答这类同一文档反复问的场景,命中率从 30% 飙到 85% 以上,净算下来还是大赚。

OpenAI 的坑:它是前缀匹配、自动触发,意味着你必须把稳定的内容放最前面、变化的内容放最后。很多人把动态用户输入塞在 system prompt 中间,导致前缀天天变,缓存形同虚设。正确姿势:[系统提示] + [文档] + [few-shot] + [用户本轮输入],从左到右稳定性递减。

信息差点:国内很多接 Claude API 的中间商默认不透传 cache_control,或者把请求拆分转发,导致缓存彻底失效。直接走官方或确认代理支持透传,是省这笔钱的前提。


开关二:Batch API —— 异步任务直接对折

如果你的任务不需要实时返回(批量打标、数据集清洗、文档摘要、评估集跑分、日志分析),把它扔进 Batch API,整个请求打五折,代价是 24 小时内才出结果。

厂商 折扣 完成窗口 单批上限
Anthropic Message Batches 50% off ≤24 小时 100,000 请求 / 256 MB
OpenAI Batch 50% off ≤24 小时 友好的 JSONL 提交
Gemini Batch 50% off ≤24 小时 支持 Gemini 全系

操作三步走(以 Anthropic 为例):① 把你的 N 个请求写成一个 JSONL 文件;② POST /v1/messages/batches 上传;③ 轮询或等 webhook,下载结果 JSONL。代码量不超过 30 行。

真正的王炸是"双开关叠加":Batch API 的 50% 折扣和 Prompt Caching 的一折是乘法关系,不是加法。也就是说,一段被缓存的输入前缀,在 Batch 模式下,缓存读取价 = 原价 × 10% × 50% = 原价的 5%。

flowchart TD
    A["请求进入<br/>10,000 token 前缀 + 500 token 用户输入"] --> B{实时性要求?}
    B -->|否| C["Batch API<br/>整体 ×0.5"]
    B -->|是| D["同步 API"]
    C --> E{前缀是否已缓存?}
    D --> E
    E -->|命中| F["缓存读取价 ×0.1"]
    E -->|未命中| G["首次写入 ×1.25<br/>5min/1h 后转为读取"]
    F --> H["最终单价<br/>≈ 原价 × 0.5 × 0.1 = 5%"]
    G --> H
    style H fill:#2d6a4f,color:#fff
    style F fill:#52b788,color:#fff

一个跑评估集的真实场景:10 万条样本,每条带 6000 token 的评测说明文档。同步原价要烧掉一大笔;改成 Batch + 把说明文档用 cache_control 缓存,账单直接砍到原来的二十分之一以下。这是做模型评测、数据标注团队最该知道却最常忽视的招。


开关三:语义缓存代理 —— 问法不同也算命中

官方 Prompt Caching 是前缀字符级匹配——你问"怎么退款"和"如何申请退款",前缀不一样,缓存 miss。但语义缓存(semantic cache)解决的是意思相同就算命中:把每个问题转成 embedding 存进向量库,新问题来了先算相似度,超过阈值(比如 0.92)就直接返回历史答案,完全不调模型。

主流工具栈(开箱即用,无需改业务代码):

工具 类型 特点 适合
LiteLLM 开源代理 内置 Redis 缓存 + 一键切换 100+ 模型 已有多模型、想统一网关
GPTCache 开源库 纯语义缓存,embedding + 向量检索 Python 项目深度定制
Helicone 托管可观测+缓存 请求日志 + 缓存 + 计费分析一体 想要可视化账单洞察
LangCache (Redis) Redis 官方模块 生产级语义缓存,毫秒级 高并发线上服务

LiteLLM 最省心的接法:它作为代理挡在你和官方 API 之间,配置里开两行,所有经过的请求自动享受缓存。Claude Code、Cursor、自己写的 SDK 都能无痛接——只要把 base_url 指向 LiteLLM 即可。

命中率决定成败:客服、FAQ、文档问答、代码补全这类场景,重复/近似问题占比常达 40%~70%。Helicone 公开案例里,语义缓存让部分客户的 LLM 调用成本下降 50%~80%。关键调参是相似度阈值:调太高(0.98)几乎不命中,调太低(0.80)会把不同问题误判成相同——建议从 0.90 起步,按业务误命中率回调。

一个反直觉的点:语义缓存和官方 Prompt Caching 不冲突,是叠加层。语义缓存挡掉"重复问题"(整请求跳过),Prompt Caching 挡掉"重复前缀"(请求内省钱)。两层一起上,效果是相乘的。


开关四:输出端止血 —— 别为废话付钱

前三把刀砍的是输入,这一把砍输出——而输出 token 的单价通常是输入的 5 倍(Sonnet 级 $15/Mtok vs $3/Mtok)。模型每多吐一个 token,你的钱就多花 5 倍于输入的速率。但绝大多数人从不约束输出长度。

三个立刻能用的止血手段:

  1. max_tokens 必设:不设等于默许模型写到天荒地老。按任务设上限,摘要任务 200、分类任务 10、抽取任务 50。
  2. Structured Output / JSON Schema:强制模型只输出结构化字段,天然干掉所有"好的,以下是…"、"综上所述…"的废话前缀。OpenAI 的 response_format: json_schema、Anthropic 的 tool use 强约束都能做到。一个分类任务,自由文本输出可能 80 token,JSON 输出只要 {"label":"A"} 4 个 token——省 95% 输出费。
  3. stop_sequences 截断:知道答案到哪结束(比如代码生成到某个标签),提前设 stop,模型一吐完就停,不拖泥带水。

链式调用里的隐藏出血点:多步 Agent 工作流中,每一步的输出会成为下一步的输入。如果中间步骤让模型"详细解释推理过程",这些冗长输出会滚雪球般进入后续上下文,输入费也跟着暴涨。中间步骤强制短输出(JSON、关键值),只在最终步骤允许自由文本,是 Agent 场景的省钱铁律。


省钱计算:一个真实账单的拆解

以一个文档问答 bot 为例:每天 1000 次请求,每次带 10,000 token 的知识库前缀 + 500 token 用户问题,输出 500 token。Sonnet 级别定价(输入 $3/Mtok、输出 $15/Mtok,代表性数字)。

方案 输入成本/天 输出成本/天 日合计 月合计(30天) 节省
裸调(什么都不开) $31.50 $7.50 $39.00 $1,170 基线
+ 开 Prompt Caching(前缀 90% off) $4.90 $7.50 $12.40 $372 省 68%
+ 输出端止血(输出压到 150 token) $4.90 $2.25 $7.15 $215 省 82%
+ 语义缓存(40% 请求整跳过) $2.94 $1.35 $4.29 $129 省 89%
+ Batch API(非实时任务再 ×0.5) $1.47 $0.68 $2.15 $64 省 94.5%

从 ¥8000+($1,170)掉到 ¥450 左右($64)——这就是"账单砍九成"的算术来源。注意每一步都是乘法叠加:90% × (1-输出压缩70%) × (1-语义跳过40%) × 50%,最终残留约 5%~10%。

graph LR
    subgraph 优化前["优化前 $1,170/月"]
        A1["输入 $945"] --- A2["输出 $225"]
    end
    subgraph 优化后["优化后 $64/月"]
        B1["缓存命中+语义跳过后<br/>输入 ≈ $44"] --- B2["结构化截断后<br/>输出 ≈ $20"]
    end
    优化前 == "砍 94.5%" ==> 优化后
    style 优化前 fill:#7f1d1d,color:#fff
    style 优化后 fill:#14532d,color:#fff

信息差总结:你知道的 vs 别人不知道的

维度 大多数人(你在做) 信息差持有者(该做的)
重复前缀 每次原价重传 cache_control 一折读取
批量任务 同步逐条调 Batch API 整体五折
相似问题 重复花钱问 语义缓存 40%~70% 整跳过
输出长度 不约束,模型自由发挥 max_tokens + JSON Schema 砍 70%
叠加关系 只用一招 四招相乘,残留 5%~10%
TTL 选择 默认 5 分钟易过期 1 小时 TTL 命中率翻倍
代理透传 不确认中间商是否透传缓存 直连官方或验证代理支持

行动指南:今晚就能做的五步

  1. 审计账单:打开 Anthropic/OpenAI 后台,看输入输出 token 占比。输出占比超 40%,先动开关四(收益最快)。
  2. 加 cache_control:在最长、最稳定的前缀(system prompt / 知识库文档)上加 ephemeral 标记,5 分钟能接上,立刻看缓存读取占比。
  3. 改 1 小时 TTL:RAG / 客服类应用把 TTL 调到 1h,观察命中率曲线。
  4. 非实时任务挪到 Batch:盘点所有"等几小时无所谓"的任务(打标、评估、摘要、批量翻译),改写成 JSONL 提 Batch。
  5. 挂 LiteLLM 语义缓存:pip install litellm,开 Redis 缓存,base_url 指过去,零业务改动开始命中。

参考来源

⚠️ 数据说明:本文价格为代表性数字,用于说明省钱比例的算术关系;各家最新 token 单价请以官方定价页为准。核心洞察(缓存一折、Batch 对折、四招相乘)是稳定机制,不随单价波动而失效。


本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入