diff --git a/src/openai/lib/azure.py b/src/openai/lib/azure.py index ea7bd20d99..589679b1b2 100644 --- a/src/openai/lib/azure.py +++ b/src/openai/lib/azure.py @@ -216,11 +216,7 @@ def __init__( raise ValueError( "Must provide one of the `base_url` or `azure_endpoint` arguments, or the `AZURE_OPENAI_ENDPOINT` environment variable" ) - - if azure_deployment is not None: - base_url = f"{azure_endpoint.rstrip('/')}/openai/deployments/{azure_deployment}" - else: - base_url = f"{azure_endpoint.rstrip('/')}/openai" + base_url = f"{azure_endpoint.rstrip('/')}/openai" else: if azure_endpoint is not None: raise ValueError("base_url and azure_endpoint are mutually exclusive") @@ -229,6 +225,7 @@ def __init__( # define a sentinel value to avoid any typing issues api_key = API_KEY_SENTINEL + self._azure_deployment = azure_deployment super().__init__( api_key=api_key, organization=organization, @@ -337,10 +334,14 @@ def _configure_realtime(self, model: str, extra_query: Query) -> tuple[httpx.URL "api-version": self._api_version, "deployment": self._azure_deployment or model, } + if self._azure_deployment: + query["deployment"] = self._azure_deployment + else: + query["deployment"] = model if self.api_key != "": auth_headers = {"api-key": self.api_key} else: - token = self._get_azure_ad_token() + token = await self._get_azure_ad_token() if token: auth_headers = {"Authorization": f"Bearer {token}"} @@ -491,10 +492,7 @@ def __init__( "Must provide one of the `base_url` or `azure_endpoint` arguments, or the `AZURE_OPENAI_ENDPOINT` environment variable" ) - if azure_deployment is not None: - base_url = f"{azure_endpoint.rstrip('/')}/openai/deployments/{azure_deployment}" - else: - base_url = f"{azure_endpoint.rstrip('/')}/openai" + base_url = f"{azure_endpoint.rstrip('/')}/openai" else: if azure_endpoint is not None: raise ValueError("base_url and azure_endpoint are mutually exclusive") @@ -613,6 +611,10 @@ async def _configure_realtime(self, model: str, extra_query: Query) -> tuple[htt "api-version": self._api_version, "deployment": self._azure_deployment or model, } + if self._azure_deployment: + query["deployment"] = self._azure_deployment + else: + query["deployment"] = model if self.api_key != "": auth_headers = {"api-key": self.api_key} else: diff --git a/src/openai/resources/beta/realtime/realtime.py b/src/openai/resources/beta/realtime/realtime.py index 76e57f8cb7..5e1278c7d0 100644 --- a/src/openai/resources/beta/realtime/realtime.py +++ b/src/openai/resources/beta/realtime/realtime.py @@ -362,15 +362,14 @@ async def __aenter__(self) -> AsyncRealtimeConnection: extra_query = self.__extra_query auth_headers = self.__client.auth_headers if is_async_azure_client(self.__client): - url, auth_headers = await self.__client._configure_realtime(self.__model, extra_query) - else: - url = self._prepare_url().copy_with( - params={ - **self.__client.base_url.params, - "model": self.__model, - **extra_query, - }, - ) + extra_query, auth_headers = await self.__client._configure_realtime(self.__model, extra_query) + + url = self._prepare_url().copy_with( + params={ + "model": self.__model, + **extra_query, + }, + ) log.debug("Connecting to %s", url) if self.__websocket_connection_options: log.debug("Connection options: %s", self.__websocket_connection_options) @@ -546,15 +545,14 @@ def __enter__(self) -> RealtimeConnection: extra_query = self.__extra_query auth_headers = self.__client.auth_headers if is_azure_client(self.__client): - url, auth_headers = self.__client._configure_realtime(self.__model, extra_query) - else: - url = self._prepare_url().copy_with( - params={ - **self.__client.base_url.params, - "model": self.__model, - **extra_query, - }, - ) + extra_query, auth_headers = self.__client._configure_realtime(self.__model, extra_query) + + url = self._prepare_url().copy_with( + params={ + "model": self.__model, + **extra_query, + }, + ) log.debug("Connecting to %s", url) if self.__websocket_connection_options: log.debug("Connection options: %s", self.__websocket_connection_options)