Skip to content

Commit b97d1e5

Browse files
committed
fix: correct token counting
1 parent 81ece2b commit b97d1e5

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

internal/proxy/streaming.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@ import (
1818

1919
// handleStreamingResponse processes streaming SSE responses
2020
func (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

Comments
 (0)