From 44062f382b56863421dba4e73024d7bff241be39 Mon Sep 17 00:00:00 2001 From: Aditya Aggarwal <42476079+aditya-786@users.noreply.github.com> Date: Mon, 3 Aug 2026 21:57:28 +0530 Subject: [PATCH] fix(custom-openai): avoid OpenAI API key fallback during discovery --- .../llms/openai_like/chat/transformation.py | 2 +- .../test_openai_like_chat_transformation.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/litellm/llms/openai_like/chat/transformation.py b/litellm/llms/openai_like/chat/transformation.py index 5b406fea70f..cea1713ca61 100644 --- a/litellm/llms/openai_like/chat/transformation.py +++ b/litellm/llms/openai_like/chat/transformation.py @@ -172,5 +172,5 @@ class CustomOpenAIChatConfig(OpenAILikeChatConfig): def get_models(self, api_key: Optional[str] = None, api_base: Optional[str] = None) -> list[str]: if api_base is None: raise ValueError("api_base must be set to discover models for the custom_openai provider") - models = super().get_models(api_key=api_key, api_base=api_base) + models = super().get_models(api_key=api_key or "", api_base=api_base) return [f"custom_openai/{model}" for model in models] diff --git a/tests/test_litellm/llms/openai_like/chat/test_openai_like_chat_transformation.py b/tests/test_litellm/llms/openai_like/chat/test_openai_like_chat_transformation.py index 1fc2c52bdd5..e7c71ec91be 100644 --- a/tests/test_litellm/llms/openai_like/chat/test_openai_like_chat_transformation.py +++ b/tests/test_litellm/llms/openai_like/chat/test_openai_like_chat_transformation.py @@ -96,6 +96,24 @@ def test_custom_openai_get_models_requires_api_base(): CustomOpenAIChatConfig().get_models(api_base=None) +def test_custom_openai_get_models_does_not_use_openai_api_key(monkeypatch): + mock_response = MagicMock() + mock_response.status_code = 200 + mock_response.json.return_value = {"data": [{"id": "my-custom-model"}]} + monkeypatch.setenv("OPENAI_API_KEY", "unrelated-openai-api-key") + + with patch.object(litellm.module_level_client, "get", return_value=mock_response) as mock_get: + models = CustomOpenAIChatConfig().get_models( + api_base="https://my-openai-compatible-endpoint/v1" + ) + + assert models == ["custom_openai/my-custom-model"] + mock_get.assert_called_once_with( + url="https://my-openai-compatible-endpoint/v1/models", + headers={"Authorization": "Bearer "}, + ) + + def test_openai_model_info_uses_openai_config(): config = ProviderConfigManager.get_provider_model_info( model=None,