diff --git a/litellm/responses/litellm_completion_transformation/transformation.py b/litellm/responses/litellm_completion_transformation/transformation.py index debd9f77b7e..e699811b33b 100644 --- a/litellm/responses/litellm_completion_transformation/transformation.py +++ b/litellm/responses/litellm_completion_transformation/transformation.py @@ -186,8 +186,14 @@ class LiteLLMCompletionResponsesConfig: if reasoning_param: if isinstance(reasoning_param, dict): # reasoning can be {"effort": "low|medium|high", "summary": "detailed"} - # Preserve the full dict structure for reasoning_effort - reasoning_effort = reasoning_param + # Keep the full dict when summary is set so the responses API bridge can + # forward it; otherwise use the effort string for chat completion (e.g. Gemini). + if "summary" in reasoning_param: + reasoning_effort = reasoning_param + elif "effort" in reasoning_param: + reasoning_effort = reasoning_param.get("effort") + else: + reasoning_effort = reasoning_param elif isinstance(reasoning_param, str): # reasoning could be a string directly reasoning_effort = reasoning_param