上下文窗口超限会发生什么?有哪些处理策略?
输入、历史、输出预算加起来超过窗口,API 通常会直接报错拒绝请求,而不是悄悄帮你截断。策略:裁剪低价值历史、摘要压缩旧轮次、检索注入代替全文、限制输出 token、必要时换大窗口模型。
完整回答
处理按优先级:先算清账,system、历史、工具结果、本次输入、输出预留都占窗口;再分层减负,保留当前任务和关键约束,旧轮次压缩成摘要,长文档走检索只放相关片段;最后留保险,为输出预留空间并监控 usage,接近上限时主动摘要或提示开新会话。注意摘要是有损压缩,关键事实要留在原文或结构化状态里。
加分信息
- 区分超限报错与静默截断取决于 API 和参数
- 知道摘要是有损的,关键事实要结构化保留
常见问题
- 默认平台会帮忙截断,直到线上报错才发现
- 无脑截尾,把任务约束和输出格式说明一起截掉
面试官可能追问
- 摘要旧轮次时哪些信息必须保留?
- 怎么在代码里提前发现快要超限?
结合 Prompt 调试与回归台:按优先级保留消息、为输出预留 token 预算。