上下文窗口怎么记账?给长对话与 RAG 的预算教程
把上下文当成有限预算:系统提示、工具说明、对话历史、检索文档和「预留给回答」要分开记账。 超支时模型不是温和降级,而是漏看约束或捏造细节。
为什么要预算
- 长对话后期「忘了」最初规则。
- RAG 一次塞太多片段,重要句被挤出窗口。
- 工具返回值过长,下一轮推理空间不足。
预算拆分(示意比例,按模型上限自行换算)
| 区块 | 建议 | 说明 |
|---|---|---|
| 系统与工具说明 | 固定 | 尽量短,稳定 |
| 对话历史 | 可压缩 | 保留最近轮 + 摘要 |
| 检索/附件 | 设上限 | 按相关度截断 |
| 输出预留 | 强制留白 | 否则答到一半被截断 |
具体 token 数因模型而异,以你使用的接口文档为准,不要死记某一数字。
操作步骤
- 量一次:用计数工具或接口返回的 usage,看各区块占比。
- 给检索设硬顶:例如最多 N 段、每段最多 M 字,超出先重排再截。
- 历史策略:超过 K 轮则摘要旧轮,保留用户最新约束原文。
- 输出预留:在调用前检查「已用 + 期望输出」是否越界。
提示词配合(示意)
若提供的参考资料过长,只使用与问题直接相关的段落,并在回答中注明「未使用全部资料」。
不要假装读过被截断的部分。
常见坑
- 把整份 PDF 粘进提示词当「知识库」。
- 摘要时丢掉用户否定句(「不要用短信通知」)。
- 多 Agent 各自塞满上下文,汇总时再次爆炸。
落地检查
在预发环境打开 usage 日志,对一次典型对话打印各区块占比,贴到团队文档。给检索与工具返回设报警阈值:接近上限就改摘要策略。评测时故意加入「早期否定约束」,看摘要后是否仍被遵守。多 Agent 汇总节点单独预算,防止各自满窗后再拼接。
不要把某一模型的窗口数字写死进业务代码当永恒真理,升级模型时重测。
相关阅读:RAG 过期文档处理、Agent 工具调用幂等,更多见 AI 技能分类。
写完模板后,建议在真实场景试运行一次,把含糊句子改成你们行话,并删掉任何模型编造的数字、法规条款号或保证措辞。把终版存入共享文档并注明适用日期,避免同事继续使用过期口径。
写完模板后,建议在真实场景试运行一次,把含糊句子改成你们行话,并删掉任何模型编造的数字、法规条款号或保证措辞。把终版存入共享文档并注明适用日期,避免同事继续使用过期口径。
写完模板后,建议在真实场景试运行一次,把含糊句子改成你们行话,并删掉任何模型编造的数字、法规条款号或保证措辞。把终版存入共享文档并注明适用日期,避免同事继续使用过期口径。
写完模板后,建议在真实场景试运行一次,把含糊句子改成你们行话,并删掉任何模型编造的数字、法规条款号或保证措辞。把终版存入共享文档并注明适用日期,避免同事继续使用过期口径。