前几轮我们聊了缓存、路由、Batch、换 embedding——这些都是输入侧和调度侧的省刀。但如果你打开账单后台按 token 类型拆一下,大概率会看到一个反常识的事实:真正烧钱的,是输出 token(output/completion tokens),而它一直没人管。
这篇要拆的就是这个被忽视的信息差:所有主流大模型,输出单价是输入的 4 到 5 倍;而 prompt 缓存只对输入生效。也就是说,你把输入压到一折之后,输出相对"缓存输入"贵了约 50 倍。多数人优化错了方向——一直在精简 prompt,却任由模型在输出端唠叨。
下面给你五把直接砍输出侧账单的刀,配 2026 年各家官方列价、可复制的操作步骤,和一个把日账单从 \$300 砍到 \$38 的真实路径。
理解输出为什么贵,要看两个底层事实:
1. prefill 廉价、decode 昂贵。 处理输入(prefill 阶段)是一次前向、可高度并行,GPU 算力吃满;生成输出(decode 阶段)必须逐 token 自回归,还要不断膨胀 KV cache,属于显存带宽瓶颈,单位成本天然更高。这就是为什么所有厂商都把输出标价更高——不是心黑,是物理。
2. prompt 缓存只缓存输入。 Anthropic 的 prompt caching、OpenAI 的自动缓存、Gemini 的 implicit caching,本质上都是把"重复的输入前缀"按更低单价计费(Anthropic 缓存命中是 0.1 倍、即一折)。但缓存对输出 token 一个子都省不下来。
把这两点拼起来,就是这一轮的核心信息差。看 2026 年官方列价表(按每百万 token 美元,列价口径,各档会浮动):
| 模型 | 输入 \$/M | 缓存命中输入 \$/M | 输出 \$/M | 输出/裸输入 | 输出/缓存输入 |
|---|---|---|---|---|---|
| Claude Opus 4.x | 15 | 1.50 | 75 | 5× | 50× |
| Claude Sonnet 4.6 | 3 | 0.30 | 15 | 5× | 50× |
| Claude Haiku 4.5 | 1 | 0.10 | 5 | 5× | 50× |
| GPT-4.1 | 2 | 0.50 | 8 | 4× | 16× |
| GPT-4.1-mini | 0.40 | 0.10 | 1.60 | 4× | 16× |
| GPT-4.1-nano | 0.10 | 0.025 | 0.40 | 4× | 16× |
| Gemini 2.5 Pro(>200k) | 2.50 | 0.625 | 15 | 6× | 24× |
| GLM-4.6 | ≈0.60 | — | ≈2.20 | ≈3.7× | — |
| DeepSeek V3 | 0.27 | 0.07 | 1.10 | 4× | ≈16× |
数据来源:Anthropic / OpenAI / Google AI 官方 pricing 页(见文末),GLM/DeepSeek 为国内 API 平台列价区间。
最右边那一列才是真相:当你的输入已经命中缓存,每生成一个输出 token,等于烧掉几十个缓存输入 token 的钱。 而你过去所有的省刀——精简 prompt、压缩上下文、Batch——都在优化第二列,对最后一列毫无作用。
那 50× 的倍数怎么打下来?五把刀。
max_tokens 硬顶 + 结构化输出收口这是性价比最高的一刀,几乎零成本。多数调用根本不需要模型"自由发挥"——提取、分类、打标签、结构化摘要,本质都是有固定形状的输出。
操作步骤:
1. 给请求加 response_format: { type: "json_schema", json_schema: {...} }(OpenAI/Gemini)或要求 Claude 输出严格 JSON。
2. 字段用 enum 收窄(情感分析只有 pos/neg/neu,不允许散文)。
3. 把 max_tokens 设到 schema 最坏情况 + 20% 余量,而不是默认的 4096。
效果: 一个客服工单分析任务,从模型写 500 token 的"分析报告",变成 80 token 的 JSON。输出量直接砍掉 70%–80%,且 JSON 更稳定、更易接下游。
适用场景: 任何"模型产出要被代码解析"的调用——这是你 API 调用里占比最大的一类,却最容易被当聊天来写。
stop 序列提前收口模型有"凑字数"的倾向——尤其被训练得爱加"希望对你有帮助""综上所述""如果还有问题……"这类零信息尾巴。每一个尾巴 token 都是按 5× 价钱烧的。
操作步骤: 在请求里设 stop 序列。例如总结类任务,让它输出完后停在 ---END---;问答类停在换行后的空行;代码生成停在 ``` 闭合符。
# 把模型爱写的"总结陈词"截掉
response = client.chat.completions.create(
model="gpt-4.1-mini",
messages=[...],
max_tokens=300,
stop=["\n\n总结:", "\n\n综上", "希望这"],
)
效果: 对长报告/长回答类调用,能稳定砍掉 10%–25% 输出,且不打断正文。一刀省在"模型主动加的废话"上。
适用场景: 客服回复、邮件草稿、文档摘要——所有"人会读、但尾巴没用"的输出。
这是 Anthropic 和部分推理框架的隐藏开关。正常调用里 assistant 的第一条消息是空的、模型从头写。你可以预填 assistant 的开头,直接规定它从什么格式开始续写。
messages=[
{"role": "user", "content": "提取发票信息"},
{"role": "assistant", "content": '{"invoice":'} # 预填充,逼它续 JSON
]
效果: 模型不再写"好的,这是提取结果:{"这种前缀废话,直接从 : 续写。省掉前缀 token + 锁死格式,对 JSON/代码类输出尤其干净。OpenAI 侧对应做法是用 system prompt 强约束 + response_format。
适用场景: 需要严格结构、又不想用 json_schema(比如流式、或字段动态)时。
这是单项杠杆最大的一刀,也是国内多数人没意识到的认知差。
逻辑很简单:推理贵在"想",生成贵在"量"。 一个任务里,真正需要大模型智慧的往往只有"判断/决策"那一下(几十到一百 token 的结论),剩下的几百 token 是"把结论展开成自然语言/报告/邮件"——这部分根本不需要 Opus 级别。
做法(两段式):
1. 大模型(Opus / GPT-4.1)只输出结构化决策:分类标签、关键事实、一句话指令。max_tokens 卡死在 100–150。
2. 小模型(GPT-4.1-nano / Haiku / Gemini Flash / GLM-Air / DeepSeek)把结构化结果展开成最终长文本。
为什么这是大杠杆: 把"动嘴"那段长输出从 \$8/M(4.1)或 \$75/M(Opus)挪到 \$0.40/M(nano),输出单价直接降到 1/20 甚至 1/180。而质量损失几乎可以忽略——把一个 JSON 展开成邮件,nano 完全够。
对中国开发者尤其友好:GLM-4.6、DeepSeek V3 的输出单价本就在 \$1–2/M 区间,做"展开层"性价比极高,配合国产 API 渠道还能再低。
适用场景: 客服、销售跟进、内容生成、报告自动化——所有"重输出"管线。
当你某个任务高频且固定(比如固定模板的合同审查、固定品类的商品文案),刀四是"每次都过两层"。刀五是"一次性把大模型的能力焊死到一个小模型里",之后这个任务的所有流量都不再碰大模型 API。
操作步骤:
1. 用 Opus / GPT-4.1 跑 1000–2000 条 (输入, 高质量输出) 对(这是你已经在花的钱,只是结构化留存)。
2. 用 LoRA/QLoRA 微调一个开源小模型(Llama 3.x、GLM、Qwen、Phi),或用 OpenAI/Google 的官方 fine-tuning(如 fine-tuned GPT-4.1-mini、Gemini tuned Flash)。
3. 把该任务的路由从大模型切到微调小模型。
效果(终局算账): 把持续性 API 支出变成一次性 GPU 费。一条原本 \$8/M 输出的调用,微调后在自托管小模型上可能只要几美分每 M,或用 fine-tuned mini 降到 \$0.50/M 量级。高频任务上线 2–4 周即可回本。
适用场景: 日调用量 >10k 的固定任务。低频任务别折腾,直接刀四。
把五刀组合起来用,看一个真实量级的工单分析管线(10,000 次/天):
| 环节 | 优化前(全 Opus 自由发挥) | 优化后(分层 + 结构化) |
|---|---|---|
| 输入 | 已缓存,几乎为 0 | 已缓存,几乎为 0 |
| 输出量/次 | ~400 token 散文报告 | Opus 决策 80 token + nano 展开 120 token |
| 输出单价 | \$75/M(Opus) | \$75/M(仅 80 token)+ \$0.40/M(120 token) |
| 日输出 token | 400 万 | 80 万(Opus) + 120 万(nano) |
| 日输出成本 | ≈ \$300 | ≈ \$60 + \$0.48 ≈ \$60.5 |
再叠加刀一/刀二把 nano 那段从 120 压到 80、刀三砍掉前缀,日成本可进一步压到 \$38 左右——省掉约 87%,且对外输出质量基本不变(因为真正的判断仍由 Opus 做)。
如果你这条管线日调用拉到百万级,刀五(蒸馏)一上,那条 nano 的 \$0.48 也会被微调小模型吃掉,进入"一次性 GPU 费"区间。
下面这张图把这个"输出侧优化管线"画清楚了:
flowchart TD
A[请求进入] --> B{输入是否命中缓存?}
B -->|命中| C[输入成本≈0 一折]
B -->|未命中| D[写缓存 输入1.25x]
C --> E[Decode 阶段 输出token 真正烧钱处]
D --> E
E --> F{任务类型}
F -->|硬推理 判断决策| G[大模型 Opus/4.1<br/>输出5x 但只产关键结论<br/>max_tokens卡死100]
F -->|提取/总结/展开| H[小模型 nano/Haiku/Flash/GLM-Air<br/>输出单价 1/20]
G --> I[JSON schema 收口<br/>+ stop序列砍废话]
H --> I
I --> J{高频固定任务?}
J -->|是 长期| K[刀五: 蒸馏进微调小模型<br/>API支出 → 一次性GPU费]
J -->|否| L[最终输出]
K --> L
style E fill:#ffd6d6
style K fill:#d6ffd6
style L fill:#d6ffd6
| 维度 | 多数人知道的 | 海外在用、你没听说的信息差 |
|---|---|---|
| 缓存 | 缓存能省输入 | 缓存只省输入,输出一个 token 都省不下来 |
| 价格 | 输出比输入贵 | 缓存命中后,输出相对缓存输入贵了 16–50 倍 |
| 优化方向 | 死磕 prompt 精简、压缩 | 真正的肉在输出侧:max_tokens / 结构化 / 分层 |
| 小模型 | 小模型质量不行 | 小模型做输出展开层而非推理层,质量够用 |
| 微调 | 微调贵且麻烦 | 蒸馏固定任务的小模型,是把 API 支出变成一次性 GPU 费的终局 |
| Reasoning 模型 | o/GPT-5 更强 | 它的"思考"也是输出 token,会按 5× 计费——能关就关 |
response_format=json_schema + max_tokens 硬顶。一刀下去省 60%–80% 输出。一句话收口:输入侧的省刀已经卷到一折了,下一站的红利全在输出侧。 谁先把这五把刀接上,谁的单位经济模型就能再压一个数量级。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
cost-hacks(成本优化)[!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 等场景全覆盖。
