Token 知识图解(chalkboard 风格)

是什么

Token 是模型处理文本的最小单位。它不一定是完整单词,通常是”子词(subword)“、字符或符号。模型并不是直接读你写的整段话,而是先把它切成一串 Token,再逐个处理、预测下一个 Token。

  • 英文里一个 Token 大约对应 4 个字符或一个单词的一半。
  • 中文里一个 Token 通常对应 1~2 个汉字(不同模型分词器不同,差异明显)。所以同样一段意思,中文往往比英文”更费 Token”。

可以用各家官网的 Token 计算器(如 OpenAI Tokenizer)直观感受:输入”你好世界”和 “Hello World”,切出来的 Token 数完全不同。

计费逻辑

大模型 API 基本都是按 Token 数收费,且通常把”输入”和”输出”分开计价:

总费用 = 输入 Token 数 × 输入单价 + 输出 Token 数 × 输出单价
  • 不同模型单价差异巨大:旗舰大模型(强但贵)vs 小模型(弱但便宜)。
  • 一次对话里,系统提示词(System Prompt)每次都会重复计入输入,长系统提示会持续”吸”Token。
  • 上下文窗口里保留的历史消息,每一轮也都算输入。

节省技巧(实战向)

  1. 压缩 Prompt:去掉冗余废话、重复指令,能用短句说清就别写长。
  2. 精简系统提示并缓存:把不变的 System Prompt 抽出来,利用服务商的”提示缓存(Prompt Caching)“避免重复计费。
  3. 长文本用 RAG 而不是全量塞入:需要查文档时,只检索相关片段拼进 Prompt,而不是把整本手册丢进上下文(详见 RAG 笔记)。
  4. 设置 max_tokens 上限:防止模型啰嗦输出,控制输出成本。
  5. 按任务选模型:简单分类 / 抽取用便宜的小模型,复杂推理才上旗舰模型(“大模型干小活”最费钱)。
  6. 及时截断历史:多轮对话只保留必要上下文,超长部分摘要后保留,而非整段留着。
  7. 批量(batch)调用:很多平台对离线批量请求有折扣。