Route asr-gpt to official OpenAI with ZenMux backup
This commit is contained in:
@@ -56,6 +56,12 @@ def build_hk_config(catalog, env):
|
|||||||
config['model_list'].append({'model_name': 'openai/' + alias, 'litellm_params': {
|
config['model_list'].append({'model_name': 'openai/' + alias, 'litellm_params': {
|
||||||
'model': 'openai/' + model, 'api_base': 'https://api.openai.com/v1',
|
'model': 'openai/' + model, 'api_base': 'https://api.openai.com/v1',
|
||||||
'api_key': 'os.environ/OPENAI_API_KEY', 'max_retries': 0}})
|
'api_key': 'os.environ/OPENAI_API_KEY', 'max_retries': 0}})
|
||||||
|
config['model_list'] = [r for r in config['model_list'] if r['model_name'] != 'asr-gpt']
|
||||||
|
config['model_list'].append({'model_name': 'asr-gpt', 'litellm_params': {
|
||||||
|
'model': 'openai/gpt-transcribe', 'api_base': 'https://api.openai.com/v1',
|
||||||
|
'api_key': 'os.environ/OPENAI_API_KEY', 'max_retries': 0}})
|
||||||
|
if env.get('ZENMUX_SUBSCRIPTION_API_KEY'):
|
||||||
|
config['router_settings']['fallbacks'].append({'asr-gpt': ['zenmux/gpt-transcribe']})
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,10 +14,20 @@ class RoutingTests(unittest.TestCase):
|
|||||||
routes = {r['model_name']: r['litellm_params'] for r in config['model_list']}
|
routes = {r['model_name']: r['litellm_params'] for r in config['model_list']}
|
||||||
self.assertEqual(routes['openai/gpt-transcribe']['api_base'], 'https://api.openai.com/v1')
|
self.assertEqual(routes['openai/gpt-transcribe']['api_base'], 'https://api.openai.com/v1')
|
||||||
self.assertEqual(routes['zenmux/gpt-transcribe']['api_base'], 'https://zenmux.ai/api/v1')
|
self.assertEqual(routes['zenmux/gpt-transcribe']['api_base'], 'https://zenmux.ai/api/v1')
|
||||||
|
self.assertEqual(routes['asr-gpt'], routes['openai/gpt-transcribe'])
|
||||||
|
self.assertIn({'asr-gpt': ['zenmux/gpt-transcribe']}, config['router_settings']['fallbacks'])
|
||||||
self.assertEqual(routes['openai/gpt-sol-latest']['model'], 'openai/gpt-6.1-sol')
|
self.assertEqual(routes['openai/gpt-sol-latest']['model'], 'openai/gpt-6.1-sol')
|
||||||
self.assertNotIn('codex/gpt-sol-latest', routes)
|
self.assertNotIn('codex/gpt-sol-latest', routes)
|
||||||
self.assertNotIn('synthetic', yaml.safe_dump(config))
|
self.assertNotIn('synthetic', yaml.safe_dump(config))
|
||||||
|
|
||||||
|
def test_official_asr_without_zenmux_has_no_dangling_fallback(self):
|
||||||
|
catalog = yaml.safe_load(Path(__file__).with_name('models.yaml').read_text())
|
||||||
|
config = build_hk_config(catalog, {'OPENAI_API_KEY': 'synthetic'})
|
||||||
|
routes = {r['model_name']: r['litellm_params'] for r in config['model_list']}
|
||||||
|
self.assertEqual(routes['asr-gpt']['model'], 'openai/gpt-transcribe')
|
||||||
|
self.assertNotIn('zenmux/gpt-transcribe', routes)
|
||||||
|
self.assertNotIn({'asr-gpt': ['zenmux/gpt-transcribe']}, config['router_settings']['fallbacks'])
|
||||||
|
|
||||||
def test_bailian_personal_uses_hk_private_vocabulary(self):
|
def test_bailian_personal_uses_hk_private_vocabulary(self):
|
||||||
catalog = yaml.safe_load(Path(__file__).with_name('models.yaml').read_text())
|
catalog = yaml.safe_load(Path(__file__).with_name('models.yaml').read_text())
|
||||||
routes = build_hk_config(catalog, {'BAILIAN_CN_API_KEY':'synthetic',
|
routes = build_hk_config(catalog, {'BAILIAN_CN_API_KEY':'synthetic',
|
||||||
|
|||||||
Reference in New Issue
Block a user