Route open models through ZenMux with OpenRouter fallback

This commit is contained in:
Codex
2026-10-11 18:40:45 -07:00
parent 9ebc213d71
commit cd50972093
4 changed files with 93 additions and 5 deletions
+23 -3
View File
@@ -16,6 +16,7 @@ def oauth_ready(path):
def build_config(catalog, env, exists):
routes = []
fallbacks = []
def add(alias, model, key=None, **params):
if key:
@@ -30,7 +31,26 @@ def build_config(catalog, env, exists):
api_base='https://zenmux.ai/api/anthropic')
if env.get('OPENROUTER_API_KEY'):
for alias, model in catalog['openrouter'].items():
add(alias, 'openrouter/' + model, 'OPENROUTER_API_KEY')
primary = catalog.get('zenmux_open_models', {}).get(alias)
if primary and env.get('ZENMUX_SUBSCRIPTION_API_KEY'):
if primary != model:
raise ValueError('Cross-provider model mismatch: ' + alias)
add(alias, 'openai/' + primary, 'ZENMUX_SUBSCRIPTION_API_KEY',
api_base='https://zenmux.ai/api/v1', max_retries=0)
routes[-1]['model_info'] = {'cooldown_time': 60,
'allowed_fails_policy': {'RateLimitErrorAllowedFails': 0,
'AuthenticationErrorAllowedFails': 0,
'InternalServerErrorAllowedFails': 0,
'ServiceUnavailableErrorAllowedFails': 0,
'TimeoutErrorAllowedFails': 0}}
add(alias + '-openrouter', 'openrouter/' + model, 'OPENROUTER_API_KEY')
fallbacks.append({alias: [alias + '-openrouter']})
else:
add(alias, 'openrouter/' + model, 'OPENROUTER_API_KEY')
elif env.get('ZENMUX_SUBSCRIPTION_API_KEY'):
for alias, model in catalog.get('zenmux_open_models', {}).items():
add(alias, 'openai/' + model, 'ZENMUX_SUBSCRIPTION_API_KEY',
api_base='https://zenmux.ai/api/v1', max_retries=0)
if env.get('GOOGLE_AI_STUDIO_API_KEY'):
for alias, model in catalog['google_ai_studio'].items():
add(alias, 'gemini/' + model, 'GOOGLE_AI_STUDIO_API_KEY')
@@ -56,8 +76,8 @@ def build_config(catalog, env, exists):
'disable_env_credential_login': True,
},
'litellm_settings': {'drop_params': False, 'set_verbose': False},
# No cross-provider or subscription-to-PAYG fallback without an explicit decision.
'router_settings': {'num_retries': 1, 'timeout': 180},
# Only explicitly approved open-model routes have cross-provider fallbacks.
'router_settings': {'num_retries': 1, 'timeout': 180, 'fallbacks': fallbacks},
}