From 1ca87aa4cca1360d9b42a044e38887386bebf204 Mon Sep 17 00:00:00 2001 From: Aditya Aggarwal <42476079+aditya-786@users.noreply.github.com> Date: Sun, 28 Jun 2026 17:33:55 +0530 Subject: [PATCH] fix: enable model discovery for the custom_openai provider get_valid_models(check_provider_endpoint=True) discovers a provider's models via ProviderConfigManager.get_provider_model_info(provider).get_models(...), but that method returned None for custom_openai, so the discovery branch was skipped and the /v1/models endpoint was never queried for an OpenAI-compatible custom provider. Return OpenAIGPTConfig for CUSTOM_OPENAI, the same config used for openai, so custom_openai discovers models like openai does. --- litellm/utils.py | 2 ++ tests/litellm_utils_tests/test_utils.py | 30 +++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/litellm/utils.py b/litellm/utils.py index 5dbff5070aa..4bbaba83d2f 100644 --- a/litellm/utils.py +++ b/litellm/utils.py @@ -8358,6 +8358,8 @@ class ProviderConfigManager: return litellm.FireworksAIConfig() elif LlmProviders.OPENAI == provider: return litellm.OpenAIGPTConfig() + elif LlmProviders.CUSTOM_OPENAI == provider: + return litellm.OpenAIGPTConfig() elif LlmProviders.GEMINI == provider: return litellm.GeminiModelInfo() elif LlmProviders.VERTEX_AI == provider: diff --git a/tests/litellm_utils_tests/test_utils.py b/tests/litellm_utils_tests/test_utils.py index 697c3837602..be5d1fc324e 100644 --- a/tests/litellm_utils_tests/test_utils.py +++ b/tests/litellm_utils_tests/test_utils.py @@ -1656,6 +1656,36 @@ def test_get_valid_models_openai_proxy(monkeypatch): assert "litellm_proxy/gpt-5.5" in valid_models +def test_get_valid_models_custom_openai(monkeypatch): + from litellm.utils import get_valid_models + import litellm + + mock_response_data = { + "object": "list", + "data": [ + { + "id": "my-custom-model", + "object": "model", + "created": 1686935002, + "owned_by": "organization-owner", + }, + ], + } + + mock_response = MagicMock() + mock_response.status_code = 200 + mock_response.json.return_value = mock_response_data + + with patch.object(litellm.module_level_client, "get", return_value=mock_response): + valid_models = get_valid_models( + check_provider_endpoint=True, + custom_llm_provider="custom_openai", + api_key="sk-1234", + api_base="https://my-openai-compatible-endpoint/v1", + ) + assert "my-custom-model" in valid_models + + def test_get_valid_models_fireworks_ai(monkeypatch): from litellm.utils import get_valid_models import litellm