victor34593993 commited on
Commit
dad1dfa
·
verified ·
1 Parent(s): 397cfbd

llm: clean chain (Qwen gated off, Cloudflare off)

Browse files
Files changed (2) hide show
  1. app/llm/router.py +5 -1
  2. tests/llm/test_router.py +20 -6
app/llm/router.py CHANGED
@@ -129,8 +129,12 @@ def build_router_from_settings(settings: Any) -> LLMRouter:
129
  # model id; sits as a FALLBACK after gpt-oss-120b (which still benchmarks
130
  # best at instruction-following), giving model-family diversity in the
131
  # failover chain. The output guards protect regardless of which answers.
 
 
 
 
132
  qwen_model = getattr(settings, "cerebras_qwen_model", "qwen-3-235b-a22b")
133
- if qwen_model:
134
  providers["cerebras_qwen"] = providers["cerebras"]
135
  models["cerebras_qwen"] = {"small": qwen_model, "large": qwen_model}
136
  order.append("cerebras_qwen")
 
129
  # model id; sits as a FALLBACK after gpt-oss-120b (which still benchmarks
130
  # best at instruction-following), giving model-family diversity in the
131
  # failover chain. The output guards protect regardless of which answers.
132
+ # OFF by default: Qwen3-235B 404s on this Cerebras account (the model isn't
133
+ # enabled there — verified live on both id forms). gpt-oss-120b is the best
134
+ # free instruction-follower anyway. Flip CEREBRAS_QWEN_ENABLED=1 (and enable
135
+ # the model in the Cerebras dashboard) to add it as a fallback later.
136
  qwen_model = getattr(settings, "cerebras_qwen_model", "qwen-3-235b-a22b")
137
+ if qwen_model and getattr(settings, "cerebras_qwen_enabled", False):
138
  providers["cerebras_qwen"] = providers["cerebras"]
139
  models["cerebras_qwen"] = {"small": qwen_model, "large": qwen_model}
140
  order.append("cerebras_qwen")
tests/llm/test_router.py CHANGED
@@ -88,9 +88,24 @@ def test_build_router_with_three_providers():
88
  cerebras_api_key="cb", cerebras_base_url="https://api.cerebras.ai/v1", cerebras_model="gpt-oss-120b",
89
  )
90
  router = build_router_from_settings(s)
91
- # cerebras now also exposes Qwen3 as an extra fallback (same client, Qwen model)
92
- assert router.order == ["groq0", "cloudflare", "cerebras", "cerebras_qwen"]
93
- assert len(router.providers) == 4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  assert router.models["cerebras_qwen"]["large"] == "qwen-3-235b-a22b"
95
 
96
 
@@ -110,9 +125,8 @@ def test_build_router_full_cascade_with_extra_free_providers():
110
  openrouter_api_key="ok", openrouter_base_url="https://openrouter.ai/api/v1", openrouter_model="x:free",
111
  )
112
  router = build_router_from_settings(s)
113
- # full failover cascade: gpt-oss (groq, cerebras) -> Qwen3 fallback -> extras
114
- assert router.order == ["groq0", "cloudflare", "cerebras", "cerebras_qwen",
115
- "sambanova", "mistral", "openrouter"]
116
  assert router.models["mistral"]["large"] == "mistral-small-latest"
117
  assert router.models["sambanova"]["large"] == "Meta-Llama-3.3-70B-Instruct"
118
 
 
88
  cerebras_api_key="cb", cerebras_base_url="https://api.cerebras.ai/v1", cerebras_model="gpt-oss-120b",
89
  )
90
  router = build_router_from_settings(s)
91
+ assert router.order == ["groq0", "cloudflare", "cerebras"] # Qwen off by default
92
+ assert len(router.providers) == 3
93
+
94
+
95
+ def test_build_router_adds_qwen_when_enabled():
96
+ from types import SimpleNamespace
97
+
98
+ from app.llm.router import build_router_from_settings
99
+
100
+ s = SimpleNamespace(
101
+ groq_api_key="k1", groq_api_keys=[], groq_base_url="u",
102
+ model_small="s", model_large="l",
103
+ cloudflare_account_id="", cloudflare_api_token="",
104
+ cerebras_api_key="cb", cerebras_base_url="https://api.cerebras.ai/v1",
105
+ cerebras_model="gpt-oss-120b", cerebras_qwen_enabled=True,
106
+ )
107
+ router = build_router_from_settings(s)
108
+ assert router.order == ["groq0", "cerebras", "cerebras_qwen"]
109
  assert router.models["cerebras_qwen"]["large"] == "qwen-3-235b-a22b"
110
 
111
 
 
125
  openrouter_api_key="ok", openrouter_base_url="https://openrouter.ai/api/v1", openrouter_model="x:free",
126
  )
127
  router = build_router_from_settings(s)
128
+ # full failover cascade (Qwen3 fallback off by default; CF enabled here)
129
+ assert router.order == ["groq0", "cloudflare", "cerebras", "sambanova", "mistral", "openrouter"]
 
130
  assert router.models["mistral"]["large"] == "mistral-small-latest"
131
  assert router.models["sambanova"]["large"] == "Meta-Llama-3.3-70B-Instruct"
132