首页/AI/大模型部署与运维速查/超窗请求的处理策略
推理参数与优化50 条

超窗请求的处理策略

输入超过上下文窗口时的处理因服务实现而异:拒绝并报错、截断输入或前端摘要压缩;在入口统一长度策略,行为才可预期。

超窗请求怎么处理

输入超过上下文窗口时,不同服务的处理方式并不一致:直接拒绝并返回错误、把输入从某一端截断,或者先做摘要压缩再送进模型。三种做法对业务的影响完全不同,必须在入口统一策略,行为才可预期;放任不管的话,用户会看到时而报错、时而回答残缺。

基本信息

适用平台自托管推理服务与前置网关
判定依据提示词 token 数加上输出预留不超过模型窗口
常见策略拒绝并报错、截断、摘要压缩
执行位置入口网关先做校验,避免引擎接无效请求

入口长度校验(示意)

入口长度校验(示意)
ids = tok.encode(prompt)
limit = max_model_len - max_tokens          # 给输出留出空间
if len(ids) > limit:
    ids = ids[-limit:]                      # 从尾部保留,截法按业务选择
prompt = tok.decode(ids)

典型使用场景

  • 长文档问答:先检索再拼接,把材料控制在窗口内
  • 多轮对话:历史轮次按策略裁剪或摘要
  • 批量任务:超长样本单独标记,走另一条处理路径
  • 评测:先确认评测集的长度分布,避免因截断让结论失真
  • 容量核算:窗口开得越大,能同时服务的请求数越少

策略与风险对照

策略适用场景风险
拒绝并报错输入质量优先的接口调用方必须处理错误码
从尾部截断问题集中在末尾的任务丢掉关键前文会答非所问
从头部截断指令在前、材料在后的任务可能丢掉系统提示与约束
摘要压缩对语义完整度要求高的任务引入额外调用与延迟
网关统一做 token 级校验能减少无效请求打进引擎:超窗请求会白耗一轮预填充之后才报错。
截断方向要按任务选:指令在前就保头部,问题或结论在末尾就保尾部,没有通用答案。
把策略写进接口文档:超窗时是报错还是截断,要让调用方知道,否则线上行为不可预期。

易错点

  • 等引擎报错再处理:无效请求先消耗一轮校验与排队资源,入口拦截成本低得多
  • 截断方向一刀切:丢掉系统提示会让输出违反约束,看起来像模型的问题
  • 按字符数而不是 token 数判断:不同语言的字符与 token 比例差异很大,必然误判
  • 窗口开满不考虑并发:窗口越大,缓存预留的显存越多,同时服务的请求数就下降

数据来源与参考

  • OpenAI API 错误码文档(platform.openai.com/docs)
  • vLLM 官方文档:常见问题与错误(docs.vllm.ai)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌