【AI模型】概念-Token

【AI&游戏】专栏-直达

Token与上下文窗口

Token 是大语言模型处理信息的基本单位,上下文窗口是指模型能够"记住"的最大Token数量。理解Token和上下文窗口对于高效使用AI模型、控制成本和优化性能至关重要。

在大模型应用中,Token是计费的基础单位,上下文窗口决定了模型一次能处理的信息量。掌握这两个概念,可以帮助开发者更好地设计AI应用,优化资源使用。


一、Token的核心概念

1. ⭐ 什么是Token

定义 :

Token是大语言模型处理文本的最小单位。在模型眼中,文本不是字符或单词的序列,而是Token的序列。

Token与字符、单词的区别:

  • 字符:最小的文本单位(如H, e, l, l, o)
  • 单词:由空格分隔的文本(如Hello, world)
  • Token:模型处理的基本单位(如Hello, wo, rld)

示例:

复制代码
原文:"I don't like flying."
Token化后:"I" | "don" | "'t" | "like" "flying" | "."
Token数量:6个
字符数量:20个

2. ⭐ Token的计算方式

英文Token:

  • 1个token ≈ 4个字符
  • 1个token ≈ 0.75个单词

中文Token:

  • 1个token ≈ 1-2个汉字
  • 中文分词更复杂,token数量可能更多

示例计算:

复制代码
英文:"The quick brown fox"
字符数:19
Token数:约5个

中文:"快速的棕色狐狸"
汉字数:6
Token数:约4-6个

3. ⭐ 分词算法

BPE(Byte Pair Encoding):

  • 基于频率的合并算法
  • GPT系列模型使用
  • 优点:处理未知词能力强

WordPiece:

  • 基于概率的分词
  • BERT模型使用
  • 优点:平衡词汇表大小

SentencePiece:

  • 无监督分词
  • 支持多种语言
  • 优点:跨语言一致性

分词示例:

复制代码
输入:"unhappiness"
BPE: "un" + "happi" + "ness"
WordPiece: "un" + "##happi" + "##ness"
SentencePiece: "unhappi" + "ness"

4. ⭐ Token的用途

模型输入:

  • 用户提问的文本
  • 上下文信息
  • 系统指令

模型输出:

  • 生成的回答
  • 推理过程
  • 结构化数据

计费单位:

  • 输入token计费
  • 输出token计费
  • 总token计费

二、上下文窗口的核心概念

1. ⭐ 什么是上下文窗口

定义 :

上下文窗口是指模型能够"记住"的最大Token数量,即模型在生成下一个词时能够参考的前面多少个词。

类比理解 :

想象一个阅读框,一次只能罩住半页纸,只能基于框里的内容理解故事。如果想理解后面的内容,必须移动阅读框,但会忘记前面的内容。这个框的大小就是上下文窗口。

重要性:

  • 决定模型一次能处理的信息量
  • 影响对话连贯性
  • 影响长文档处理能力

2. ⭐ 主流模型的上下文窗口

OpenAI模型:

  • GPT-3.5:4K token
  • GPT-4:8K/32K token
  • GPT-4 Turbo:128K token
  • GPT-4o:128K token

Anthropic模型:

  • Claude 2:100K token
  • Claude 3 Haiku:200K token
  • Claude 3 Sonnet:200K token
  • Claude 3 Opus:200K token

Google模型:

  • Gemini Pro:128K token
  • Gemini Ultra:1M token

开源模型:

  • Llama 2:4K/8K token
  • Llama 3:8K/128K token
  • Mistral:8K token

3. ⭐ 上下文窗口的限制

技术限制:

  • 计算复杂度:O(n²)的注意力机制
  • 内存占用:需要存储KV缓存
  • 推理速度:长上下文导致延迟增加

实际限制:

  • 价格成本:长上下文更昂贵
  • 准确性:长上下文可能降低准确性
  • 实用性:过长上下文未必有用

4. ⭐ 上下文窗口的优化

RoPE(旋转位置编码):

  • 支持外推到更长上下文
  • 保持位置信息的连续性
  • 主流模型使用的技术

ALiBi(Attention with Linear Biases):

  • 线性偏置的注意力机制
  • 支持长上下文推理
  • 高效的内存使用

滑动窗口:

  • 分段处理长文本
  • 保留关键信息
  • 降低内存占用

三、Token和上下文窗口的使用

1. ⭐ Token计数方法

OpenAI Token计数:

复制代码
import tiktoken

encoder = tiktoken.encoding_for_model("gpt-4")
tokens = encoder.encode("Hello, world!")
print(f"Token数量: {len(tokens)}")

Claude Token计数:

复制代码
# 使用Claude官方Tokenizer
import anthropic

client = anthropic.Anthropic()
# Token计数通过API获取

Hugging Face Token计数:

复制代码
from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("gpt2")
tokens = tokenizer.encode("Hello, world!")
print(f"Token数量: {len(tokens)}")

2. ⭐ 成本计算

OpenAI定价(示例):

  • GPT-4 Turbo输入:$0.01/1K token
  • GPT-4 Turbo输出:$0.03/1K token
  • GPT-3.5 Turbo输入:$0.001/1K token
  • GPT-3.5 Turbo输出:$0.002/1K token

计算示例:

复制代码
场景:处理3000字的英文文档
Token数量:约4000 token
成本:4000 × $0.01/1000 = $0.04

场景:处理3000字的中文文档
Token数量:约6000 token
成本:6000 × $0.01/1000 = $0.06

3. ⭐ 上下文窗口管理

策略:

  • 压缩:使用摘要技术减少上下文
  • 选择:只保留相关上下文
  • 分段:分段处理长文档
  • 缓存:缓存频繁使用的上下文

示例代码:

复制代码
def manage_context(messages, max_tokens=8000):
    """管理对话上下文"""
    total_tokens = 0
    filtered_messages = []
    
    for msg in reversed(messages):
        msg_tokens = count_tokens(msg["content"])
        if total_tokens + msg_tokens <= max_tokens:
            filtered_messages.insert(0, msg)
            total_tokens += msg_tokens
        else:
            break
    
    return filtered_messages

4. ⭐ 优化策略

Prompt优化:

  • 精简指令:使用简洁明确的指令
  • 避免重复:去除冗余信息
  • 结构化输出:使用JSON等结构化格式

对话管理:

  • 定期总结:对话过长时进行总结
  • 选择性记忆:只记住关键信息
  • 上下文轮换:动态调整上下文内容

文档处理:

  • 分块处理:将长文档分块处理
  • 检索增强:使用RAG技术
  • 摘要生成:生成文档摘要

四、游戏开发中的Token和上下文窗口

1. ⭐ NPC对话管理

应用描述 :

通过Token和上下文窗口管理NPC对话历史。

核心功能:

  • 对话历史存储:记录玩家与NPC的对话
  • 上下文压缩:对话过长时进行总结
  • 记忆管理:记住关键对话内容

优化策略:

  • 摘要对话:定期生成对话摘要
  • 选择性记忆:只记住重要信息
  • 上下文轮换:动态调整对话上下文

2. ⭐ 游戏状态管理

应用描述 :

通过Token管理游戏状态信息。

核心功能:

  • 状态编码:将游戏状态编码为Token
  • 状态存储:存储历史状态
  • 状态检索:快速检索相关状态

优化策略:

  • 状态压缩:减少状态表示的Token数量
  • 状态索引:建立状态索引便于检索
  • 状态清理:清理过期状态

3. ⭐ 游戏文档处理

应用描述 :

通过上下文窗口处理游戏文档。

核心功能:

  • 文档分块:将长文档分块处理
  • 检索增强:使用RAG技术
  • 摘要生成:生成文档摘要

优化策略:

  • 分块策略:按章节或主题分块
  • 向量检索:快速找到相关文档
  • 摘要优化:生成高质量摘要

4. ⭐ 游戏AI推理

应用描述 :

通过上下文窗口进行游戏AI推理。

核心功能:

  • 局势分析:分析当前游戏局势
  • 策略生成:生成游戏策略
  • 决策推理:基于上下文进行决策

优化策略:

  • 上下文选择:选择相关上下文
  • 推理压缩:减少推理过程的Token消耗
  • 结果优化:优化推理结果的表示

五、Token和上下文窗口的最佳实践

1. ⭐ 成本控制

原则:

  • 精简Prompt:使用简洁明确的指令
  • 避免长上下文:只提供必要信息
  • 使用缓存:缓存频繁使用的内容

示例:

复制代码
❌ 冗长的Prompt:
"请帮我写一篇关于人工智能在游戏开发中应用的详细文章,包含历史背景、技术原理、实际案例、未来展望等各个方面,字数要求3000字以上..."

❌ 精简的Prompt:
"写一篇3000字文章,主题:AI在游戏开发中的应用,要求包含3个实际案例。"

2. ⭐ 上下文管理

原则:

  • 定期总结:对话过长时进行总结
  • 选择性保留:只保留关键信息
  • 动态调整:根据需求调整上下文

策略:

  • 摘要机制:自动生成对话摘要
  • 重要性评分:为信息打分保留重要信息
  • 时间衰减:旧信息权重降低

3. ⭐ 性能优化

原则:

  • 批量处理:批量处理多个请求
  • 流式输出:使用流式输出减少等待时间
  • 并发控制:控制并发请求数量

技术:

  • 连接池:复用API连接
  • 缓存机制:缓存常用结果
  • 异步处理:异步处理长任务

4. ⭐ 错误处理

原则:

  • Token超限:处理上下文窗口超限
  • 响应超时:处理API响应超时
  • 费用超支:监控和控制费用

策略:

  • 预警机制:设置Token使用预警
  • 降级方案:超限时使用简化版本
  • 日志记录:记录Token使用情况

六、Token和上下文窗口的未来趋势

1. ⭐ 更大的上下文窗口

模型上下文窗口持续增长,从几K到百万Token。

2. ⭐ 更高效的Token化

新的分词算法,更高效的Token表示。

3. ⭐ 动态上下文管理

AI自动管理上下文,优化资源使用。

4. ⭐ 多模态Token

支持文本、图像、音频的统一Token表示。


总结

  1. 核心概念:Token是模型处理的基本单位,上下文窗口是模型能处理的最大Token数量
  2. 计算方式:Token计数、成本计算、上下文管理
  3. 游戏应用:NPC对话、游戏状态、文档处理、AI推理
  4. 最佳实践:成本控制、上下文管理、性能优化、错误处理

(欢迎点赞留言探讨,更多人加入进来能更加完善这个探索的过程,🙏)

相关推荐
天远Date Lab3 分钟前
零信任架构实战:基于天远全能消金报告(标准版)构建自动化骑手资信评估网关
运维·人工智能·架构·自动化
苏打豆7 分钟前
Pinocchio源码阅读——刚体运动物理量空间变换及求导
c++·线性代数·算法·矩阵·机器人
zhikouai9 分钟前
20项发布串成一条线:从问答案的地方,变成干活的地方
人工智能
阿华田51213 分钟前
Agent Skill 原理解析与使用:从 Prompt 到可复用的 Agent 能力
人工智能·agent·skill
蜗牛互联网18 分钟前
WSL Containers GA:本地AI容器的生命周期、网络与治理验收
java·网络·人工智能·后端
u13013021 分钟前
GitHub 热榜项目:月榜(2026-09-30)
人工智能·github
FluxArt23 分钟前
GPT Image 2.5 中文提示词教程:Flux Art 可复用模板
前端·gpt·算法
BSD_CGQ24 分钟前
从工业称重到机器人触觉:柔性压力传感器的跨场景工程适配路径
人工智能·机器人·压力传感器·柔性薄膜压力传感器
思麟呀34 分钟前
位运算:从一个整数到一个集合
c语言·数据结构·c++·算法