From e18001299b8d366c1147d71050f8d75cb2e90891 Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Thu, 22 May 2025 16:11:50 +0800 Subject: [PATCH] feat: enhance Gemini response handling by adding reasoning content and updating JSON decoding method --- relay/channel/gemini/relay-gemini.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/relay/channel/gemini/relay-gemini.go b/relay/channel/gemini/relay-gemini.go index 80d55f6d..da0bc5fc 100644 --- a/relay/channel/gemini/relay-gemini.go +++ b/relay/channel/gemini/relay-gemini.go @@ -539,6 +539,8 @@ func responseGeminiChat2OpenAI(response *GeminiChatResponse) *dto.OpenAITextResp if call := getResponseToolCall(&part); call != nil { toolCalls = append(toolCalls, *call) } + } else if part.Thought { + choice.Message.ReasoningContent = part.Text } else { if part.ExecutableCode != nil { texts = append(texts, "```"+part.ExecutableCode.Language+"\n"+part.ExecutableCode.Code+"\n```") @@ -556,7 +558,6 @@ func responseGeminiChat2OpenAI(response *GeminiChatResponse) *dto.OpenAITextResp choice.Message.SetToolCalls(toolCalls) isToolCall = true } - choice.Message.SetStringContent(strings.Join(texts, "\n")) } @@ -724,8 +725,11 @@ func GeminiChatHandler(c *gin.Context, resp *http.Response, info *relaycommon.Re if err != nil { return service.OpenAIErrorWrapper(err, "close_response_body_failed", http.StatusInternalServerError), nil } + if common.DebugEnabled { + println(string(responseBody)) + } var geminiResponse GeminiChatResponse - err = json.Unmarshal(responseBody, &geminiResponse) + err = common.DecodeJson(responseBody, &geminiResponse) if err != nil { return service.OpenAIErrorWrapper(err, "unmarshal_response_body_failed", http.StatusInternalServerError), nil }