From b0f8083209d79df029c02e364076ca68b58e39b3 Mon Sep 17 00:00:00 2001 From: FadelT Date: Thu, 18 Jun 2026 15:17:24 +0200 Subject: [PATCH] fix(bedrock): use elif in map_openai_params for efficiency Replace repeated if statements with elif in parameter mapping loop to skip unnecessary checks once a match is found. Improves performance on every Bedrock Converse request and prevents potential bugs from parameters matching multiple branches. Aligns with Anthropic adapter implementation pattern (line 1429+) and other provider adapters that correctly use elif for mutually exclusive parameter checks. Fixes #30742 --- .../bedrock/chat/converse_transformation.py | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/litellm/llms/bedrock/chat/converse_transformation.py b/litellm/llms/bedrock/chat/converse_transformation.py index bb261ec85b2..fa4c29309cd 100644 --- a/litellm/llms/bedrock/chat/converse_transformation.py +++ b/litellm/llms/bedrock/chat/converse_transformation.py @@ -910,17 +910,17 @@ class AmazonConverseConfig(BaseConfig): non_default_params=non_default_params, is_thinking_enabled=is_thinking_enabled, ) - if param == "max_tokens" or param == "max_completion_tokens": + elif param == "max_tokens" or param == "max_completion_tokens": optional_params["maxTokens"] = value - if param == "stream": + elif param == "stream": optional_params["stream"] = value - if param == "stop": + elif param == "stop": if isinstance(value, str): if len(value) == 0: # converse raises error for empty strings continue value = [value] optional_params["stopSequences"] = value - if param == "temperature" or param == "top_p": + elif param == "temperature" or param == "top_p": AnthropicConfig._apply_sampling_param( optional_params=optional_params, model=model, @@ -929,14 +929,14 @@ class AmazonConverseConfig(BaseConfig): drop_params=drop_params, output_key="topP" if param == "top_p" else param, ) - if param == "tools" and isinstance(value, list): + elif param == "tools" and isinstance(value, list): self._apply_tool_call_transformation( tools=cast(List[OpenAIChatCompletionToolParam], value), model=model, non_default_params=non_default_params, optional_params=optional_params, ) - if param == "tool_choice": + elif param == "tool_choice": _tool_choice_value = self.map_tool_choice_values( model=model, tool_choice=value, @@ -944,12 +944,12 @@ class AmazonConverseConfig(BaseConfig): ) if _tool_choice_value is not None: optional_params["tool_choice"] = _tool_choice_value - if param == "parallel_tool_calls": + elif param == "parallel_tool_calls": disable_parallel = not value optional_params["_parallel_tool_use_config"] = { "tool_choice": {"disable_parallel_tool_use": disable_parallel} } - if param == "thinking": + elif param == "thinking": optional_params["thinking"] = value elif param == "reasoning_effort" and isinstance(value, str): self._handle_reasoning_effort_parameter( @@ -957,9 +957,9 @@ class AmazonConverseConfig(BaseConfig): ) elif param == "context_management" and isinstance(value, (dict, list)): self._map_context_management_param(value, optional_params) - if param == "requestMetadata": + elif param == "requestMetadata": self._map_request_metadata_param(value, optional_params) - if param == "service_tier" and isinstance(value, str): + elif param == "service_tier" and isinstance(value, str): self._map_service_tier_param(value, optional_params) if param == "web_search_options" and isinstance(value, dict):