fix(gemini): filter SSE usage metadata in streams

This commit is contained in:
hkfires
2025-11-22 15:53:36 +08:00
parent d32bb9db6b
commit 88e566281e

View File

@@ -256,10 +256,11 @@ func (e *GeminiExecutor) ExecuteStream(ctx context.Context, auth *cliproxyauth.A
for scanner.Scan() { for scanner.Scan() {
line := scanner.Bytes() line := scanner.Bytes()
appendAPIResponseChunk(ctx, e.cfg, line) appendAPIResponseChunk(ctx, e.cfg, line)
if detail, ok := parseGeminiStreamUsage(line); ok { filtered := FilterSSEUsageMetadata(line)
if detail, ok := parseGeminiStreamUsage(filtered); ok {
reporter.publish(ctx, detail) reporter.publish(ctx, detail)
} }
lines := sdktranslator.TranslateStream(ctx, to, from, req.Model, bytes.Clone(opts.OriginalRequest), body, bytes.Clone(line), &param) lines := sdktranslator.TranslateStream(ctx, to, from, req.Model, bytes.Clone(opts.OriginalRequest), body, bytes.Clone(filtered), &param)
for i := range lines { for i := range lines {
out <- cliproxyexecutor.StreamChunk{Payload: []byte(lines[i])} out <- cliproxyexecutor.StreamChunk{Payload: []byte(lines[i])}
} }