一、 什么是大模型的 Token?

当我们与 GPT、Claude 这类大模型交互时,模型并不会直接理解“字”或“单词”。它处理的是一个被称为 Token 的基本单位。你可以把它想象成模型世界的“乐高积木”或“货币”。无论是你输入的指令(Prompt),还是模型生成的回答(Completion),最终都被拆解成一系列 Token 来进行计算和生成。

一个 Token 不完全等同于一个单词或一个汉字。在英文中,常见的单词(如 “hello”)可能就是一个 Token,而生僻或组合词(如 “transformer”)可能会被拆分成 ["trans", "former"] 两个 Token。在中文里,一个汉字通常是一个或两个 Token,常见的双字词(如 “模型”)也可能是一个单独的 Token。具体的分词方式取决于模型所使用的 Tokenizer(分词器)。

关键提示:理解 Token 是估算成本和优化使用的第一步。你的 Prompt 和模型的 Response 长度,都是按 Token 数量来衡量的。

我们可以用 OpenAI 的 tiktoken 库来直观感受一下英文文本的 Token 化过程:

import tiktoken

# 加载 GPT-3.5/4 使用的编码器
encoder = tiktoken.encoding_for_model("gpt-3.5-turbo")

text = "Hello, how are you doing today?"
tokens = encoder.encode(text)
print(f"文本: {text}")
print(f"Token列表: {tokens}")  # 输出一串数字ID
print(f"解码回Token: {[encoder.decode([t]) for t in tokens]}") # 看每个ID对应什么
print(f"Token数量: {len(tokens)}")  # 通常是6或7个Token

二、 Token 是如何生成的?—— 分词器的作用

大模型在训练前,会使用一个 Tokenizer(分词器) 来处理海量的文本语料,建立一个从文本片段到数字ID的映射字典。这个过程叫做 Tokenization(分词/标记化)。当你的输入文本进入模型时,会经过同样的分词器处理,转换成一串数字ID(即 Token 序列),模型神经网络处理的正是这些数字。

分词器的策略直接影响了模型的“词汇表”大小和处理效率。它通常采用 子词分割 的算法,如 BPE。这样做的好处是:

你可以将分词理解为模型的“感官输入格式”。模型不“看”文本,它“看”的是这些代表不同语义片段的数字序列。这个序列的长度,就是我们所说的 上下文长度。

三、 计费的核心:为什么按 Token 收费?

大模型的推理(即生成回答)是极其消耗计算资源的过程,尤其是对 GPU 的显存和算力。其计算成本主要取决于两个因素:

  1. 模型的规模:参数越多,单次计算量越大。
  2. 处理的序列长度:输入和输出的总 Token 数越多,需要计算的次数就越多。

因此,按 Token 计费 成为了最公平、最直接的商业模型。它精确地反映了用户单次请求所消耗的计算资源。计费通常区分两部分:

关键提示:在许多 API 的定价中,输出 Token 的单价远高于输入 Token。因为生成文本的过程比处理已有文本(输入)更加复杂,且需要模型逐 Token 顺序生成。

以 OpenAI GPT-4 的某个版本为例,其定价结构可能是:

这意味着,一次请求若消耗了 1000 个输入 Token 和 500 个输出 Token,费用就是 ($0.03 * 1) + ($0.06 * 0.5) = $0.06。

四、 实践中的计算与优化:如何节省你的“Token预算”?

理解了原理,我们就可以在实际应用中主动管理 Token 消耗,从而控制成本和提高响应速度。关键在于优化 Prompt 工程 和 API 调用参数。

以下是一些实用的优化策略:

假设我们要提取一段文本中的关键信息,一个优化前的 Prompt 可能这样写:

# 优化前 - 较为啰嗦,消耗更多输入Token
prompt_optimized = """
你是一个非常厉害的助手,请仔细阅读下面这段关于公司季度财报的文字,然后请你用你聪明的大脑,非常认真地从里面找出三个最重要的信息点,最好是关于收入和利润的。请务必确保信息准确。
文字如下:
[此处是财报文本]
"""

优化后可以写得更简洁:

# 优化后 - 清晰直接,消耗更少输入Token
prompt_optimized = """
任务:从财报文本中提取3个最关键信息点(聚焦收入与利润)。
要求:信息准确,逐条列出。
文本:
[此处是财报文本]
"""

后者能节省大量不必要的 Token 消耗。通过精打细算地使用每一个 Token,你可以用同样的预算完成更多、更复杂的任务。