Add Hermes auxiliary and subscription model routes
This commit is contained in:
@@ -97,6 +97,23 @@ ZenMux 恢复后重新优先使用它。OpenRouter 会产生其账户费用;
|
||||
|
||||
参考:[LiteLLM Fallbacks](https://docs.litellm.ai/docs/proxy/reliability)。
|
||||
|
||||
## Hermes 两个 profile 的集中接入
|
||||
|
||||
Hermes 使用三种协议入口:Claude 经 Anthropic Messages,Gemini/Grok/开源模型
|
||||
经 Chat Completions,Codex 订阅经 Responses。不要为了单一 URL 把所有模型强行
|
||||
桥接成同一种协议;`/v1/responses` 和 `/v1/messages` 均由同一代理提供。
|
||||
|
||||
补充路线 `gemini-flash-zenmux` 保留 Hermes 原 ZenMux Gemini 3.8 Flash 数据去向,
|
||||
不自动换到 Google ADC。`gpt-work-sol`、`gpt-review-5.5`、`gpt-astra-latest` 分别
|
||||
保留原 gpt-6-sol、gpt-5.5、gpt-6-astra;三者均在独立 Codex OAuth 实时目录中。
|
||||
它们是兼容现有分工,不以过期型号或“最新总更好”为由静默更换。
|
||||
`glm-flash-latest` 补齐原选择器中的 GLM 5.3 Flash,并使用同一 ZenMux/OpenRouter 主备模式。
|
||||
|
||||
default profile 继续 Haiku,work 继续 Sol;Flash 用于辅助任务,GPT-5.5 高推理
|
||||
用于审阅和拆解;MoA 仅按需启动,参考模型为 Sonnet 5.5/Grok/Flash,Astra 聚合。
|
||||
work 的旧 Sonnet 5 参考槽统一到已有 Sonnet 5.5 路线。旧直连 provider 只保留
|
||||
回滚兼容,新默认与任务槽不再引用;已打开 session 的 provider/model 覆盖不自动改写。
|
||||
|
||||
## 密钥
|
||||
|
||||
真实 `.env` 权限 `0600`,不提交 Git;模板见 `.env.example`。
|
||||
|
||||
@@ -7,6 +7,7 @@ openrouter:
|
||||
deepseek-flash-latest: deepseek/deepseek-v4.1-flash
|
||||
deepseek-pro-latest: deepseek/deepseek-v4-pro
|
||||
glm-latest: z-ai/glm-5.3-prime
|
||||
glm-flash-latest: z-ai/glm-5.3-flash
|
||||
kimi-latest: moonshotai/kimi-k3
|
||||
mimo-flash-latest: xiaomi/mimo-v2.6-flash
|
||||
# These existing public aliases are subscription-first, not load-balanced.
|
||||
@@ -14,8 +15,11 @@ zenmux_open_models:
|
||||
deepseek-flash-latest: deepseek/deepseek-v4.1-flash
|
||||
deepseek-pro-latest: deepseek/deepseek-v4-pro
|
||||
glm-latest: z-ai/glm-5.3-prime
|
||||
glm-flash-latest: z-ai/glm-5.3-flash
|
||||
kimi-latest: moonshotai/kimi-k3
|
||||
mimo-flash-latest: xiaomi/mimo-v2.6-flash
|
||||
zenmux_chat:
|
||||
gemini-flash-zenmux: google/gemini-3.8-flash
|
||||
google_ai_studio:
|
||||
gemini-flash-latest: gemini-flash-latest
|
||||
gemini-flash-lite-latest: gemini-flash-lite-latest
|
||||
@@ -32,5 +36,8 @@ google_vertex:
|
||||
chatgpt:
|
||||
gpt-luna-latest: gpt-6-luna
|
||||
gpt-sol-latest: gpt-6.1-sol
|
||||
gpt-work-sol: gpt-6-sol
|
||||
gpt-review-5.5: gpt-5.5
|
||||
gpt-astra-latest: gpt-6-astra
|
||||
xai:
|
||||
grok-latest: grok-4.7
|
||||
|
||||
@@ -29,6 +29,10 @@ def build_config(catalog, env, exists):
|
||||
# Strip only the LiteLLM provider prefix, retaining ZenMux's vendor prefix.
|
||||
add(alias + suffix, 'anthropic/' + model, key,
|
||||
api_base='https://zenmux.ai/api/anthropic')
|
||||
if env.get('ZENMUX_SUBSCRIPTION_API_KEY'):
|
||||
for alias, model in catalog.get('zenmux_chat', {}).items():
|
||||
add(alias, 'openai/' + model, 'ZENMUX_SUBSCRIPTION_API_KEY',
|
||||
api_base='https://zenmux.ai/api/v1')
|
||||
if env.get('OPENROUTER_API_KEY'):
|
||||
for alias, model in catalog['openrouter'].items():
|
||||
primary = catalog.get('zenmux_open_models', {}).get(alias)
|
||||
|
||||
@@ -83,6 +83,14 @@ class ConfigTests(unittest.TestCase):
|
||||
build_config(catalog, {'ZENMUX_SUBSCRIPTION_API_KEY': 'a',
|
||||
'OPENROUTER_API_KEY': 'b'}, lambda _: False)
|
||||
|
||||
def test_zenmux_chat_keeps_existing_data_destination(self):
|
||||
catalog = {**self.catalog, 'zenmux_chat': {'gemini-flash-zenmux': 'google/gemini-3.8-flash'}}
|
||||
config = build_config(catalog, {'ZENMUX_SUBSCRIPTION_API_KEY': 'a'}, lambda _: False)
|
||||
route = next(r for r in config['model_list'] if r['model_name'] == 'gemini-flash-zenmux')
|
||||
self.assertEqual(route['litellm_params']['model'], 'openai/google/gemini-3.8-flash')
|
||||
self.assertEqual(route['litellm_params']['api_base'], 'https://zenmux.ai/api/v1')
|
||||
self.assertNotIn('gemini-flash-zenmux-payg', [r['model_name'] for r in config['model_list']])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user