📖 定义
Token是AI模型处理文本的基本单位。它可以是完整的词、词的一部分、字符,甚至是标点符号。AI模型将所有输入文本转换为Token序列进行处理。
示例:"Hello, world!" 可能被分词为:
Hello , world !⚙️ 原理
Tokenization(分词)过程
- BPE (Byte Pair Encoding):最常用的分词算法,通过合并高频字节对来构建词表
- WordPiece:BERT使用的分词方法,基于子词单元
- SentencePiece:语言无关的分词工具,支持多语言
Token与成本
API调用通常按Token计费:
- 英文:约1 Token = 4个字符 = 0.75个单词
- 中文:约1 Token = 1-2个汉字
💡 应用场景
- 成本估算:计算API调用费用
- 上下文管理:确保输入不超过模型上下文限制
- 提示优化:精简提示词以节省Token
- 文本分割:将长文档分块处理
💻 代码示例
# 使用tiktoken计算Token数量
import tiktoken
# 选择编码器(cl100k_base用于GPT-4/3.5)
encoding = tiktoken.get_encoding("cl100k_base")
text = "Hello, world! 你好世界!"
tokens = encoding.encode(text)
print(f"原文: {text}")
print(f"Token数量: {len(tokens)}")
print(f"Token列表: {tokens}")
print(f"解码验证: {encoding.decode(tokens)}")
# 输出示例:
# 原文: Hello, world! 你好世界!
# Token数量: 10
# Token列表: [9906, 11, 1917, 0, 57668, 53901, 82507, 6447, 244, 9833]
# 解码验证: Hello, world! 你好世界!
# 使用OpenAI API时计算成本
def estimate_cost(tokens, model="gpt-4"):
pricing = {
"gpt-4": {"input": 0.03/1000, "output": 0.06/1000},
"gpt-3.5-turbo": {"input": 0.0015/1000, "output": 0.002/1000}
}
return tokens * pricing[model]["input"]