You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

启用stream_options后HTTP/2流重置INTERNAL_ERROR问题求助

问题原因分析

1. 响应结构变更导致处理逻辑不兼容

启用"stream_options": {"include_usage": true}后,OpenAI的流式响应会在最后追加一个包含usage字段的结束帧。你之前的自定义Token计算逻辑(用于反向代理的Transformer)未处理这种额外的帧结构,在解析或转发时出现异常,触发OpenAI服务器或YARP代理的HTTP/2流重置。

2. 响应发送时机冲突

原逻辑可能在处理完流式内容后尝试修改响应(比如清理响应内容、调整响应头)。但启用include_usage后,末尾的usage帧会提前触发响应发送流程,后续YARP内部的响应清理操作就会抛出The response cannot be cleared, it has already started sending异常,进而导致整个流被重置。

3. HTTP/2协议处理兼容性问题

额外的结束帧可能与YARP的HTTP/2客户端处理逻辑存在兼容性问题,导致帧顺序、格式校验失败,服务器端主动发送INTERNAL_ERROR重置流。

修复方案
  • 适配自定义Transformer逻辑

    • 修改Token计算代码,识别流式响应末尾的usage帧格式,跳过或正确处理该帧,避免解析错误。
    • 确保在TransformResponseAsync等方法中,仅处理流式数据转发,不执行任何会修改已发送响应的操作(比如清空响应、修改响应头)。
  • 调整YARP转发配置

    • 配置ForwarderRequestConfig时,禁用不必要的响应自动处理逻辑,比如设置AllowResponseBuffering = false,避免YARP尝试缓冲已开始发送的响应内容。
    • 检查是否有自定义的响应拦截逻辑,确保不会在响应发送后执行清理或修改操作。
  • 升级依赖版本

    • 将YARP升级到最新稳定版本(如2.1及以上),同时升级.NET SDK到7或8版本,这类版本修复了多个HTTP/2流处理的已知Bug,可能解决兼容性问题。
  • 动态控制stream_options启用

    • 针对image_url类请求,动态移除请求中的stream_options参数(因为该场景下该特性无效),仅在纯文本请求中启用,减少异常触发的场景。

内容的提问来源于stack exchange,提问作者Jayendran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 08:08:20