大模型 API 选型:context window 怎么影响费用,输入输出 token 怎么算

· 约 4 分钟 🤖 大模型 API 速查

调用大模型 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.00200K
Claude Sonnet 4.6$3.00$15.00200K
Claude Opus 4.7$15.00$75.00200K
GPT-4o$2.50$10.00128K
GPT-4o-mini$0.15$0.60128K
Gemini 2.0 Flash$0.10$0.401M
Gemini 2.5 Pro$1.25$10.001M
DeepSeek-V3$0.27$1.1064K
Qwen-Max¥0.04¥0.1232K

价格随时调整,以各平台官网为准。国产模型(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 倍。

控制成本的方法

  1. 摘要压缩:超过一定轮数后,把早期对话压缩成摘要,替换原始内容
  2. 滑动窗口:只保留最近 N 轮对话
  3. 关键信息提取:只保留对话中的关键决策和结论

文档问答

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中文理解强、价格低中文业务场景
DeepSeekDeepSeek-V3 / R1性价比极高、推理强代码、数学、推理
智谱 AIGLM-4国产合规、企业部署政企场景
月之暗面Moonshot超长 context(1M)超长文档处理
百度文心ERNIE 4.5百度生态集成搜索增强场景

配套工具

❓ 常见问题

token 和字符、汉字是什么关系?

英文约 4 字符 = 1 token,中文约 1-2 汉字 = 1 token(GPT 系列 tiktoken 分词器的经验值)。具体比例因模型分词器不同而异:GPT-4 / GPT-4o 用 cl100k_base——英文单词通常 1-2 token,中文每个汉字约 1 token(部分常用字)到 2 token(生僻字);Claude 系列——和 GPT 接近,中文约 1-1.5 token / 汉字;Llama / Mistral 开源模型——中文分词效率普遍更低,一个汉字可能对应 2-3 token,用中文场景成本更高。实际计算建议用工具实测,而不是套公式估算。

context window 越大越好吗?选多大合适?

不是越大越好——长 context 的单价更高,而且并非所有场景都需要。context window 是单次请求能处理的最大 token 数(输入 + 输出的总和或分别限制)。选型逻辑:(1) 聊天机器人(短对话)→ 8K-32K 足够,历史消息可以做摘要压缩;(2) 文档问答(上传 PDF 问问题)→ 取决于文档长度,一般 32K-128K;(3) 代码补全(补全一个函数)→ 4K-8K,上下文是周围代码;(4) 长文档处理(合同审查、书籍摘要)→ 128K+;(5) 多轮复杂推理(数学证明、代码重构)→ 需要大 context 保持推理链完整。不需要长 context 时选短 context 版本,每次请求省钱明显。

输入 token 和输出 token 为什么价格不同?

输出 token 需要逐个生成(自回归),计算量远大于输入。输入 token:模型一次性读取全部输入,做前向推理(一次矩阵乘法),相对便宜;输出 token:模型每生成一个 token 都要做一次前向推理,N 个输出 token 就要做 N 次,GPU 计算量是输入的 N 倍,所以贵。典型价格比(输入 : 输出):GPT-4o 约 1:4,Claude Sonnet 约 1:5,Gemini Flash 约 1:4。实践意义:(1) 用 few-shot 示例(输入)替代让模型自己想(输出),省钱;(2) 要求模型"直接给答案不解释"——减少输出 token;(3) 流式输出(streaming)不影响费用,只影响响应体验。

哪些场景用小模型够用,哪些必须用大模型?

按任务复杂度选模型,不要默认用最强的。小模型(Haiku / GPT-4o-mini / Gemini Flash)够用的场景:(1) 格式转换(JSON ↔ CSV、代码格式化);(2) 简单分类(情感分析、意图识别);(3) 关键词提取、摘要(结构清晰的文本);(4) 翻译(通用文本);(5) 固定模板填充。需要大模型(Opus / GPT-4o / Gemini Pro)的场景:(1) 复杂推理(数学证明、多步逻辑);(2) 代码生成(复杂业务逻辑、多文件改动);(3) 创意写作(高质量要求);(4) 模糊指令理解(用户输入随意、格式多变);(5) 需要专业知识判断的任务。价格差距:小模型通常比大模型便宜 10-20 倍,先用小模型测效果,不满意再升。

Prompt Caching 是什么,能省多少钱?

把重复的长 prompt(系统提示、文档内容)缓存在服务端,后续请求命中缓存的部分按折扣价计费。支持情况:Claude 支持 Prompt Caching(缓存命中约 90% 折扣);OpenAI 支持 Prompt Caching(自动生效,缓存命中 50% 折扣);Gemini 支持 Context Caching(需手动配置)。适用场景:系统 prompt 很长(几千 token 的角色设定、规则集)+ 多次调用 API——第一次写入缓存,后续命中缓存只收折扣价。不适用:每次请求 prompt 都完全不同、输入 token 很少(缓存节省额不值缓存写入开销)。单次对话里换了系统 prompt 就会缓存 miss,适合批量处理同类任务。

🤖 打开 大模型 API 速查 50+ 主流 LLM 按 13 家厂商对照·GPT-5/Claude/Gemini/DeepSeek/Qwen/Kimi/豆包·model ID/endpoint/上下文/价格/视觉/工具/推理/缓存/国内可达