From 158edab97414fe3b860e3e85b15057bec6bf89d0 Mon Sep 17 00:00:00 2001 From: MartialBE Date: Fri, 20 Dec 2024 20:24:49 +0800 Subject: [PATCH] fix: Fix the issue where Gemini loses content when converting OpenAI format in the stream. --- relay/channel/gemini/relay-gemini.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/relay/channel/gemini/relay-gemini.go b/relay/channel/gemini/relay-gemini.go index e48ae087..7eea7653 100644 --- a/relay/channel/gemini/relay-gemini.go +++ b/relay/channel/gemini/relay-gemini.go @@ -236,13 +236,17 @@ func streamResponseGeminiChat2OpenAI(geminiResponse *GeminiChatResponse) *dto.Ch var choice dto.ChatCompletionsStreamResponseChoice //choice.Delta.SetContentString(geminiResponse.GetResponseText()) if len(geminiResponse.Candidates) > 0 && len(geminiResponse.Candidates[0].Content.Parts) > 0 { - respFirst := geminiResponse.Candidates[0].Content.Parts[0] - if respFirst.FunctionCall != nil { + respFirstParts := geminiResponse.Candidates[0].Content.Parts + if respFirstParts[0].FunctionCall != nil { // function response choice.Delta.ToolCalls = getToolCalls(&geminiResponse.Candidates[0]) } else { // text response - choice.Delta.SetContentString(respFirst.Text) + var texts []string + for _, part := range respFirstParts { + texts = append(texts, part.Text) + } + choice.Delta.SetContentString(strings.Join(texts, "\n")) } } var response dto.ChatCompletionsStreamResponse