🐵指尖猴全新升级
第7课:上下文管理:别把AI撑着
🍱

上下文管理:别把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课完成!继续探索下一课吧 🚀