大多数人省钱,眼睛只盯着"模型单价"——GPT-4o 多少刀一百万 token、Claude 多少刀、DeepSeek 多少刀。但你可能没意识到:同样一句话,中文喂进去的 token 数是英文的 2–3 倍,这笔钱从来没人告诉你。叠加每次请求都重传的 system prompt、塞了 20 个例子的 few-shot、还有一堆没人看的客套话——你的 API 账单里有 30%–50% 是"空气"。这一篇拆开输入侧的三种"隐形税",给你五把能立刻退款的刀。最狠的一把,是搞懂 Tokenizer 经济学,光换模型就能让中文账单腰斩。
把一个 API 请求的 token 流画清楚,漏洞一目了然:
flowchart LR
U["你的输入"] --> Q{"进入模型计费"}
Q -->|重复税| R1["每次重传的\nsystem prompt / 大文档"]
Q -->|废话税| R2["客套话·重复说明\n冗余JSON·过时示例"]
Q -->|中文税| R3["中文一字≈2 token\n英文一字≈0.25 token"]
Q -->|往返税| R4["格式不稳\n多轮纠错重发"]
Q -->|示例税| R5["few-shot\n塞20个例子"]
R1 -->|刀一:Prompt Cache| F1["砍90%"]
R2 -->|刀二:LLMLingua-2| F2["砍80%"]
R3 -->|刀三:选对tokenizer| F3["砍50-70%"]
R4 -->|刀五:结构化输出| F4["砍往返轮次"]
R5 -->|刀四:精选few-shot| F5["砍75%"]
F1 & F2 & F3 & F4 & F5 --> SAVE["实付token\n降到原来的15-30%"]
style R3 fill:#ffe0e0
style F3 fill:#d4f7d4
style SAVE fill:#fff3b0
五种浪费里,中文税是最隐蔽、最反直觉、也最容易退的——所以这一篇把它当主角讲透。
OpenAI 的 tokenizer(cl100k_base,GPT-4 / GPT-3.5 用的)是基于字节对编码(BPE)训练的,训练语料以英文为主。英文常见词直接合并成一个 token,大约 1 个 token ≈ 0.75 个英文单词。
但中文不走运:每个汉字在 UTF-8 里是 3 个字节,BPE 又没给中文攒出多少合并规则,结果常常是一个汉字拆成 1.5–2.5 个 token。一句同样的意思,英文 10 token,中文可能 25–40 token。API 按 token 收费,等于中文用户为单位"信息"付了 2–3 倍的钱——而且上下文窗口也被中文吃掉一大块,留给输出的空间更小,延迟更高。
转折点来了:GPT-4o 换了 tokenizer。 新的 o200k_base 是重做多语言版,中文效率大幅提升,一个汉字 ≈ 0.6–1.0 token,比 cl100k_base 砍了 50%–70%。也就是说:你以为 GPT-4o 只是"新一代",对中文用户它还是个隐形的半价开关——同样一段中文 prompt,光换模型,输入 token 就少了一大半。
更狠的是国产 tokenizer:通义 Qwen、智谱 GLM、DeepSeek 这些针对中文优化的 tokenizer,中文能做到 0.6–0.8 字/token,比 o200k_base 还省。如果你的业务是纯中文、长上下文(比如中文 RAG、客服、合同分析),用国产模型不只是"便宜",而是tokenizer 本身就帮你少烧一半 token。
退中文税的三种姿势:
o200k_base。GPT-4 的 cl100k_base 对中文是"双倍计费"。信息差提醒:别再用
cl100k_base估中文 token。写代码做成本预估时,用tiktoken.encoding_for_model("gpt-4o")拿到o200k_base,否则你的预算会系统性高估 1.5–2 倍。
如果你的每个请求都带着同一个 system prompt、同一份产品文档、同一组规则——你每次都在为这些完全不变的内容付全价。这就是重复税。
Anthropic(Claude)的 Prompt Caching:在 API 请求里给不变的部分打上 cache_control 标记,模型会把这段的中间状态(KV cache)缓存住,TTL 默认 5 分钟,命中即续期。价格结构是:
OpenAI 则是自动的:任何超过 1024 token 的相同前缀,自动缓存,缓存命中部分的输入价打 5 折。你不用改代码。
回本数学(公开标价示例,请以官方为准):假设你有个 8000 token 的 system prompt + 文档,每个会话调 10 次。Claude 3.5 Sonnet 输入价约 $3/M token。 - 不开缓存:每次都全价算 8000 token。 - 开缓存:第一次写缓存(8000 × 1.25 × $3/M ≈ $0.03),后面 9 次命中(8000 × 0.1 × $3/M ≈ $0.0024/次)。一个会话省下约 80% 的输入费。 - 用户越多、对话越长,省得越夸张。凡是有"固定大前缀"的场景(客服 bot、代码助手、文档问答),不开缓存就是在烧钱。
注意:Prompt Caching 是精确前缀匹配(缓存的是同一串字符的 KV 状态),和上一轮讲过的"语义缓存"(把相似问题挡在模型门外)是两码事——一个是复用计算,一个是干脆不调用。两者叠加才猛。
Prompt Caching 解决"重复的固定内容",那每次都不一样的、却又啰嗦的内容怎么办?比如:用户随手粘进来的长文档、塞满水词的工单、一个写了 2000 字其实 500 字够用的需求。
微软开源的 LLMLingua-2(仓库 microsoft/LLMLingua)就是干这个的:它用一个 BERT 分类器,对 prompt 里的每个 token 打分——"这个 token 删掉,意思会不会丢?"——然后按你设的压缩率,把低分 token 删掉。压缩比 2×–10×,文档越长省得越多。
和初代 LLMLingua(用小语言模型按困惑度打分、自回归、慢)相比,LLMLingua-2 用 BERT 并行处理,快得多,压缩也更忠实。它尤其适合 RAG 场景:检索回来一堆 chunks,先压一遍再喂模型,既省钱又能塞更多上下文。
怎么用(开源,自托管,免费):
from llmlingua import PromptCompressor
llm_lingua = PromptCompressor(model_name="microsoft/llmlingua-2-xlm-roberta-large",
use_llmlingua2=True)
compressed = llm_lingua.compress_prompt(
your_long_prompt,
rate=0.33, # 压到原来的1/3
force_tokens=['\n', '?', '.'] # 换行和标点别压
)
# compressed['compressed_prompt'] 就是瘦身后的版本
成本权衡:压缩本身要跑个小模型(有 GPU/算力成本),所以它适合单次 prompt 很长、且会被复用或多次调用的场景。如果 prompt 本来就短,别折腾,直接发。经验值:prompt 超过 2000 token,压缩才划算。
这是中文开发者最常见的浪费。为了让模型"稳定输出",很多人在 prompt 里塞 10–20 个 few-shot 示例,每个请求都带。示例越多 → 输入 token 越大 → 账单越炸。
三个退法:
最后一种浪费最阴险——格式不稳导致的来回重试。模型这次吐了 JSON 少个逗号、那次多了句废话,你的代码 try/except 重试一遍,每次重试都是一整次全价调用。3 轮重试 = 3 倍账单。
解法是结构化输出,一轮搞定:
一条铁律:凡是程序要解析的模型输出,必须用结构化输出强制约束。 否则你是在为"模型偶尔犯的格式错误"反复买单。
| 维度 | 大多数人以为 | 实际的信息差 |
|---|---|---|
| 省钱重点 | 比模型单价 | 输入侧有 30%–50% 是空气,单价只是冰山一角 |
| 中文成本 | 中文英文一样 | 中文 token 是英文 2–3 倍,换 GPT-4o 直接砍 50%–70% |
| 固定前缀 | 每次都得发 | Prompt Cache 读取只收 0.1×,砍 90% |
| 长 prompt | 没法省 | LLMLingua-2 能压 2–10×,开源免费 |
| few-shot | 越多越稳 | 5 个以上边际为零,固化成 fine-tune 更省 |
| 格式输出 | 多试几次就好 | Structured Outputs 一轮锁定,砍往返税 |
| 成本预估 | 按经验拍脑袋 | 用 tiktoken 精确计数,别用 cl100k_base 估中文 |
按性价比排序,照着做,一周内能看到账单变化:
cache_control;OpenAI 超过 1024 token 自动)。这是最快见效的一刀。cl100k_base)。 纯中文场景能上 GPT-4o 就上,或优先国产模型(Qwen / GLM / DeepSeek)——tokenizer 本身就帮你砍一半中文 token。tiktoken.encoding_for_model() 精确计数。 别再按字数瞎估,中文会被你高估 2 倍。tiktoken 库(精确计数):https://github.com/openai/tiktoken本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
chart-craft 把文末对比表生成信息图,或把 Mermaid 流程图导出 PNG。[!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 等场景全覆盖。
