@@ -18,8 +18,11 @@ import (
1818
1919// handleStreamingResponse processes streaming SSE responses
2020func (p * Proxy ) handleStreamingResponse (w http.ResponseWriter , resp * http.Response , endpoint config.Endpoint , trans transformer.Transformer , transformerName string , thinkingEnabled bool ) (int , int , error ) {
21- // Copy response headers
21+ // Copy response headers except Content-Length (streaming response length is unknown)
2222 for key , values := range resp .Header {
23+ if key == "Content-Length" {
24+ continue
25+ }
2326 for _ , value := range values {
2427 w .Header ().Add (key , value )
2528 }
@@ -88,7 +91,7 @@ func (p *Proxy) handleStreamingResponse(w http.ResponseWriter, resp *http.Respon
8891 } else {
8992 logger .DebugLog ("[%s] SSE Event #%d (Transformed): %s" , endpoint .Name , eventCount , string (transformedEvent ))
9093
91- p .extractTokensFromEvent (eventData , & inputTokens , & outputTokens )
94+ p .extractTokensFromEvent (transformedEvent , & inputTokens , & outputTokens )
9295 p .extractTextFromEvent (transformedEvent , & outputText )
9396
9497 if _ , writeErr := w .Write (transformedEvent ); writeErr != nil {
@@ -127,11 +130,11 @@ func (p *Proxy) extractTokensFromEvent(eventData []byte, inputTokens, outputToke
127130 scanner := bufio .NewScanner (bytes .NewReader (eventData ))
128131 for scanner .Scan () {
129132 line := scanner .Text ()
130- if ! strings .HasPrefix (line , "data: " ) {
133+ if ! strings .HasPrefix (line , "data:" ) {
131134 continue
132135 }
133136
134- jsonData := strings .TrimPrefix (line , "data: " )
137+ jsonData := strings .TrimPrefix (line , "data:" )
135138 var event map [string ]interface {}
136139 if err := json .Unmarshal ([]byte (jsonData ), & event ); err != nil {
137140 continue
@@ -161,11 +164,11 @@ func (p *Proxy) extractTextFromEvent(transformedEvent []byte, outputText *string
161164 scanner := bufio .NewScanner (bytes .NewReader (transformedEvent ))
162165 for scanner .Scan () {
163166 line := scanner .Text ()
164- if ! strings .HasPrefix (line , "data: " ) {
167+ if ! strings .HasPrefix (line , "data:" ) {
165168 continue
166169 }
167170
168- jsonData := strings .TrimPrefix (line , "data: " )
171+ jsonData := strings .TrimPrefix (line , "data:" )
169172 var event map [string ]interface {}
170173 if err := json .Unmarshal ([]byte (jsonData ), & event ); err != nil {
171174 continue
0 commit comments