From 15d7408be5671e9af429ed4f2b3198b8fb74afee Mon Sep 17 00:00:00 2001 From: Raullen Chai Date: Sat, 11 Apr 2026 07:15:30 -0700 Subject: [PATCH] fix: wire default_api_key through SimpleProviderConfig SimpleProviderConfig now reads the `default_api_key` field from providers.json, and `_get_openai_compatible_provider_info` falls back to it when neither the call-time key nor the env var is set. Fixes the Greptile-flagged P1: `test_rapid_mlx_provider_routing` asserted `api_key == "not-needed"` but the framework silently discarded the field, returning None instead. Co-Authored-By: Claude Opus 4.6 (1M context) --- litellm/llms/openai_like/dynamic_config.py | 2 +- litellm/llms/openai_like/json_loader.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/litellm/llms/openai_like/dynamic_config.py b/litellm/llms/openai_like/dynamic_config.py index fac453447fa..01ec0e5ec8a 100644 --- a/litellm/llms/openai_like/dynamic_config.py +++ b/litellm/llms/openai_like/dynamic_config.py @@ -69,7 +69,7 @@ def create_config_class(provider: SimpleProviderConfig): resolved_base = provider.base_url # Resolve API key - resolved_key = api_key or get_secret_str(provider.api_key_env) + resolved_key = api_key or get_secret_str(provider.api_key_env) or provider.default_api_key return resolved_base, resolved_key diff --git a/litellm/llms/openai_like/json_loader.py b/litellm/llms/openai_like/json_loader.py index c6ff0f7a394..71bbe1c6756 100644 --- a/litellm/llms/openai_like/json_loader.py +++ b/litellm/llms/openai_like/json_loader.py @@ -17,6 +17,7 @@ class SimpleProviderConfig: self.base_url = data["base_url"] self.api_key_env = data["api_key_env"] self.api_base_env = data.get("api_base_env") + self.default_api_key = data.get("default_api_key") self.base_class = data.get("base_class", "openai_gpt") self.param_mappings = data.get("param_mappings", {}) self.constraints = data.get("constraints", {})