diff --git a/libs/partners/openai/langchain_openai/chat_models/base.py b/libs/partners/openai/langchain_openai/chat_models/base.py index 1bc9b66d880..7921bce3a7f 100644 --- a/libs/partners/openai/langchain_openai/chat_models/base.py +++ b/libs/partners/openai/langchain_openai/chat_models/base.py @@ -1885,11 +1885,24 @@ class BaseChatOpenAI(BaseChatModel): "schema must be specified when method is not 'json_mode'. " "Received None." ) + tool_name = convert_to_openai_tool(schema)["function"]["name"] + base_url = ( + getattr(self, "openai_api_base", "") + or getattr(self, "api_base", "") + or "" + ).lower() + # The Azure-Hosted Models routes to this function + # so we need to set the tool_choice to required + if "azure.com" in base_url: + tool_choice_default = "required" + else: + tool_choice_default = tool_name + bind_kwargs = self._filter_disabled_params( **{ **dict( - tool_choice=tool_name, + tool_choice=tool_choice_default, parallel_tool_calls=False, strict=strict, ls_structured_output_format={