第7课:上下文管理:别把AI撑着
进度 0/12
🍱
上下文管理:别把AI撑着
窗口有限,学会给AI科学配餐!
📖知识引入
📦上下文窗口
模型一次能读的字数上限,按token计:装不下就报错,装太满又贵又慢
✂️截断策略
保住system和最近几轮对话,把最老的消息直接裁掉,简单有效
📝摘要压缩
让模型把旧对话浓缩成一段小结替换原文,记大事、丢废话
⚖️取舍之道
截断丢细节、压缩费一次调用:长任务用压缩,短对话用截断
💡
token粗估口诀:英文约4字符1个token,中文约1~2字1个token,先估再裁不心慌
🔍给消息列表瘦身
def trim_messages(messages, keep_rounds=6):
"""保住system提示词 + 最近keep_rounds轮对话,其余截掉"""
system = messages[0] if messages[0]["role"] == "system" else None
chat = messages[1:] if system else messages
# 一轮=user+assistant(外加可能的工具消息),只留最近几轮
recent = chat[-(keep_rounds * 2):]
trimmed = ([system] if system else []) + recent
print(f"瘦身:{len(messages)}条 → {len(trimmed)}条")
return trimmed
# Agent Loop每圈调用一次,窗口永远不撑爆
messages = trim_messages(messages)截断是最朴素的上下文管理:宪法必留,陈年旧账说再见
🎯小测验
第1题:上下文窗口超限会发生什么?
第2题:截断策略一般优先保留什么?
第3题:摘要压缩相比直接截断的优势是?
📝本课知识点
- ✓窗口有限,装太满会爆
- ✓截断:留system+最近几轮
- ✓压缩:旧对话浓缩成小结
第7课完成!继续探索下一课吧 🚀
