接入 OpenAI 官方 API 并为 Codex 订阅配置同型号回退
This commit is contained in:
@@ -57,6 +57,46 @@ class ConfigTests(unittest.TestCase):
|
||||
settings = build_config(self.catalog, {}, lambda _: False)['general_settings']
|
||||
self.assertTrue(settings['disable_env_credential_login'])
|
||||
|
||||
def test_official_openai_missing_key_does_not_change_existing_config(self):
|
||||
catalog = {**self.catalog, 'openai': {'transcribe': 'gpt-transcribe'}}
|
||||
config = build_config(catalog, {}, lambda _: True)
|
||||
self.assertFalse(any(r['model_name'].startswith('openai/') for r in config['model_list']))
|
||||
self.assertEqual(config['router_settings']['fallbacks'], [])
|
||||
|
||||
def test_official_openai_is_not_misclassified_as_zenmux(self):
|
||||
catalog = {**self.catalog, 'openai': {'transcribe': 'gpt-transcribe'}}
|
||||
config = build_config(catalog, {'OPENAI_API_KEY': 'synthetic-secret'}, lambda _: False)
|
||||
routes = {r['model_name']: r for r in config['model_list']}
|
||||
self.assertIn('openai/transcribe', routes)
|
||||
self.assertNotIn('zenmux/transcribe', routes)
|
||||
self.assertEqual(routes['openai/transcribe']['litellm_params']['api_base'], 'https://api.openai.com/v1')
|
||||
self.assertEqual(routes['openai/transcribe']['litellm_params']['api_key'], 'os.environ/OPENAI_API_KEY')
|
||||
self.assertNotIn('synthetic-secret', str(config))
|
||||
self.assertEqual(config['router_settings']['fallbacks'], [])
|
||||
|
||||
def test_oauth_fallbacks_cover_legacy_and_namespaced_routes(self):
|
||||
config = build_config(self.catalog, {'OPENAI_API_KEY': 'synthetic'}, lambda _: True)
|
||||
groups = {k: v for row in config['router_settings']['fallbacks'] for k, v in row.items()}
|
||||
self.assertEqual(groups['codex-latest'], ['openai/codex-latest'])
|
||||
self.assertEqual(groups['codex/codex-latest'], ['openai/codex-latest'])
|
||||
self.assertNotIn('grok-latest', groups)
|
||||
self.assertNotIn('openai/codex-latest', groups)
|
||||
|
||||
def test_actual_catalog_has_same_model_api_fallbacks_and_latest_tracks(self):
|
||||
catalog = yaml.safe_load(Path(__file__).with_name('models.yaml').read_text())
|
||||
catalog['chatgpt']['gpt-luna-latest'] = 'gpt-99-luna'
|
||||
config = build_config(catalog, {'OPENAI_API_KEY': 'synthetic'}, lambda _: True)
|
||||
routes = {r['model_name']: r for r in config['model_list']}
|
||||
self.assertEqual(routes['openai/gpt-luna-latest']['litellm_params']['model'], 'openai/gpt-99-luna')
|
||||
groups = {k: v for row in config['router_settings']['fallbacks'] for k, v in row.items()}
|
||||
for name, route in routes.items():
|
||||
if route['litellm_params']['model'].startswith('chatgpt/'):
|
||||
backup = routes[groups[name][0]]
|
||||
self.assertEqual(route['litellm_params']['model'].split('/', 1)[1],
|
||||
backup['litellm_params']['model'].split('/', 1)[1])
|
||||
self.assertEqual(groups['codex/gpt-6-sol'], ['openai/gpt-6-sol'])
|
||||
self.assertEqual(groups['codex/gpt-5.5'], ['openai/gpt-5.5'])
|
||||
|
||||
def test_subscription_preserves_vendor_prefix(self):
|
||||
routes = build_config(self.catalog, {'ZENMUX_SUBSCRIPTION_API_KEY': 'secret'}, lambda _: False)['model_list']
|
||||
self.assertEqual(routes[0]['litellm_params']['model'], 'anthropic/anthropic/claude-sonnet-5.5')
|
||||
|
||||
Reference in New Issue
Block a user