上下文窗口与上下文工程

大模型一次请求能「看到」的全部输入叫上下文。模型再强,装不进上下文的信息它就看不到;塞太多又会互相干扰——于是 2025 年前后诞生了「上下文工程」:系统化地决定该放什么、怎么排、如何压缩与缓存。本章讲清这套概念。

上下文窗口

上下文窗口指单次请求允许的最大输入长度,按 token(词元)计数。2024-2025 年主流模型的窗口普遍达到 128K token 级别,部分支持百万级,足以放进整本技术书甚至一个大代码仓库:

量级大约能装下的内容适用
8K~32K几页到几十页文本轻量任务
128K~200K一部长篇小说主流旗舰区间
1M 上下数本书 / 中等仓库少数模型支持

各型号的具体窗口、计费与超长策略随版本变化,一律以官方文档为准。

token 怎么估算

上下文按 token 计数与计费。粗估时可参考:一个英文单词约 1.3 个 token,一个汉字约 1 个 token 上下(各家分词器差别不小)。精确值有两个可靠来源:用各家的官方 tokenizer 工具,或看接口返回的 usage 字段:

{"prompt_tokens": 318, "completion_tokens": 42, "total_tokens": 360}

写代码时永远以 usage 字段为准,不要依赖直觉估算。

上下文工程:该放什么

窗口有限,放进去的每一段都要「有用」。经验上按优先级取舍:

优先级内容说明
最高系统指令、工具定义决定行为,不能丢
当前任务相关事实检索到的资料、用户目标
多轮对话历史可裁剪、可压缩
旧日志、过期摘要尽量不放

放不下的知识交给检索(RAG)按需取用,而不是整库硬塞。

上下文工程:顺序、压缩与缓存

  • 顺序:系统指令放最前,关键事实尽量靠近提问处。研究发现模型对长文本「中间段」的注意力偏弱(俗称 lost in the middle),重要信息别埋在正中间。
  • 压缩:历史太长就老化——把旧对话压成摘要,只保留关键事实与未完成事项;或用检索从长历史里挑出相关片段。
  • 缓存:多轮请求往往共享同一段前缀(系统提示词、工具定义)。主流服务商普遍提供提示缓存:相同前缀命中后显著降价、加快响应。前缀如何组织、缓存如何计费,以官方文档为准。

长上下文 ≠ 无限

窗口大不等于可以乱塞:输入越长,费用与首字延迟越高;信息挤在一起互相干扰,模型还可能「记住了却没用上」。长窗口解决的是「能不能装下」,上下文工程解决的才是「装下了能不能用好」。实践中两者配合:该装就装,该省就省。

小结

上下文是 Agent 的「工作台」:窗口大小决定台面,token 估算决定成本,上下文工程决定利用率——按优先级选内容、把关键信息放在显眼位置、用压缩与缓存控制体积。台面再大也装不下整个世界,学会取舍比追求更大的窗口更实际。

笔记加载中…