From edcdb378fd8e2a8449ad294912ed4220c8a877cb Mon Sep 17 00:00:00 2001 From: xqx121 <78908927+xqx121@users.noreply.github.com> Date: Wed, 18 Jun 2025 14:26:23 +0800 Subject: [PATCH 1/2] Update relay-gemini-native.go --- relay/channel/gemini/relay-gemini-native.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/relay/channel/gemini/relay-gemini-native.go b/relay/channel/gemini/relay-gemini-native.go index d9d0054d..b57638df 100644 --- a/relay/channel/gemini/relay-gemini-native.go +++ b/relay/channel/gemini/relay-gemini-native.go @@ -64,6 +64,9 @@ func GeminiTextGenerationHandler(c *gin.Context, resp *http.Response, info *rela usage.PromptTokensDetails.TextTokens = detail.TokenCount } } + + // 计算最终使用量 + usage.CompletionTokens = usage.TotalTokens - usage.PromptTokens // 直接返回 Gemini 原生格式的 JSON 响应 jsonResponse, err := json.Marshal(geminiResponse) From 8201daa4b40dd68b6ed1ae13dae0871c912f979b Mon Sep 17 00:00:00 2001 From: creamlike1024 Date: Thu, 19 Jun 2025 14:50:50 +0800 Subject: [PATCH 2/2] update relay-gemini-native.go --- relay/channel/gemini/relay-gemini-native.go | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/relay/channel/gemini/relay-gemini-native.go b/relay/channel/gemini/relay-gemini-native.go index b57638df..c9a11aa6 100644 --- a/relay/channel/gemini/relay-gemini-native.go +++ b/relay/channel/gemini/relay-gemini-native.go @@ -51,7 +51,7 @@ func GeminiTextGenerationHandler(c *gin.Context, resp *http.Response, info *rela // 计算使用量(基于 UsageMetadata) usage := dto.Usage{ PromptTokens: geminiResponse.UsageMetadata.PromptTokenCount, - CompletionTokens: geminiResponse.UsageMetadata.CandidatesTokenCount, + CompletionTokens: geminiResponse.UsageMetadata.CandidatesTokenCount + geminiResponse.UsageMetadata.ThoughtsTokenCount, TotalTokens: geminiResponse.UsageMetadata.TotalTokenCount, } @@ -64,9 +64,6 @@ func GeminiTextGenerationHandler(c *gin.Context, resp *http.Response, info *rela usage.PromptTokensDetails.TextTokens = detail.TokenCount } } - - // 计算最终使用量 - usage.CompletionTokens = usage.TotalTokens - usage.PromptTokens // 直接返回 Gemini 原生格式的 JSON 响应 jsonResponse, err := json.Marshal(geminiResponse) @@ -111,7 +108,7 @@ func GeminiTextGenerationStreamHandler(c *gin.Context, resp *http.Response, info // 更新使用量统计 if geminiResponse.UsageMetadata.TotalTokenCount != 0 { usage.PromptTokens = geminiResponse.UsageMetadata.PromptTokenCount - usage.CompletionTokens = geminiResponse.UsageMetadata.CandidatesTokenCount + usage.CompletionTokens = geminiResponse.UsageMetadata.CandidatesTokenCount + geminiResponse.UsageMetadata.ThoughtsTokenCount usage.TotalTokens = geminiResponse.UsageMetadata.TotalTokenCount usage.CompletionTokenDetails.ReasoningTokens = geminiResponse.UsageMetadata.ThoughtsTokenCount for _, detail := range geminiResponse.UsageMetadata.PromptTokensDetails { @@ -139,7 +136,7 @@ func GeminiTextGenerationStreamHandler(c *gin.Context, resp *http.Response, info } // 计算最终使用量 - usage.CompletionTokens = usage.TotalTokens - usage.PromptTokens + // usage.CompletionTokens = usage.TotalTokens - usage.PromptTokens // 移除流式响应结尾的[Done],因为Gemini API没有发送Done的行为 //helper.Done(c)