From b33a3a4d2e47044a772b46e2d9664808f0d8d426 Mon Sep 17 00:00:00 2001 From: Xijun Dai Date: Fri, 13 Jun 2025 21:51:44 +0800 Subject: [PATCH] fix(ai-proxy): fix gemini provider missing finishReason (#2408) Signed-off-by: Xijun Dai Co-authored-by: Se7en --- plugins/wasm-go/extensions/ai-proxy/provider/gemini.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/wasm-go/extensions/ai-proxy/provider/gemini.go b/plugins/wasm-go/extensions/ai-proxy/provider/gemini.go index 94089cdf4..9a10044be 100644 --- a/plugins/wasm-go/extensions/ai-proxy/provider/gemini.go +++ b/plugins/wasm-go/extensions/ai-proxy/provider/gemini.go @@ -524,7 +524,7 @@ func (g *geminiProvider) buildChatCompletionResponse(ctx wrapper.HttpContext, re choice.Message.Content = part.Text } - choice.FinishReason = util.Ptr(candidate.FinishReason) + choice.FinishReason = util.Ptr(strings.ToLower(candidate.FinishReason)) fullTextResponse.Choices = append(fullTextResponse.Choices, choice) choiceIndex += 1 } @@ -560,6 +560,9 @@ func (g *geminiProvider) buildChatCompletionStreamResponse(ctx wrapper.HttpConte var choice chatCompletionChoice if len(geminiResp.Candidates) > 0 && len(geminiResp.Candidates[0].Content.Parts) > 0 { choice.Delta = &chatMessage{Content: geminiResp.Candidates[0].Content.Parts[0].Text} + if geminiResp.Candidates[0].FinishReason != "" { + choice.FinishReason = util.Ptr(strings.ToLower(geminiResp.Candidates[0].FinishReason)) + } } streamResponse := chatCompletionResponse{ Id: fmt.Sprintf("chatcmpl-%s", uuid.New().String()),