fix: Fix the issue where Gemini loses content when converting OpenAI format in the stream.

This commit is contained in:
MartialBE
2024-12-20 20:24:49 +08:00
parent cab30014ad
commit 158edab974

View File

@@ -236,13 +236,17 @@ func streamResponseGeminiChat2OpenAI(geminiResponse *GeminiChatResponse) *dto.Ch
var choice dto.ChatCompletionsStreamResponseChoice var choice dto.ChatCompletionsStreamResponseChoice
//choice.Delta.SetContentString(geminiResponse.GetResponseText()) //choice.Delta.SetContentString(geminiResponse.GetResponseText())
if len(geminiResponse.Candidates) > 0 && len(geminiResponse.Candidates[0].Content.Parts) > 0 { if len(geminiResponse.Candidates) > 0 && len(geminiResponse.Candidates[0].Content.Parts) > 0 {
respFirst := geminiResponse.Candidates[0].Content.Parts[0] respFirstParts := geminiResponse.Candidates[0].Content.Parts
if respFirst.FunctionCall != nil { if respFirstParts[0].FunctionCall != nil {
// function response // function response
choice.Delta.ToolCalls = getToolCalls(&geminiResponse.Candidates[0]) choice.Delta.ToolCalls = getToolCalls(&geminiResponse.Candidates[0])
} else { } else {
// text response // 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 var response dto.ChatCompletionsStreamResponse