Spaces:
Running
Running
Upload patch_models.py
Browse files- patch_models.py +11 -23
patch_models.py
CHANGED
|
@@ -15,10 +15,10 @@ AVAILABLE_MODELS.extend([
|
|
| 15 |
{"id": "deepseek-ai/DeepSeek-V4-Pro", "label": "DeepSeek V4 Pro", "provider": "huggingface", "tier": "free", "recommended": True},
|
| 16 |
{"id": "deepseek-ai/DeepSeek-V4-Flash", "label": "DeepSeek V4 Flash", "provider": "huggingface", "tier": "free"},
|
| 17 |
{"id": "openai/deepseek/deepseek-v4-flash", "label": "DeepSeek V4 Flash (OR)", "provider": "openrouter", "tier": "free"},
|
| 18 |
-
{"id": "nvidia/nemotron-3-super-120b-a12b", "label": "Nemotron 3 Super 120B", "provider": "openrouter", "tier": "free"},
|
| 19 |
{"id": "google/gemma-3-1b-it", "label": "Gemma 3 1B", "provider": "huggingface", "tier": "free", "recommended": True},
|
| 20 |
{"id": "Qwen/Qwen3-Coder-Next", "label": "Qwen3 Coder Next", "provider": "huggingface", "tier": "free", "recommended": True},
|
| 21 |
-
{"id": "owl-alpha", "label": "Owl Alpha", "provider": "openrouter", "tier": "free", "recommended": True},
|
| 22 |
{"id": "openai/google/gemini-2.0-flash-001", "label": "Gemini 2.0 Flash", "provider": "openrouter", "tier": "free"},
|
| 23 |
{"id": "openai/google/gemma-4-31b-it", "label": "Gemma 4 31B", "provider": "openrouter", "tier": "free", "recommended": True},
|
| 24 |
{"id": "openai/nvidia/nemotron-3-ultra-550b-a55b", "label": "Nemotron 3 Ultra 550B", "provider": "openrouter", "tier": "free", "recommended": True},
|
|
@@ -49,24 +49,6 @@ with open(AGENT_FILE, "w") as f:
|
|
| 49 |
with open(LLM_PARAMS_FILE) as f:
|
| 50 |
llm_content = f.read()
|
| 51 |
|
| 52 |
-
# Add OpenRouter routing before the final HF Router fallback.
|
| 53 |
-
# Models starting with "openai/" go to OpenRouter API, NOT HF Router.
|
| 54 |
-
# Without this patch, _resolve_llm_params would double-prefix them
|
| 55 |
-
# (openai/openai/...) and send them to router.huggingface.co which
|
| 56 |
-
# doesn't serve OpenRouter-only models like Laguna/Mistral/Nvidia free.
|
| 57 |
-
openrouter_patch = '''
|
| 58 |
-
# === PATCH: Route "openai/..." models to OpenRouter ===
|
| 59 |
-
if normalized_model.startswith("openai/"):
|
| 60 |
-
openrouter_key = api_key if api_key else ""
|
| 61 |
-
return {
|
| 62 |
-
"model": normalized_model,
|
| 63 |
-
"api_base": "https://openrouter.ai/api/v1",
|
| 64 |
-
"api_key": openrouter_key,
|
| 65 |
-
}
|
| 66 |
-
# === END PATCH ===
|
| 67 |
-
'''
|
| 68 |
-
|
| 69 |
-
# Insert after the local_model_provider check, before the HF Router fallback
|
| 70 |
marker = """ if local_model_provider(normalized_model) is not None:
|
| 71 |
return _resolve_local_model_params(normalized_model, reasoning_effort, strict)
|
| 72 |
|
|
@@ -76,12 +58,14 @@ replacement = """ if local_model_provider(normalized_model) is not None:
|
|
| 76 |
return _resolve_local_model_params(normalized_model, reasoning_effort, strict)
|
| 77 |
|
| 78 |
# === PATCH: Route "openai/..." models to OpenRouter ===
|
|
|
|
|
|
|
|
|
|
| 79 |
if normalized_model.startswith("openai/"):
|
| 80 |
-
openrouter_key = api_key if api_key else ""
|
| 81 |
return {
|
| 82 |
"model": normalized_model,
|
| 83 |
"api_base": "https://openrouter.ai/api/v1",
|
| 84 |
-
"api_key":
|
| 85 |
}
|
| 86 |
# === END PATCH ===
|
| 87 |
|
|
@@ -103,4 +87,8 @@ except SyntaxError as e:
|
|
| 103 |
with open(LLM_PARAMS_FILE, "w") as f:
|
| 104 |
f.write(llm_content)
|
| 105 |
|
| 106 |
-
print("✅ Backend patched successfully")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
{"id": "deepseek-ai/DeepSeek-V4-Pro", "label": "DeepSeek V4 Pro", "provider": "huggingface", "tier": "free", "recommended": True},
|
| 16 |
{"id": "deepseek-ai/DeepSeek-V4-Flash", "label": "DeepSeek V4 Flash", "provider": "huggingface", "tier": "free"},
|
| 17 |
{"id": "openai/deepseek/deepseek-v4-flash", "label": "DeepSeek V4 Flash (OR)", "provider": "openrouter", "tier": "free"},
|
| 18 |
+
{"id": "openai/nvidia/nemotron-3-super-120b-a12b", "label": "Nemotron 3 Super 120B", "provider": "openrouter", "tier": "free"},
|
| 19 |
{"id": "google/gemma-3-1b-it", "label": "Gemma 3 1B", "provider": "huggingface", "tier": "free", "recommended": True},
|
| 20 |
{"id": "Qwen/Qwen3-Coder-Next", "label": "Qwen3 Coder Next", "provider": "huggingface", "tier": "free", "recommended": True},
|
| 21 |
+
{"id": "openai/owl-alpha", "label": "Owl Alpha", "provider": "openrouter", "tier": "free", "recommended": True},
|
| 22 |
{"id": "openai/google/gemini-2.0-flash-001", "label": "Gemini 2.0 Flash", "provider": "openrouter", "tier": "free"},
|
| 23 |
{"id": "openai/google/gemma-4-31b-it", "label": "Gemma 4 31B", "provider": "openrouter", "tier": "free", "recommended": True},
|
| 24 |
{"id": "openai/nvidia/nemotron-3-ultra-550b-a55b", "label": "Nemotron 3 Ultra 550B", "provider": "openrouter", "tier": "free", "recommended": True},
|
|
|
|
| 49 |
with open(LLM_PARAMS_FILE) as f:
|
| 50 |
llm_content = f.read()
|
| 51 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
marker = """ if local_model_provider(normalized_model) is not None:
|
| 53 |
return _resolve_local_model_params(normalized_model, reasoning_effort, strict)
|
| 54 |
|
|
|
|
| 58 |
return _resolve_local_model_params(normalized_model, reasoning_effort, strict)
|
| 59 |
|
| 60 |
# === PATCH: Route "openai/..." models to OpenRouter ===
|
| 61 |
+
# These are OpenRouter-specific models (Laguna, Nemotron free, Owl Alpha, etc.)
|
| 62 |
+
# that aren't served by the HF Router. LiteLLM openai/ prefix + custom api_base
|
| 63 |
+
# makes it send the bare model name to OpenRouter.
|
| 64 |
if normalized_model.startswith("openai/"):
|
|
|
|
| 65 |
return {
|
| 66 |
"model": normalized_model,
|
| 67 |
"api_base": "https://openrouter.ai/api/v1",
|
| 68 |
+
"api_key": api_key or "",
|
| 69 |
}
|
| 70 |
# === END PATCH ===
|
| 71 |
|
|
|
|
| 87 |
with open(LLM_PARAMS_FILE, "w") as f:
|
| 88 |
f.write(llm_content)
|
| 89 |
|
| 90 |
+
print("✅ Backend patched successfully")
|
| 91 |
+
print(" - AVAILABLE_MODELS: 12 new models")
|
| 92 |
+
print(" - Owl Alpha id: openai/owl-alpha (matches frontend modelPath)")
|
| 93 |
+
print(" - _resolve_llm_params: openai/ prefix → OpenRouter routing")
|
| 94 |
+
print(" - DEFAULT_FREE_MODEL_ID: deepseek-ai/DeepSeek-V4-Pro")
|