参数与输入 / CONTEXT LENGTH
上下文长度超限:输入太长时怎么处理
直接答案
先确认限制针对总上下文还是单个字段,再缩减无关历史、分块处理长文档,并为预期输出保留足够空间。
症状与常见原因
- 多轮对话历史持续累积
- 长文档一次性放入请求
- 输入、工具定义与最大输出预算之和超过模型限制
如何确认问题
- 记录 HTTP 状态、错误类型与错误码、request ID、响应头、SDK 异常、模型、端点、项目和发生时间。
- 对比最小请求与失败请求,每次只改变一个变量,确认故障发生在客户端、网络、网关还是服务商层。
- 日志中不得保存完整 API Key、Authorization 请求头、用户敏感输入或私密文件内容。
排障步骤
- 读取错误体,确认服务商报告的限制与本次请求规模
- 删除重复系统说明、无关对话和未使用的工具定义
- 按语义边界分块,并先检索再加入真正相关的片段
- 降低最大输出预算时要确保仍能完成任务
- 在应用侧记录令牌估算并在发出请求前预警
常见错误做法
- 对不可重放请求或明确的配置错误进行无上限重试。
- 同时更改密钥、模型、代理和请求参数,导致无法判断真正修复项。
- 关闭 TLS 校验、公开原始日志,或把临时缓解误判为已经恢复。
修复后的验证方法
- 用脱敏的最小请求确认状态码、响应结构和延迟恢复正常。
- 恢复少量真实流量,观察错误率、重试次数和业务结果,不立即放大并发。
- 确认没有重复副作用、告警恢复,并保留 request ID 与时间窗口供复盘。
常见问题
只调低最大输出令牌数就能解决吗?
只有总预算超限且输入仍在可接受范围时可能有效;如果输入本身已经过长,仍需裁剪、摘要或分块。