调用大模型 API 的成本由三个变量决定:用了哪个模型、输入了多少 token、输出了多少 token。理解这三个变量,才能在不影响效果的前提下把费用控制在合理范围内。
Token 计费基础
所有大模型 API 按 token 计费,而非按字符或字数:
费用 = 输入token数 × 输入单价 + 输出token数 × 输出单价
估算 token 数(经验值):
| 内容 | Token 估算 |
|---|---|
| 1000 个英文单词 | ≈ 750 token |
| 1000 个汉字 | ≈ 700-1000 token |
| 1 页 A4 文档(中文) | ≈ 500-800 token |
| 1000 行代码 | ≈ 1500-2500 token |
| 1 小时对话记录 | ≈ 3000-8000 token |
使用工具实测比估算更准确,尤其是混合中英文、代码混排的场景。
主流模型价格对比(2026-05)
| 模型 | 输入(/M token) | 输出(/M token) | Context |
|---|---|---|---|
| Claude Haiku 4.5 | $0.80 | $4.00 | 200K |
| Claude Sonnet 4.6 | $3.00 | $15.00 | 200K |
| Claude Opus 4.7 | $15.00 | $75.00 | 200K |
| GPT-4o | $2.50 | $10.00 | 128K |
| GPT-4o-mini | $0.15 | $0.60 | 128K |
| Gemini 2.0 Flash | $0.10 | $0.40 | 1M |
| Gemini 2.5 Pro | $1.25 | $10.00 | 1M |
| DeepSeek-V3 | $0.27 | $1.10 | 64K |
| Qwen-Max | ¥0.04 | ¥0.12 | 32K |
价格随时调整,以各平台官网为准。国产模型(DeepSeek、Qwen)通常有人民币计价版本。
Context Window 的费用影响
对话历史累积
多轮对话时,每次请求都要把历史消息带上(否则模型不知道上文):
第 1 轮:输入 = 系统提示(500) + 用户消息(50) = 550 token
第 2 轮:输入 = 系统提示(500) + 第1轮对话(150) + 用户消息(50) = 700 token
第 3 轮:输入 = 系统提示(500) + 前2轮对话(400) + 用户消息(50) = 950 token
第 N 轮:输入随对话轮数线性增长
10 轮对话后,每次请求的输入 token 可能是第 1 轮的 3-5 倍。
控制成本的方法:
- 摘要压缩:超过一定轮数后,把早期对话压缩成摘要,替换原始内容
- 滑动窗口:只保留最近 N 轮对话
- 关键信息提取:只保留对话中的关键决策和结论
文档问答
RAG(检索增强生成)比”把整个文档塞进 context”更经济:
整文档塞入:
输入 = 系统提示(500) + 完整文档(50000) + 问题(50) = 50550 token/次
100 次问答 = 5,055,000 input token
RAG(只检索相关段落):
输入 = 系统提示(500) + 相关段落(2000) + 问题(50) = 2550 token/次
100 次问答 = 255,000 input token(节省 95%)
模型选型决策树
任务是格式转换/分类/提取?
├── 是 → 小模型(Haiku/GPT-4o-mini/Gemini Flash)
└── 否 → 继续
需要复杂推理/代码生成/创意写作?
├── 是 → 大模型(Sonnet/GPT-4o/Gemini Pro)
└── 否 → 中等模型(Sonnet/GPT-4o-mini)
延迟敏感(实时交互)?
├── 是 → 优先快速模型(Flash/Haiku/mini)
└── 否 → 可用较慢的高质量模型
成本敏感(批量处理)?
├── 是 → 小模型 + Prompt Caching
└── 否 → 按任务需求选
Prompt Caching 省钱实践
适合缓存的内容:长系统提示、固定参考文档、few-shot 示例集。
Claude Prompt Caching 示例(Python):
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
system=[
{
"type": "text",
"text": "你是一名法律助手...", # 短系统提示不缓存
},
{
"type": "text",
"text": open("法律条文参考.txt").read(), # 长文档缓存
"cache_control": {"type": "ephemeral"}, # 标记为可缓存
}
],
messages=[{"role": "user", "content": "第23条怎么理解?"}]
)
# 查看缓存命中情况
usage = response.usage
print(f"缓存命中: {usage.cache_read_input_tokens} tokens")
print(f"缓存写入: {usage.cache_creation_input_tokens} tokens")
缓存写入有额外费用(约输入价格的 25%),但后续命中时节省 90%,多次调用后快速回本。
批量处理的成本优化
不需要实时响应的任务,用 Batch API 通常有 50% 折扣:
# Claude Batch API
client.messages.batches.create(
requests=[
{"custom_id": "task-1", "params": {"model": "...", "messages": [...]}},
{"custom_id": "task-2", "params": {"model": "...", "messages": [...]}},
]
)
# 提交后异步处理,24 小时内返回结果,价格 5 折
适合场景:批量文档分类、离线数据处理、定期报告生成。
国产 API 对比
| 平台 | 主力模型 | 优势 | 适用场景 |
|---|---|---|---|
| 阿里云百炼 | Qwen-Max / Plus | 中文理解强、价格低 | 中文业务场景 |
| DeepSeek | DeepSeek-V3 / R1 | 性价比极高、推理强 | 代码、数学、推理 |
| 智谱 AI | GLM-4 | 国产合规、企业部署 | 政企场景 |
| 月之暗面 | Moonshot | 超长 context(1M) | 超长文档处理 |
| 百度文心 | ERNIE 4.5 | 百度生态集成 | 搜索增强场景 |
配套工具
- LLM Token 计数 — 准确计算 prompt 的 token 数,估算费用
- JSON 工具 — 格式化和验证 API 请求/响应的 JSON
- HAR 文件分析 — 抓包分析 API 调用的实际请求内容