大模型 Token定义解析(详解输入 Token 与输出 Token 的计费差异)

把成本预测算清楚,先把”输入/输出 token 各按多少钱计费”区分开。Token 是大模型处理文本的最小单位,1 个 token 大约对应 3-4 个英文字符或 1 个中文字;输入 token 是你发给模型的内容(system prompt、上下文、对话历史),输出 token 是模型实际生成的回答。绝大多数商业 API(如 OpenAI、Anthropic、Google)都把输出 token 单价定在输入 token 的 3-5 倍——根本原因是输出要逐 token 自回归生成,每一步都要跑一次完整的前向计算。团队在搭建知识库问答时,最初按”消息长度=成本”做预算,结果月末账单比预估多出 2 倍多;查账才发现,问题不是输入 token,而是模型给出的长篇解释把输出 token 顶到了预算外。理解这个差异,是把大模型应用从”烧钱”做成”可预测成本”的第一步。

一、Token 到底是什么、长什么样

主流 tokenizer(如 BPE、WordPiece、SentencePiece)会把文本切成子词单元。”ChatGPT is amazing!” 在 GPT 风格的 BPE 下会被切成 ["Chat", "G", "PT", " is", " amazing", "!"] 共 6 个 token;中文因字符级切分更细,1 个汉字常对应 1-2 个 token。不同模型的 tokenizer 不可互换——同一段中文在 GPT、Claude、Gemini 上的 token 数可能差 20%。

文本类型 粗略 token/字 比例 含义
英文 1 token ≈ 0.75 个英文单词 BPE 切子词
中文 1 token ≈ 1-2 个汉字 字符级粒度较细
代码(Python) 1 token ≈ 4-6 字符 关键字与符号密集
JSON / 结构化数据 1 token ≈ 3-4 字符 标点和引号占多

计费上,所有主流厂商都按”每百万 token 单价”报价,输入、输出、缓存命中分别标价。把业务请求的”输入 token 数 + 输出 token 数 × 倍率”算清楚,基本能预测单次成本。

二、输入 / 输出计费的差异与原理

计费差异不是市场策略,而是计算成本差异。输入 token 是一次性前向并行处理(一次吃下整段上下文),输出 token 则是逐 token 自回归——每生成一个新 token 都把之前所有 token 重新跑一次前向。序列越长,输出成本越接近”输入 × 序列长度”的平方级增长。

下面这张表汇集了 2025 年主流模型在输入、输出、缓存命中三个维度的报价(每百万 token,美元):

模型 输入 输出 缓存读取 缓存写入
GPT-4o 2.50 10.00 1.25 —
GPT-4o mini 0.15 0.60 0.075 —
o1(推理档) 15.00 60.00 7.50 —
Claude Sonnet 4.5 3.00 15.00 0.30 3.75
Claude Haiku 3.5 0.80 4.00 0.08 1.00
Gemini 2.0 Flash 0.10 0.40 0.025 —
DeepSeek V3 0.27 1.10 0.07 —

从这张表能直接读出三件事:

  1. 输出普遍是输入的 3-5 倍:Sonnet 4.5 是 5 倍、GPT-4o 是 4 倍、o1 是 4 倍。
  2. 缓存读取单价极低:Sonnet 4.5 缓存读仅 0.30,约是标准输入价的 1/10,适合大段 system prompt 或文档前缀。
  3. 推理档模型单价高一个量级:o1 输出 60 美元/百万 token,复杂推理用得起就用、用不起就降档。

用 GPT-4o 算一笔具体账:1 个月跑 1 万次客服问答,每次输入 500 token、输出 300 token——输入成本 = (500 × 10,000 / 1M) × 2.50 = 12.5 美元;输出成本 = (300 × 10,000 / 1M) × 10.00 = 30 美元;总成本 42.5 美元。输出占七成。把同样的输入换成 Claude 3.5 Sonnet 3 美元 / 15 美元,总成本反而升到 60 美元——可见”输入便宜、输出贵”在比价时不能只看输入价。

三、Agent 与多轮对话里的成本放大效应

单次问答的输入/输出还算可控;进入 Agent 场景后,成本会被”循环调用 + 历史累积”迅速放大。每次 tool call 后,模型要把累积的对话历史(含工具返回值)整体作为下一轮输入再发一次;20 步的 agent run 实际输入 token 可能是单轮的 10-20 倍。估算 Agent 成本的标准做法是:单轮成本 × 期望步数 × 1.3(给重试和上下文膨胀留余量)。

下面这段用 Anthropic SDK 做 token 计数和成本预估的代码,可以直接嵌入 Agent 入口:

import anthropic

client = anthropic.Anthropic()

# 第一步:先 count_tokens,避免把超长上下文直接发出去
count = client.messages.count_tokens(
    model="claude-sonnet-4-5",
    messages=[{"role": "user", "content": very_long_document}],
)
print(f"input tokens = {count.input_tokens}")

# 第二步:估算单次成本(每百万 token 单价,美元)
PRICE_INPUT  = 3.00
PRICE_OUTPUT = 15.00
expected_output_tokens = 400

estimated_cost = (
    count.input_tokens / 1_000_000 * PRICE_INPUT
    + expected_output_tokens / 1_000_000 * PRICE_OUTPUT
)
print(f"estimated cost = ${estimated_cost:.4f}")

# 第三步:超过预算就降档或截断上下文
if estimated_cost > 0.05:
    context = trim_to_budget(very_long_document, budget_tokens=2000)

注意三件事:count_tokens 与最终实际计费 token 数会有少量偏差(特殊 token、role 标签等);expected_output_tokens 只能估,最终账单以模型实际生成的 token 数为准;缓存命中后实际计费会显著低于估算。

四、几条被反复验证的省钱策略

第一个策略是”按任务难度分模型”。能用 GPT-4o mini 解决的 FAQ,就别上 Sonnet;能用 Sonnet 解决的,就别上 Opus。简单分类+路由能砍掉 40%-70% 的账单。

第二个策略是”prompt 缓存”。当 system prompt + 大段文档前缀在多次请求中复用,Anthropic 的 cache read 单价是 0.30 美元/百万 token,仅是标准输入的 1/10;OpenAI 的自动缓存对超 1024 token 的前缀也给到 50% 折扣。

第三个策略是”控制输出长度”。明确要求”用 3 句话以内回答”或”以 JSON 列表返回”,能直接把输出 token 砍掉 30%-50%,同时还让解析更确定。批量任务用 Batch API(异步、24h 返回)能再打 5 折。

到这里,Token 是什么、输入/输出计费为什么差这么多、Agent 场景怎么预估成本、降本的核心套路就讲完了。账单失控往往不是因为单次贵,而是低估了”输出 token × 多轮 × 缓存缺失”叠加后的复利。

常见问题(FAQ)

Q1:1 个 token 等于多少个汉字?

约 1-2 个汉字,具体取决于模型 tokenizer;建议用厂商自带的 count_tokens 工具精确测算。

Q2:为什么输出 token 比输入贵好几倍?

输出是逐 token 自回归生成,每一步都要重跑前向;输入是一次性并行处理,计算成本更低。

Q3:怎么把 Agent 成本算准?

按”单轮成本 × 步数 × 1.3″估,开 prompt caching 减输入,控输出长度减输出,超预算就降档或截断。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 qiqicto@qq.com 举报,一经查实,本站将立刻删除。
赞 (0)
其AI的头像其AI普通用户

相关推荐

返回顶部