bep40 commited on
Commit
4ef1c2f
Β·
verified Β·
1 Parent(s): 07599f8

Upload patch_models.py

Browse files
Files changed (1) hide show
  1. patch_models.py +20 -5
patch_models.py CHANGED
@@ -1,10 +1,17 @@
1
- """Patch backend: add new model IDs to AVAILABLE_MODELS + fix OpenRouter routing."""
 
 
 
 
 
 
2
  import ast
 
3
 
4
  AGENT_FILE = "/app/backend/routes/agent.py"
5
  LLM_PARAMS_FILE = "/app/agent/core/llm_params.py"
6
 
7
- # ── Step 1: Patch AVAILABLE_MODELS ──
8
  with open(AGENT_FILE) as f:
9
  content = f.read()
10
 
@@ -18,7 +25,7 @@ AVAILABLE_MODELS.extend([
18
  {"id": "openai/nvidia/nemotron-3-super-120b-a12b:free", "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/openrouter/owl-alpha:free", "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:free", "label": "Gemma 4 31B", "provider": "openrouter", "tier": "free", "recommended": True},
24
  {"id": "openai/nvidia/nemotron-3-ultra-550b-a55b:free", "label": "Nemotron 3 Ultra 550B", "provider": "openrouter", "tier": "free", "recommended": True},
@@ -62,7 +69,8 @@ new_block = """ hf_model = normalized_model
62
 
63
  # === PATCH: Route OpenRouter models to openrouter.ai ===
64
  # OpenRouter expects the model name WITHOUT the openai/ prefix.
65
- # E.g. "openai/openrouter/owl-alpha:free" β†’ send "openrouter/owl-alpha:free"
 
66
  _or_prefixes = ("openai/google/", "openai/deepseek/", "openai/nvidia/", "openai/poolside/", "openai/openrouter/")
67
  if normalized_model.startswith(_or_prefixes):
68
  # Strip the "openai/" prefix so OpenRouter gets the correct model ID
@@ -85,6 +93,11 @@ if old_block in llm_content:
85
  print("βœ… Patched _resolve_llm_params: OpenRouter routing with stripped prefix")
86
  else:
87
  print("⚠ Could not find target block in llm_params.py")
 
 
 
 
 
88
 
89
  try:
90
  ast.parse(llm_content)
@@ -97,4 +110,6 @@ with open(LLM_PARAMS_FILE, "w") as f:
97
  f.write(llm_content)
98
 
99
  print("βœ… Backend patched")
100
- print(" - Owl Alpha: sends 'openrouter/owl-alpha:free' to openrouter.ai")
 
 
 
1
+ """Patch backend: add new model IDs to AVAILABLE_MODELS + fix OpenRouter routing.
2
+
3
+ OpenRouter models:
4
+ - openai/openrouter/owl-alpha β€” FREE by default, no :free suffix
5
+ - openai/google/gemini-2.0-flash-001 β€” PAID, no :free
6
+ - openai/*/...:free β€” free tier models, need :free suffix
7
+ """
8
  import ast
9
+ import os
10
 
11
  AGENT_FILE = "/app/backend/routes/agent.py"
12
  LLM_PARAMS_FILE = "/app/agent/core/llm_params.py"
13
 
14
+ # ── Step 1: Patch AVAILABLE_MODELS in agent.py ──
15
  with open(AGENT_FILE) as f:
16
  content = f.read()
17
 
 
25
  {"id": "openai/nvidia/nemotron-3-super-120b-a12b:free", "label": "Nemotron 3 Super 120B", "provider": "openrouter", "tier": "free"},
26
  {"id": "google/gemma-3-1b-it", "label": "Gemma 3 1B", "provider": "huggingface", "tier": "free", "recommended": True},
27
  {"id": "Qwen/Qwen3-Coder-Next", "label": "Qwen3 Coder Next", "provider": "huggingface", "tier": "free", "recommended": True},
28
+ {"id": "openai/openrouter/owl-alpha", "label": "Owl Alpha", "provider": "openrouter", "tier": "free", "recommended": True},
29
  {"id": "openai/google/gemini-2.0-flash-001", "label": "Gemini 2.0 Flash", "provider": "openrouter", "tier": "free"},
30
  {"id": "openai/google/gemma-4-31b-it:free", "label": "Gemma 4 31B", "provider": "openrouter", "tier": "free", "recommended": True},
31
  {"id": "openai/nvidia/nemotron-3-ultra-550b-a55b:free", "label": "Nemotron 3 Ultra 550B", "provider": "openrouter", "tier": "free", "recommended": True},
 
69
 
70
  # === PATCH: Route OpenRouter models to openrouter.ai ===
71
  # OpenRouter expects the model name WITHOUT the openai/ prefix.
72
+ # E.g. "openai/openrouter/owl-alpha" -> send "openrouter/owl-alpha"
73
+ # No :free suffix for Owl Alpha (free by default).
74
  _or_prefixes = ("openai/google/", "openai/deepseek/", "openai/nvidia/", "openai/poolside/", "openai/openrouter/")
75
  if normalized_model.startswith(_or_prefixes):
76
  # Strip the "openai/" prefix so OpenRouter gets the correct model ID
 
93
  print("βœ… Patched _resolve_llm_params: OpenRouter routing with stripped prefix")
94
  else:
95
  print("⚠ Could not find target block in llm_params.py")
96
+ # Debug: find the actual block
97
+ idx = llm_content.find("hf_model = normalized_model")
98
+ if idx >= 0:
99
+ print(f"Found 'hf_model = normalized_model' at pos {idx}")
100
+ print(repr(llm_content[idx:idx+300]))
101
 
102
  try:
103
  ast.parse(llm_content)
 
110
  f.write(llm_content)
111
 
112
  print("βœ… Backend patched")
113
+ print(" - Owl Alpha: sends 'openrouter/owl-alpha' to openrouter.ai (NO :free)")
114
+ print(" - Gemini 2.0 Flash: sends 'google/gemini-2.0-flash-001' to openrouter.ai (NO :free)")
115
+ print(" - Other OR free models: include :free suffix")