上下文超限怎么办:先核算提示词,再决定重试

把历史、工具定义、检索片段和输出预留放进同一 token 预算,解决上下文超限,同时保留回答真正需要的证据。

发布 2026-09-29 · 更新 2026-09-29 · KeepRouter Editorial · 5 分钟阅读

包含输入预算、输出预留与检索检查的 Kimi K3 长上下文请求图
核算实际请求上下文,并为生成预留空间。示意图,不代表某个型号的容量。

上下文超限说明请求超过模型或端点限制。应统计序列化后的完整内容,包括指令、历史、工具定义与检索文本,再按型号规则为输出留空间。原样重试通常只会再次失败。

用户问题很短,不代表真实请求很短。长会话的主要消耗可能藏在应用自动拼接的历史和工具里。

区分不同限制

Claude 上下文说明和 Gemini token 文档描述各自的计算方式。

限制意义常见误解
上下文窗口请求与生成可使用的容量全部都能当输入
输出上限允许生成的数量调大后输入也能更多
客户端预算应用决定发多少内容能改变上游模型规格
文件、媒体限制特定操作限制大窗口能绕过所有限制

按准确型号和线路核对,不用另一平台的同名模型规格代替。

建立 token 账本

假设可用窗口 16,000 token,指令与工具 2,000、历史 5,000、检索 6,000、问题 500,输入已达 13,500。再预留 2,000 输出和 1,000 余量,就超出 500。

context_budget = 16_000
parts = {"instructions_tools": 2_000, "history": 5_000,
         "retrieval": 6_000, "question": 500}
output_reserve = 2_000
headroom = 1_000
print(context_budget - sum(parts.values()) - output_reserve - headroom)  # -500

这是规划算例,不是 tokenizer 或型号规格。优先使用服务支持的计数方式,并注意图片与推理用量。字符数除以固定常数只能粗估,中文、代码与其他语言差异明显。

先去掉重复,再考虑缩减证据

检查重复系统指令、工具定义和重复检索片段。旧构建日志可能只需要保留关键错误与文件位置,而不必每轮全文发送。

当前任务真正需要的原文不能随便删。例如问题询问合同某条,应保留该条款和来源身份,不能只留下模糊摘要。检索既要限制片段数,也要限制总 token,十段短文与十段长文并不等价。

有意识地压缩会话

摘要应保留已作决定、未解决问题、标识符、约束与来源。不要把建议压缩成已批准决定。权限、余额和业务状态应保存在应用数据里,不能只依赖模型摘要。

用后续问题验证摘要是否保留约束,例如“不能修改生成文件”。压缩后忘掉规则,不能算优化成功。

有工具时需保留合法调用与结果对应。只删除助手调用、留下工具结果,会引发另一种协议错误,见工具调用指南。

确实需要时再扩大窗口

必要材料无法进一步缩减时,更大窗口有价值;持续重发冗余历史时则应先修应用。比较同一组证据上的正确率与成本,不能把窗口大小直接当质量。

长文本测试应覆盖开头、中间、结尾事实,冲突材料,以及没有答案的问题。“能放进去”不代表每项事实都能可靠找出。

把确定性错误变成可执行提示

超限时向用户提供明确的缩小范围、减少历史或更换型号路径,不进入临时错误的重试循环。用模型目录确认限制,结合 RAG 成本指南与计算器决定预算,并保留能验证关键事实的小样本。

常见问题

提高输出上限能修复上下文超限吗?

通常不会增加输入容量,反而可能需要更多预留。应按型号规则缩减完整请求。

直接删除最旧消息可以吗?

必须保留重要约束和协议关系。保存必要事实与工具调用对应,并测试处理后的会话。

更大的窗口保证答案更好吗?

不保证。它增加容量,但仍需测试模型能否正确使用文档证据,包括冲突和缺失事实。

参考的一手资料

本文最近复核 2026-09-29

  1. [1] Claude context windows
  2. [2] Gemini token counting

继续阅读

← 全部文章 · 模型与价格 · 获取 API Key