From d73d2cc42b0604f849d84d8ca3ca98530b0ea75a Mon Sep 17 00:00:00 2001 From: m1heng <18018422+m1heng@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:36:09 +0800 Subject: [PATCH] fix: prevent tools override --- .../bedrock/chat/converse_transformation.py | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/litellm/llms/bedrock/chat/converse_transformation.py b/litellm/llms/bedrock/chat/converse_transformation.py index 521dd20854bb..b40c90c9ff84 100644 --- a/litellm/llms/bedrock/chat/converse_transformation.py +++ b/litellm/llms/bedrock/chat/converse_transformation.py @@ -223,7 +223,9 @@ def map_openai_params( json_schema=json_schema, schema_name=schema_name if schema_name != "" else "json_tool_call", ) - optional_params["tools"] = [_tool] + optional_params = self._add_tools_to_optional_params( + optional_params=optional_params, tools=[_tool] + ) optional_params["tool_choice"] = ToolChoiceValuesBlock( tool=SpecificToolChoiceBlock( name=schema_name if schema_name != "" else "json_tool_call" @@ -247,7 +249,9 @@ def map_openai_params( if param == "top_p": optional_params["topP"] = value if param == "tools": - optional_params["tools"] = value + optional_params = self._add_tools_to_optional_params( + optional_params=optional_params, tools=value # type: ignore + ) if param == "tool_choice": _tool_choice_value = self.map_tool_choice_values( model=model, tool_choice=value, drop_params=drop_params # type: ignore @@ -721,3 +725,15 @@ def validate_environment( if api_key: headers["Authorization"] = f"Bearer {api_key}" return headers + + def _add_tools_to_optional_params( + self, optional_params: dict, tools: List[ChatCompletionToolParam] + ) -> dict: + if "tools" not in optional_params: + optional_params["tools"] = tools + else: + optional_params["tools"] = [ + *optional_params["tools"], + *tools, + ] + return optional_params