diff --git a/src/openai/_base_client.py b/src/openai/_base_client.py index a168301f75..7b03d26f7a 100644 --- a/src/openai/_base_client.py +++ b/src/openai/_base_client.py @@ -578,7 +578,10 @@ def base_url(self) -> URL: @base_url.setter def base_url(self, url: URL | str) -> None: - self._client.base_url = url if isinstance(url, URL) else URL(url) + url = url if isinstance(url, URL) else URL(url) + url = self._enforce_trailing_slash(url) + self._base_url = url + self._client.base_url = url @lru_cache(maxsize=None) def platform_headers(self) -> Dict[str, str]: diff --git a/tests/test_client.py b/tests/test_client.py index c5dbfe4bfe..5cd22912d7 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -986,6 +986,12 @@ def test_base_url_env(self) -> None: client = AsyncOpenAI(api_key=api_key, _strict_response_validation=True) assert client.base_url == "http://localhost:5000/from/env/" + def test_change_base_url(selr) -> None: + with update_env(OPENAI_BASE_URL="http://localhost:5000/from/env"): + client = AsyncOpenAI(api_key=api_key, _strict_response_validation=True) + client.base_url = "http://localhost:5000/custom/path/" + assert client.base_url == "http://localhost:5000/custom/path/" + @pytest.mark.parametrize( "client", [