fix(openai): treat an empty api_base as unset when discovering models

This commit is contained in:
mateo-berri 2026-09-03 17:15:38 -07:00
parent 37f2de1b0e
commit 7a9ee45057
2 changed files with 9 additions and 1 deletions

View file

@ -777,7 +777,7 @@ class OpenAIGPTConfig(BaseLLMModelInfo, BaseConfig):
def _fetch_model_ids(
api_base: str | None, bearer_token: str | None
) -> list[str]: # mutable-ok: matches get_models' list[str] contract shared by every provider override
parsed_url: Final = httpx.URL("https://api.openai.com" if api_base is None else api_base)
parsed_url: Final = httpx.URL(api_base or "https://api.openai.com")
port_suffix: Final = f":{parsed_url.port}" if parsed_url.port else ""
response: Final = litellm.module_level_client.get(
url=f"{parsed_url.scheme}://{parsed_url.host}{port_suffix}/v1/models",

View file

@ -581,6 +581,14 @@ class TestDiscoverModels:
assert models_route.calls.last.request.headers["Authorization"] == "Bearer sk-discovery"
assert not exchange_route.called
@respx.mock
def test_blank_api_base_in_params_discovers_from_openai(self, deployment_wif: dict[str, str]) -> None:
mock_token_exchange("blank-base-bearer")
models_route: Final = self.mock_models()
assert OpenAIGPTConfig().discover_models({**deployment_wif, "api_base": ""}) == ["gpt-4o-mini", "gpt-4.1"]
assert models_route.calls.last.request.headers["Authorization"] == "Bearer blank-base-bearer"
@respx.mock
def test_openai_compatible_subclass_never_mints_wif(self, deployment_wif: dict[str, str]) -> None:
exchange_route: Final = mock_token_exchange()