你以为按 token 计费很透明?大错特错。各大 AI 厂商的定价策略里藏着大量"暗坑"——同样的任务,有人花 $50,有人只花 $3,差距全在你看不见的地方。本文深挖 Anthropic、OpenAI、Google 三家的定价机制,拆解 Prompt Caching、Batch API、Model Routing 等省钱利器,附带完整的价格对比表和实战配置方案。读完这篇,你的 API 账单至少砍掉一半。
很多人只看"每百万 token 价格"就做了决策,但忽略了一个关键事实:Output Token 的价格通常是 Input 的 3-5 倍。
| 模型 | Input ($/1M tokens) | Output ($/1M tokens) | 倍率 |
|---|---|---|---|
| Claude Sonnet 4 | $3.00 | $15.00 | 5x |
| Claude Haiku 3.5 | $0.80 | $4.00 | 5x |
| GPT-4o | $2.50 | $10.00 | 4x |
| GPT-4o-mini | $0.15 | $0.60 | 4x |
| Gemini 2.5 Flash | $0.15 | $0.60 | 4x |
| Gemini 2.5 Pro | $1.25 | $10.00 | 8x |
这意味着什么?控制 output 长度比精简 input 更重要。 一个让模型"自由发挥"返回 2000 token 的请求,和一个精确指令只返回 200 token 的请求,成本差 10 倍。
破解法:
- 始终设置 max_tokens 参数,别让模型废话
- 在 system prompt 中明确要求"简洁回答"或"仅返回 JSON"
- 使用 stop_sequences 在合适的位置截断输出
- 要求结构化输出(JSON mode)比自然语言更省 token
每次 API 调用,你都在重新发送 system prompt、工具定义、few-shot 示例。一个典型的对话式应用,system prompt 可能占 2000-5000 token,但每次请求都要重新计费。
假设你每天处理 10,000 次请求,system prompt 3000 token: - 每天浪费的 input token:3000 × 10,000 = 30M tokens - 用 Claude Sonnet 4 计算:30M × $3/1M = $90/天 = $2,700/月 纯粹在重复发一样的文字
这就是 Prompt Caching 要解决的问题。
flowchart LR
A[API请求] --> B{缓存命中?}
B -->|首次| C[全价处理<br/>写入缓存]
B -->|命中| D[缓存价处理<br/>省90%]
C --> E[返回结果]
D --> E
style C fill:#ff6b6b,color:#fff
style D fill:#51cf66,color:#fff
style B fill:#ffd43b,color:#333
Anthropic 的 Prompt Caching: - 缓存命中的 token 价格降低 90% - 缓存有效期:5 分钟(最后使用时间起算) - 适用场景:长 system prompt、工具定义、RAG 上下文、few-shot 示例
具体配置代码(Python):
import anthropic
client = anthropic.Anthropic()
# 第一次请求:标记要缓存的部分
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
system=[
{
"type": "text",
"text": "你是一个专业的代码审查助手..." * 100, # 大段 system prompt
"cache_control": {"type": "ephemeral"} # 标记缓存
}
],
messages=[
{"role": "user", "content": "审查这段代码:..."}
]
)
# 首次:全价。后续5分钟内的请求:缓存部分打1折
Google Gemini 的 Context Caching: - 支持 Gemini 1.5 Pro 和 Flash - 缓存存储费用:$4.50/1M tokens/天(Pro) - 默认 TTL 可自定义,最长支持数天
省钱计算:
| 场景 | 无缓存月费 | 有缓存月费 | 节省 |
|---|---|---|---|
| 客服机器人(10K请求/天) | $2,700 | $300 | 89% |
| 代码审查工具(5K请求/天) | $1,350 | $180 | 87% |
| 文档问答系统(2K请求/天) | $540 | $75 | 86% |
Anthropic Message Batches: - 在标准价格基础上再打 50% - 24 小时内返回结果(通常几小时内) - 单次最多 10,000 条消息
OpenAI Batch API: - 同样 50% 折扣 - 24 小时完成窗口 - 支持 GPT-4o、GPT-4o-mini 等模型
适用场景清单: - 数据标注和分类 - 批量文本摘要 - 评估/评测任务 - 大规模内容生成 - 日志分析和报告生成
# Anthropic Batch API 示例
batch = client.messages.batches.create(
requests=[
{
"custom_id": "request-1",
"params": {
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "分类这段文本:..."}
]
}
},
# ... 可以一次提交上千条
]
)
# 50% 折扣,结果在24小时内返回
组合拳:Prompt Caching + Batch API
两个折扣可以叠加!在 batch 请求中使用缓存 system prompt: - Batch 50% × 缓存 90% off = 原价的 5%-10% - 1 万条分类任务原价 $150,优化后仅 $8-15
大部分请求根本不需要最强模型。一个智能的路由层可以把成本再砍 60-80%。
flowchart TD
A[用户请求] --> B{任务复杂度判断}
B -->|简单分类/提取| C[Haiku / mini<br/>$0.15-0.80/1M input]
B -->|常规对话/写作| D[Sonnet / GPT-4o<br/>$2.50-3.00/1M input]
B -->|复杂推理/代码| E[Opus / o3<br/>$15-60/1M input]
style C fill:#51cf66,color:#fff
style D fill:#ffd43b,color:#333
style E fill:#ff6b6b,color:#fff
路由策略实现:
import re
def route_request(task: str, complexity_signals: dict) -> str:
"""根据任务复杂度路由到最经济的模型"""
# 简单任务 → 最便宜模型
simple_patterns = [
r"分类|提取|格式化|翻译短句",
r"is this|yes or no|classify",
]
# 中等任务 → 中端模型
medium_signals = [
complexity_signals.get("input_length", 0) < 5000,
not complexity_signals.get("requires_reasoning", False),
]
for pattern in simple_patterns:
if re.search(pattern, task, re.IGNORECASE):
return "claude-3-5-haiku" # 或 gpt-4o-mini
if all(medium_signals):
return "claude-sonnet-4" # 或 gpt-4o
return "claude-opus-4" # 仅复杂任务用最强模型
实际分配比例(典型 SaaS 应用):
| 任务类型 | 占比 | 推荐模型 | 月成本(100万请求) |
|---|---|---|---|
| 意图分类 | 40% | Haiku / mini | $120 |
| 日常对话 | 35% | Sonnet / 4o | $1,750 |
| 复杂推理 | 15% | Sonnet / 4o | $1,500 |
| 极难任务 | 10% | Opus / o3 | $4,500 |
| 总计 | 100% | 智能路由 | $7,870 |
vs 全部用最强模型:约 $39,000/月。路由层直接省了 80%。
graph LR
subgraph 自建方案
A1[GPU服务器<br/>8×H100 ≈ $250K] --> A2[3年摊销<br/>≈ $6,944/月]
A2 --> A3[电费+运维<br/>≈ $2,000/月]
A3 --> A4[人力成本<br/>≈ $8,000/月]
A4 --> A5[总计 ≈ $17,000/月]
end
subgraph API方案
B1[按量付费<br/>弹性扩展] --> B2[日均100M tokens<br/>≈ $15,000-50,000/月]
end
A5 --> C{盈亏平衡点<br/>≈ 日均80-120M tokens}
B2 --> C
style C fill:#ffd43b,color:#333
style A5 fill:#ff6b6b,color:#fff
关键数据: - 日均 < 50M tokens:用 API 更划算 - 日均 50M-100M tokens:考虑第三方推理服务(Together AI、Fireworks、Groq) - 日均 > 100M tokens:自建开始有优势 - 日均 > 500M tokens:自建几乎是唯一经济选择
不想自己运维 GPU,又觉得大厂 API 太贵?第三方推理服务是个好选择:
| 服务商 | 模型支持 | 价格(相对官方) | 延迟 | 特点 |
|---|---|---|---|---|
| Together AI | Llama、Mistral、Qwen 等 | 官方 30-60% | 低 | 开源模型为主 |
| Fireworks AI | Llama、Mixtral 等 | 官方 30-50% | 极低 | 推理速度极快 |
| Groq | Llama、Mixtral 等 | 免费/低价 | 超低 | LPU 硬件加速 |
| DeepInfra | 多种开源模型 | 官方 40-70% | 低 | 按量计费灵活 |
| OpenRouter | 全部主流模型 | 略有折扣 | 中 | 一站式路由 |
用 OpenRouter 做智能路由的最佳实践:
import openai # OpenRouter 兼容 OpenAI SDK
client = openai.OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="your-openrouter-key"
)
# 简单任务用便宜模型
response = client.chat.completions.create(
model="meta-llama/llama-3-70b-instruct", # 开源模型,价格极低
messages=[{"role": "user", "content": "将这段文本翻译为英文"}],
max_tokens=500
)
| 平台 | 免费额度 | 限制 | 适合 |
|---|---|---|---|
| Google Gemini API | 15 RPM, 1M tokens/天 | 仅 Flash 模型 | 个人开发/学习 |
| Groq | 免费额度慷慨 | 速率限制 | 快速原型验证 |
| Cohere | 免费API key | 速率限制 | 文本嵌入/分类 |
| HuggingFace Inference | 免费推理API | 队列等待 | 实验验证 |
| Cloudflare Workers AI | 10K neurons/天免费 | 模型有限 | 边缘推理 |
| GitHub Models | 免费 | 速率限制 | Copilot 生态 |
| Ollama (本地) | 完全免费 | 需要本地GPU | 隐私敏感场景 |
flowchart TD
A[零成本AI开发栈] --> B[代码补全<br/>Codeium Free Tier]
A --> C[对话AI<br/>Ollama + Qwen2.5-Coder]
A --> D[嵌入模型<br/>HuggingFace + BGE-M3]
A --> E[图像生成<br/>ComfyUI + SD 3.5 Local]
A --> F[向量数据库<br/>ChromaDB / Qdrant 本地]
B --> G[总成本:$0]
C --> G
D --> G
E --> G
F --> G
style G fill:#51cf66,color:#fff
style A fill:#339af0,color:#fff
很多人的 system prompt 像写散文一样冗长。一段 500 token 的 system prompt 可以压缩到 100 token,效果几乎不变。
优化前(320 tokens):
You are a helpful customer service assistant for a technology company called TechCorp. You should always be polite, professional, and empathetic. When customers ask about products, refer to the product catalog. When they ask about returns, follow the return policy. If you don't know the answer, say so honestly and offer to connect them with a human agent. Always greet the customer warmly...
优化后(85 tokens):
TechCorp客服。礼貌专业。产品→查目录。退货→按退货政策。不知→如实说+转人工。先问候。
中文 prompt 比英文更省 token(中文字符密度更高),这是很多中国开发者不知道的优势。
# 不用 JSON mode - 模型会加大量解释文字
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "这个评论是正面还是负面的?"}]
)
# 输出:"这个评论表达了积极的态度,用户对产品质量很满意,因此判断为正面评价。"
# 消耗约 40 tokens
# 用 JSON mode - 直接返回结构
response = client.chat.completions.create(
model="gpt-4o-mini",
response_format={"type": "json_object"},
messages=[{"role": "user", "content": "分类:正面/负面。返回JSON: {sentiment, confidence}"}]
)
# 输出:{"sentiment":"positive","confidence":0.95}
# 消耗约 15 tokens — 省62%
对于相似但不完全相同的查询,传统缓存无法命中。语义缓存通过向量相似度匹配"意思相近"的请求,直接返回缓存结果。
推荐工具: - GPTCache:开源语义缓存库 - Redis + Sentence Transformers:自建方案
from gptcache import Cache
from gptcache.adapter import openai
cache = Cache()
cache.init(
pre_embedding_func=get_prompt, # 提取查询
embedding_func=to_embeddings, # 向量化
data_manager=data_manager, # 存储管理
similarity_evaluation=sim_eval, # 相似度阈值
)
# 相似问题直接返回缓存
cached_response = openai.ChatCompletion.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Python怎么读取CSV文件"}],
cache_obj=cache # 命中"如何用Python读CSV"等相似问题
)
| 维度 | 大多数人知道的 | 少数人知道的 |
|---|---|---|
| 定价结构 | 看单价选模型 | Output 比 Input 贵 3-5 倍,控制输出才是关键 |
| 缓存策略 | 不知道有缓存机制 | Prompt Caching 省 90%,Batch API 省 50%,可叠加 |
| 模型选择 | 全部用最强模型 | 70% 任务用便宜模型就够,路由层省 80% |
| 自建 vs API | 非此即彼 | 第三方推理服务是甜蜜点,价格仅官方 30-60% |
| 免费方案 | 只知道 ChatGPT 免费版 | Gemini Flash 1M tokens/天免费,Ollama 完全零成本 |
| Token 优化 | 随意写 prompt | 中文 prompt 更省 token,JSON mode 省输出 60% |
| 语义缓存 | 精确匹配缓存 | GPTCache 按语义匹配,命中率提升 5-10 倍 |
审计现有 API 用量:登录 Anthropic/OpenAI Dashboard,按模型查看用量分布。你会惊讶地发现有多少请求不应该用贵模型。
开启 Prompt Caching:如果你的 system prompt 超过 1000 token,在请求中加 cache_control 标记。改动不到 5 行代码,立即省 90%。
给所有请求加 max_tokens:防止模型无限输出。根据任务类型设定合理上限(分类 50、翻译 500、写作 2000)。
实现 Model Router:按任务复杂度分流。先用规则判断(关键词、prompt 长度),后期可以训练一个小分类器。
将非实时任务迁移到 Batch API:数据分析、批量分类、评估任务全部走 Batch,直接打五折。
接入第三方推理服务:注册 Together AI 或 Fireworks,把开源模型的工作量转移过去,成本降 50-70%。
对于一个日均 100 万次 API 调用的中型 SaaS: - 仅开启 Prompt Caching:月省 $3,000-5,000 - 加上 Model Router:月省 $10,000-15,000 - 加上 Batch API(30% 任务适合):再省 $3,000-5,000 - 总计:月省 $15,000-25,000,降幅 50-70%
本文由「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 等场景全覆盖。
