fix: stream response buffer issue (#1703)

This commit is contained in:
Se7en
2025-01-22 11:28:37 +08:00
committed by GitHub
parent ce94c6e62d
commit 133a30b8d5

View File

@@ -95,10 +95,9 @@ func onHttpRequestHeader(ctx wrapper.HttpContext, pluginConfig config.PluginConf
// Disable the route re-calculation since the plugin may modify some headers related to the chosen route. // Disable the route re-calculation since the plugin may modify some headers related to the chosen route.
ctx.DisableReroute() ctx.DisableReroute()
_, needHandleStreamingBody := activeProvider.(provider.StreamingResponseBodyHandler) // Always remove the Accept-Encoding header to prevent the LLM from sending compressed responses,
if needHandleStreamingBody { // allowing plugins to inspect or modify the response correctly
proxywasm.RemoveHttpRequestHeader("Accept-Encoding") proxywasm.RemoveHttpRequestHeader("Accept-Encoding")
}
if handler, ok := activeProvider.(provider.RequestHeadersHandler); ok { if handler, ok := activeProvider.(provider.RequestHeadersHandler); ok {
// Set the apiToken for the current request. // Set the apiToken for the current request.
@@ -200,8 +199,11 @@ func onHttpResponseHeaders(ctx wrapper.HttpContext, pluginConfig config.PluginCo
util.ReplaceResponseHeaders(headers) util.ReplaceResponseHeaders(headers)
checkStream(ctx, log) checkStream(ctx, log)
_, needHandleBody := activeProvider.(provider.TransformResponseBodyHandler)
_, needHandleStreamingBody := activeProvider.(provider.StreamingResponseBodyHandler) _, needHandleStreamingBody := activeProvider.(provider.StreamingResponseBodyHandler)
if !needHandleStreamingBody { if !needHandleBody && !needHandleStreamingBody {
ctx.DontReadResponseBody()
} else if !needHandleStreamingBody {
ctx.BufferResponseBody() ctx.BufferResponseBody()
} }