Token完整指南已更新完成
什么是Token?Token是LLM处理文本的基本单位。英文Hello world=2 tokens,中文你好世界=约4 tokens。
Token划分规则:完整单词(Hello)=1 token,词根+后缀(learning)=2-3 tokens,中文字(你好)=1-2 tokens,标点=1 token each。
Token计算:import tiktoken / enc = tiktoken.get_encoding("cl100k_base") / count = len(enc.encode(text))。
主流模型上下文限制:GPT-3.5-Turbo=16K(~8000字),GPT-4-Turbo=128K(~15万字),Claude 3.5=200K(~20万字),DeepSeek-V3=128K,Llama 3.1=128K。
Token优化策略:1.压缩提示词,移除重复内容;2.使用缩写(e.g.=例如,incl.=包含);3.使用结构化输出代替自然语言描述。
Token计费:gpt-4-turbo=$0.01/1K input, $0.03/1K output;gpt-3.5-turbo=$0.0005/1K input, $0.0015/1K output;claude-3-5-sonnet=$0.003/1K input, $0.015/1K output。
为什么Token重要?1.API按token计费 2.超过限制会截断 3.越多生成越慢 4.过长上下文降低模型注意力。
最佳实践:精简提示词,使用结构化输出,RAG分块检索,监控成本。
Token 完整指南
Token 是 LLM 处理文本的基本单位。理解 Token 对于控制 API 成本、优化提示词长度、避免上下文截断都至关重要。本文全面介绍 Token 的概念、计算方法和优化策略。
大语言模型不像人类那样直接处理文字,而是将文本分解为 Token 进行处理。Token 可以是单词的一部分、整个单词,甚至是标点符号。
1. 什么是 Token
Token 是 LLM 处理文本的最小单位。不同的分词器(Tokenizer)使用不同的规则将文本分解为 Token。
Token 与单词的关系:
英文:
- 平均 1 个单词 ≈ 1.3 个 Token
- 例如:Hello, world! → 3 个 Tokens: [Hello, ,, world!]
中文:
- 平均 1 个汉字 ≈ 1 个 Token
- 但也可能一个词被分解为多个 Token
不规则文本:
- URL 可能每个部分都是一个 Token
- 代码中的长变量名可能被分解
2. 分词规则示例
以下是 GPT-4 使用 cl100k_base 分词器的分词示例:
分词示例:
Hello world → [Hello, " ", world] = 3 tokens
Hello, world! → [Hello, ",", " ", world, !] = 5 tokens
中文示例:
人工智能 → [人, 工, 智, 能] = 4 tokens
你好世界 → [你, 好, 世, 界] = 4 tokens
代码示例:
function() → [function, (, )] = 3 tokens
const x = 1; → [const, " ", x, " ", =, " ", 1, ;] = 8 tokens
3. 使用 tiktoken 计算 Token
tiktoken 是 OpenAI 开源的 Token 计数工具,支持多种编码方式。
import tiktoken
# cl100k_base 用于 GPT-4 和 GPT-3.5-turbo
enc = tiktoken.get_encoding("cl100k_base")
# 计算 Token 数量
text = "Hello, world! 你好世界!"
token_count = len(enc.encode(text))
print(f"Token数量: {token_count}")
# 查看分词结果
tokens = enc.encode(text)
print(f"Tokens: {tokens}")
# 解码回文本
decoded = enc.decode(tokens)
print(f"解码: {decoded}")
# 释放资源
enc.close()4. 主流模型上下文限制
不同模型有不同的上下文窗口限制,超过限制的内容会被截断。
主流模型上下文限制:
GPT-4 Turbo:128K tokens
GPT-4:8K / 32K tokens
GPT-3.5-turbo:16K tokens
Claude 3 Opus:200K tokens
Claude 3 Sonnet:150K tokens
Claude 3 Haiku:150K tokens
Gemini 1.5 Pro:1M+ tokens
注意:实际可用上下文可能小于标称值,需预留空间给输出。
5. Token 定价
大多数 LLM API 按 Token 数量计费,了解定价有助于控制成本。
API 定价参考(2024年):
GPT-4 Turbo:
- 输入:$10 / 1M tokens
- 输出:$30 / 1M tokens
GPT-4:
- 输入:$30 / 1M tokens
- 输出:$60 / 1M tokens
GPT-3.5-turbo:
- 输入:$0.5 / 1M tokens
- 输出:$1.5 / 1M tokens
Claude 3 Opus:
- 输入:$15 / 1M tokens
- 输出:$75 / 1M tokens
实际费用 = 输入Token数 × 输入单价 + 输出Token数 × 输出单价
6. Token 优化策略
优化 Token 使用可以在不牺牲效果的前提下降低成本并提升响应速度。
优化策略:
1. 精简提示词:删除不必要的重复和解释
2. 使用缩写:在保持清晰的前提下使用缩写
3. 截断长文档:只保留最相关的部分
4. 摘要压缩:对长上下文进行摘要
5. 系统提示优化:系统提示只包含必要规则
6. 避免冗长示例:Few-shot 示例保持简洁
7. 流式输出:使用流式响应改善用户体验
7. 常见问题
问题1:为什么输出被截断?
答案:可能已达到 max_tokens 限制或上下文窗口上限。
问题2:Token 数比预期多?
答案:可能是标点符号、空格都被计为 Token。中文分词也可能产生意外结果。
问题3:如何估算成本?
答案:使用 tiktoken 预先计算,或参考 API 提供的 token usage 返回值。
问题4:上下文窗口不够怎么办?
答案:考虑 RAG(检索增强)、摘要压缩或使用更长上下文的模型。
总结
Token 是 LLM 处理文本的基本单位。英文平均1单词≈1.3 Token,中文平均1字≈1 Token。了解 Token 计算(使用 tiktoken)、模型上下文限制、API 定价对于有效使用 LLM 至关重要。优化 Token 使用可以从精简提示词、截断长文档、使用摘要等角度入手。
声明:本文由 AI 生成,可能存在错误或不准确之处。API 定价可能随时间变化,请以官方最新价格为准。
最后更新:2026-01-29