Propagate upstream token usage across Gemini usage metadata

This commit is contained in:
CJACK.
2026-04-07 10:16:00 +08:00
parent 96b8587c5b
commit 5bcea3d727
5 changed files with 42 additions and 5 deletions

View File

@@ -67,6 +67,7 @@ type geminiStreamRuntime struct {
thinking strings.Builder
text strings.Builder
promptTokens int
outputTokens int
}
@@ -112,6 +113,9 @@ func (s *geminiStreamRuntime) onParsed(parsed sse.LineResult) streamengine.Parse
if !parsed.Parsed {
return streamengine.ParsedDecision{}
}
if parsed.PromptTokens > 0 {
s.promptTokens = parsed.PromptTokens
}
if parsed.OutputTokens > 0 {
s.outputTokens = parsed.OutputTokens
}
@@ -198,6 +202,6 @@ func (s *geminiStreamRuntime) finalize() {
},
},
"modelVersion": s.model,
"usageMetadata": buildGeminiUsage(s.finalPrompt, finalThinking, finalText, s.outputTokens),
"usageMetadata": buildGeminiUsage(s.finalPrompt, finalThinking, finalText, s.promptTokens, s.outputTokens),
})
}