From 14c74e5e848b8583203effb67a4a0bb48259da2a Mon Sep 17 00:00:00 2001 From: extremk <86131343@qq.com> Date: Sat, 10 Jan 2026 18:48:33 +0800 Subject: [PATCH] Handle 'n' parameter for candidate count in requests Added handling for the 'n' parameter to set candidate count in generationConfig. --- .../openai/chat-completions/gemini_openai_request.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/internal/translator/gemini/openai/chat-completions/gemini_openai_request.go b/internal/translator/gemini/openai/chat-completions/gemini_openai_request.go index 57e150c1..3d2009db 100644 --- a/internal/translator/gemini/openai/chat-completions/gemini_openai_request.go +++ b/internal/translator/gemini/openai/chat-completions/gemini_openai_request.go @@ -99,6 +99,13 @@ func ConvertOpenAIRequestToGemini(modelName string, inputRawJSON []byte, _ bool) out, _ = sjson.SetBytes(out, "generationConfig.topK", tkr.Num) } + // Candidate count (OpenAI 'n' parameter) + if n := gjson.GetBytes(rawJSON, "n"); n.Exists() && n.Type == gjson.Number { + if val := n.Int(); val > 1 { + out, _ = sjson.SetBytes(out, "generationConfig.candidateCount", val) + } + } + // Map OpenAI modalities -> Gemini generationConfig.responseModalities // e.g. "modalities": ["image", "text"] -> ["IMAGE", "TEXT"] if mods := gjson.GetBytes(rawJSON, "modalities"); mods.Exists() && mods.IsArray() {