diff --git a/internal/translator/claude/gemini/claude_gemini_request.go b/internal/translator/claude/gemini/claude_gemini_request.go index 4ca3f4a7..1f25117a 100644 --- a/internal/translator/claude/gemini/claude_gemini_request.go +++ b/internal/translator/claude/gemini/claude_gemini_request.go @@ -98,7 +98,9 @@ func ConvertGeminiRequestToClaude(modelName string, inputRawJSON []byte, stream // Temperature setting for controlling response randomness if temp := genConfig.Get("temperature"); temp.Exists() { out, _ = sjson.Set(out, "temperature", temp.Float()) - } else if topP := genConfig.Get("topP"); topP.Exists() { + } + // Top P setting for nucleus sampling (filtered out if temperature is set) + if topP := genConfig.Get("topP"); topP.Exists() && !genConfig.Get("temperature").Exists() { out, _ = sjson.Set(out, "top_p", topP.Float()) } // Stop sequences configuration for custom termination conditions diff --git a/internal/translator/claude/openai/chat-completions/claude_openai_request.go b/internal/translator/claude/openai/chat-completions/claude_openai_request.go index 526593c6..5b71ce70 100644 --- a/internal/translator/claude/openai/chat-completions/claude_openai_request.go +++ b/internal/translator/claude/openai/chat-completions/claude_openai_request.go @@ -110,7 +110,10 @@ func ConvertOpenAIRequestToClaude(modelName string, inputRawJSON []byte, stream // Temperature setting for controlling response randomness if temp := root.Get("temperature"); temp.Exists() { out, _ = sjson.Set(out, "temperature", temp.Float()) - } else if topP := root.Get("top_p"); topP.Exists() { + } + + // Top P setting for nucleus sampling (filtered out if temperature is set) + if topP := root.Get("top_p"); topP.Exists() && !root.Get("temperature").Exists() { out, _ = sjson.Set(out, "top_p", topP.Float()) }