一、初识 Token:大模型的基本语言单元

当我们与 ChatGPT 或其他大语言模型(LLM)交互时,它处理的并非我们肉眼看到的“字”或“词”,而是 Token。你可以将 Token 理解为模型的“词汇表”中的基本单元,它介于字符和单词之间。常见的英文单词可能就是一个 Token,比如 applerun;而较长的或不常见的词会被拆分成多个 Token,例如 unhappiness 可能被拆分为 unhappiness 三个 Token。

这种设计源于模型的分词器。主流的 BPE(Byte-Pair Encoding)等算法会学习训练数据中的常见字符组合,形成一个固定的词汇表。这种子词(Subword)切分方式的好处在于,它能高效地处理任何文本(包括生造词和代码),同时将词汇表控制在合理大小(通常3万到10万之间),平衡了模型的表达能力与计算效率。

关键点:Token 数量是衡量模型处理成本和上下文窗口占用的核心指标。一句话,输入的 Token 数 + 输出的 Token 数 = 本次请求的总消耗。

二、Token 如何影响你的钱包:计费原理

大模型的商业 API(如 OpenAI、文心一言、通义千问)普遍采用 按 Token 用量计费 的模式。计费公式非常简单:总费用 = (输入Token单价 * 输入Token数) + (输出Token单价 * 输出Token数)

需要特别注意两点:

  1. 输入与输出价格不同:通常,输出 Token 的价格远高于输入 Token(例如,GPT-4-turbo 的输入价格约为输出的一半)。这是因为生成输出文本需要模型进行更复杂的计算。
  2. 模型与版本决定单价:不同能力的模型(如 GPT-4 与 GPT-3.5)、同一模型的不同版本,其单价差异巨大。高级模型通常更昂贵。

三、动手计算:一个真实的 API 调用示例

让我们通过一个具体的 Python 示例,来看看一次 API 调用会产生多少 Token,以及如何估算费用。以下使用 OpenAI 的 tiktoken 库来计算 Token 数,并模拟一次 API 调用。

import tiktoken

# 初始化编码器(根据你使用的模型选择对应的编码器)
encoding = tiktoken.encoding_for_model("gpt-3.5-turbo")

# 准备我们的提示(Prompt)
prompt_text = "请用一句话解释什么是量子纠缠。"
system_message = "你是一个物理学专家,善于用通俗的语言解释复杂概念。"

# 计算 Token 数(通常将系统消息和用户提示拼接计算)
num_tokens_prompt = len(encoding.encode(system_message + prompt_text))
print(f"提示部分的 Token 数量:{num_tokens_prompt}")

# 假设我们得到了一个简短的回答
assistant_reply = "量子纠缠是指两个或多个粒子之间的一种神秘联系,即使相隔遥远,对一个粒子的测量会瞬间影响另一个粒子的状态。"
num_tokens_reply = len(encoding.encode(assistant_reply))
print(f"回答部分的 Token 数量:{num_tokens_reply}")

# 假设使用 GPT-3.5-turbo 模型(价格会变动,请以官网为准)
input_price_per_1k_tokens = 0.0010  # 美元(示例价格)
output_price_per_1k_tokens = 0.0020  # 美元(示例价格)

# 计算本次请求的成本
cost = (num_tokens_prompt / 1000 * input_price_per_1k_tokens) + \
       (num_tokens_reply / 1000 * output_price_per_1k_tokens)
print(f"本次请求的总成本约为:${cost:.6f}")

运行上述代码,你就能清晰地看到一次简单问答背后的“计量单位”。在实际 API 响应中,平台会直接返回 usage 字段,其中精确列出了 prompt_tokenscompletion_tokens 的数量。

四、省 Token 就是省钱:实用优化策略

理解了计费原理,优化 Token 使用就成为降低成本的关键。以下是几个实战策略:

提示:对于重复性高的任务(如分类、提取),可以考虑微调一个更小的专用模型。虽然前期有训练成本,但单次调用的 Token 成本和响应速度通常远优于通用大模型。

五、计费模型与注意事项

除了最基础的按量(Pay-as-you-go)计费,服务商还会提供一些其他模式:

  1. 预付费/包月套餐:适合用量稳定的企业,可以锁定更低的价格。
  2. 免费额度与速率限制:几乎所有服务商都为新用户提供少量免费额度(如 OpenAI 初始有 $5 额度),并会对低用量账号设置 RPM(每分钟请求数)、TPM(每分钟 Token 数)等限制,需注意应对。

一个非常重要的隐藏细节是:缓存。许多平台(如 OpenAI)会对完全相同的连续请求进行缓存。如果你连续发送一模一样的长提示(例如一个包含大量文档的提示),后续请求的输入 Token 可能会以折扣价甚至免费计费。善用缓存机制能显著降低批量任务的成本。