一、Token:大模型的“最小货币单位”

当你向一个大语言模型发送一个问题时,模型并不会直接“阅读”你的文字。它首先要将文本分割成一个个被称为 0 的小单元。你可以把Token理解为模型处理文本的最小语义单位,就像乐高积木中最基础的那一小块。

Token的划分方式因模型和分词器(Tokenizer)而异,但通常遵循一些规律:

提示:Token并不总是等于一个词或一个字。它是模型眼中最经济的“词汇表”单位,目的是用有限的集合来表示几乎无限的文本。

二、为什么要按 Token 计费?

理解Token是理解计费的前提。大模型服务(如OpenAI的API)按Token收费,主要基于以下几个核心原因:

  1. 直接关联计算成本:模型在处理你的请求时,其核心计算量(特别是GPU算力消耗)与输入和输出的总Token数量强相关。输入越长,模型需要“思考”的上下文就越多;输出越长,生成的计算步骤就越多。Token数是衡量这种计算负载最直接、最公平的标尺。
  2. 资源使用的精准计量:比起按时间或按次数收费,按Token收费能更精确地反映每次请求对模型资源的实际占用。一个只回答“是”或“否”的简短请求,与生成一篇千字文章的请求,消耗的资源天差地别,Token计费体现了这种差异。
  3. 鼓励高效使用:这种计费方式自然引导用户优化自己的输入提示(Prompt),避免冗长、无关的描述,同时也会更关注如何引导模型生成简洁、高效的回答,从而降低双方的成本。

三、计费原理详解:输入 + 输出

模型的收费通常计算的是 01 的总和。

计费公式可以简化为总费用 = (输入Token单价 * 输入Token数) + (输出Token单价 * 输出Token数)

关键点:输入和输出的单价可能不同。通常,输出Token的单价会高于输入Token。这是因为生成(Generation)过程比仅处理输入(Inference)需要更多的计算资源。

为了更直观,这里有一个不同模型定价的示例表格(价格仅为示意,请以官方最新公告为准):

| 模型 | 输入价格(每千Token) | 输出价格(每千Token) | | :------------------ | :-------------------- | :-------------------- | | GPT-4 Turbo | $0.01 | $0.03 | | GPT-3.5 Turbo | $0.0005 | $0.0015 | | 某些国产大模型 | ¥0.004 | ¥0.012 |

四、动手实践:用 Python 计算 Token 数

我们可以使用官方提供的 tiktoken 库来精确计算给定文本在特定模型下会被编码成多少Token。这对于预估API调用成本优化Prompt长度至关重要。

首先安装库:

pip install tiktoken

然后,使用以下Python代码来计算:

import tiktoken

# 加载对应模型的分词器。例如,对于GPT-4/GPT-3.5-turbo,使用 ‘cl100k_base‘
encoder = tiktoken.get_encoding(“cl100k_base”)

# 示例文本
text = “你好,大模型!我想学习Token的计算原理。”
prompt = “用一句话解释量子计算。”

# 编码并计算Token数量
text_tokens = encoder.encode(text)
prompt_tokens = encoder.encode(prompt)

print(f”文本: ‘{text}’”)
print(f”Token数量: {len(text_tokens)}”)
print(f”Token列表: {text_tokens}”)
print(“-” * 30)
print(f”提示: ‘{prompt}’”)
print(f”Token数量: {len(prompt_tokens)}”)

# 输出示例:
# 文本: ‘你好,大模型!我想学习Token的计算原理。’
# Token数量: 12
# Token列表: [57668, 3922, 35786, 104858, 173716, 6799, 67754, 9057, 76043, 104858, 119899, 125005]

运行这段代码,你会发现中文字符大多被编码为1-2个Token,而英文单词则会根据分词规则被拆分。

五、节省 Token 的实用技巧

既然Token直接关系到成本,那么学会节约使用就非常重要。以下是一些核心策略:

六、未来展望:超越单纯计费

按Token计费是当前主流且相对公平的商业模式,但它并非完美。未来我们可能会看到更精细化的计费维度,例如:

归根结底,理解Token和计费原理,不仅能帮助你节省开支,更能让你从底层更好地理解大模型的工作方式,从而设计出更高效、更经济的应用。