Spaces:
Running
Running
Z User commited on
Commit ·
8d9d6b7
1
Parent(s): 9274cab
feat: Qwen3 Coder 480B as primary + Gemma 4 31B as fallback
Browse files- Set main model to qwen/qwen3-coder:free (Qwen3-Coder-480B-A35B)
- Add fallback_model: google/gemma-4-31b-it:free (auto-failover)
- Dashboard: show fallback model info in status + model panels
- entry.py: expose fallback_model in /api/status response
- config.yaml +3 -0
- dashboard.html +8 -1
- entry.py +3 -0
config.yaml
CHANGED
|
@@ -1,5 +1,8 @@
|
|
| 1 |
model: qwen/qwen3-coder:free
|
| 2 |
provider: openrouter
|
|
|
|
|
|
|
|
|
|
| 3 |
max_turns: 90
|
| 4 |
platforms:
|
| 5 |
feishu:
|
|
|
|
| 1 |
model: qwen/qwen3-coder:free
|
| 2 |
provider: openrouter
|
| 3 |
+
fallback_model:
|
| 4 |
+
provider: openrouter
|
| 5 |
+
model: google/gemma-4-31b-it:free
|
| 6 |
max_turns: 90
|
| 7 |
platforms:
|
| 8 |
feishu:
|
dashboard.html
CHANGED
|
@@ -207,7 +207,8 @@ body{font-family:-apple-system,"SF Pro Display","Noto Sans SC","PingFang SC","He
|
|
| 207 |
<div class="card purple"><div class="card-label">进程 PID</div><div class="card-val" id="x-pid2">--</div></div>
|
| 208 |
<div class="card cyan"><div class="card-label">活跃会话</div><div class="card-val" id="x-sess2">0</div></div>
|
| 209 |
<div class="card cyan"><div class="card-label">连接平台</div><div class="card-val" id="x-plat2">飞书</div><div class="card-sub" id="x-plat-s2">WebSocket</div></div>
|
| 210 |
-
<div class="card orange"><div class="card-label">当前模型</div><div class="card-val" id="x-model2">--</div><div class="card-sub">OpenRouter</div></div>
|
|
|
|
| 211 |
</div>
|
| 212 |
|
| 213 |
<div class="sec-title">配置详情</div>
|
|
@@ -241,6 +242,7 @@ body{font-family:-apple-system,"SF Pro Display","Noto Sans SC","PingFang SC","He
|
|
| 241 |
<div class="sec-title">模型信息</div>
|
| 242 |
<div class="cfg-list">
|
| 243 |
<div class="cfg-row"><span class="cfg-k">当前模型</span><span class="cfg-v" id="x-cur-model">--</span></div>
|
|
|
|
| 244 |
<div class="cfg-row"><span class="cfg-k">提供商</span><span class="cfg-v">OpenRouter</span></div>
|
| 245 |
<div class="cfg-row"><span class="cfg-k">状态</span><span class="cfg-v" id="x-model-status" style="color:var(--accent)">运行中</span></div>
|
| 246 |
</div>
|
|
@@ -376,6 +378,11 @@ async function poll(){
|
|
| 376 |
var modelName=(d.model||'--').split('/').pop();
|
| 377 |
document.getElementById('x-model2').textContent=modelName.length>25?modelName.substring(0,25)+'…':modelName;
|
| 378 |
document.getElementById('x-cur-model').textContent=modelName.length>35?modelName.substring(0,35)+'…':modelName;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 379 |
document.getElementById('x-model-status').textContent=d.running?'运行中':'已停止';
|
| 380 |
document.getElementById('x-model-status').style.color=d.running?'var(--accent)':'var(--red)';
|
| 381 |
// Config
|
|
|
|
| 207 |
<div class="card purple"><div class="card-label">进程 PID</div><div class="card-val" id="x-pid2">--</div></div>
|
| 208 |
<div class="card cyan"><div class="card-label">活跃会话</div><div class="card-val" id="x-sess2">0</div></div>
|
| 209 |
<div class="card cyan"><div class="card-label">连接平台</div><div class="card-val" id="x-plat2">飞书</div><div class="card-sub" id="x-plat-s2">WebSocket</div></div>
|
| 210 |
+
<div class="card orange"><div class="card-label">当前模型</div><div class="card-val" id="x-model2">--</div><div class="card-sub" id="x-model-sub">OpenRouter</div></div>
|
| 211 |
+
<div class="card" style="border-color:var(--border)"><div class="card-label">备用模型</div><div class="card-val" id="x-fallback">--</div><div class="card-sub">自动回退</div></div>
|
| 212 |
</div>
|
| 213 |
|
| 214 |
<div class="sec-title">配置详情</div>
|
|
|
|
| 242 |
<div class="sec-title">模型信息</div>
|
| 243 |
<div class="cfg-list">
|
| 244 |
<div class="cfg-row"><span class="cfg-k">当前模型</span><span class="cfg-v" id="x-cur-model">--</span></div>
|
| 245 |
+
<div class="cfg-row"><span class="cfg-k">备用模型</span><span class="cfg-v" id="x-cur-fallback" style="color:var(--tx3)">--</span></div>
|
| 246 |
<div class="cfg-row"><span class="cfg-k">提供商</span><span class="cfg-v">OpenRouter</span></div>
|
| 247 |
<div class="cfg-row"><span class="cfg-k">状态</span><span class="cfg-v" id="x-model-status" style="color:var(--accent)">运行中</span></div>
|
| 248 |
</div>
|
|
|
|
| 378 |
var modelName=(d.model||'--').split('/').pop();
|
| 379 |
document.getElementById('x-model2').textContent=modelName.length>25?modelName.substring(0,25)+'…':modelName;
|
| 380 |
document.getElementById('x-cur-model').textContent=modelName.length>35?modelName.substring(0,35)+'…':modelName;
|
| 381 |
+
if(d.fallback_model){
|
| 382 |
+
var fbName=d.fallback_model.split('/').pop();
|
| 383 |
+
document.getElementById('x-fallback').textContent=fbName.length>25?fbName.substring(0,25)+'…':fbName;
|
| 384 |
+
document.getElementById('x-cur-fallback').textContent=fbName.length>35?fbName.substring(0,35)+'…':fbName;
|
| 385 |
+
}
|
| 386 |
document.getElementById('x-model-status').textContent=d.running?'运行中':'已停止';
|
| 387 |
document.getElementById('x-model-status').style.color=d.running?'var(--accent)':'var(--red)';
|
| 388 |
// Config
|
entry.py
CHANGED
|
@@ -332,12 +332,15 @@ class DashboardHandler(BaseHTTPRequestHandler):
|
|
| 332 |
|
| 333 |
model = cfg.get("model", env.get("LLM_MODEL", "unknown"))
|
| 334 |
provider = cfg.get("provider", "openrouter")
|
|
|
|
|
|
|
| 335 |
|
| 336 |
return {
|
| 337 |
"running": is_running,
|
| 338 |
"pid": pid,
|
| 339 |
"model": model,
|
| 340 |
"provider": provider,
|
|
|
|
| 341 |
"platform": "飞书 Feishu",
|
| 342 |
"platform_mode": "WebSocket",
|
| 343 |
"sessions": _get_sessions_count(),
|
|
|
|
| 332 |
|
| 333 |
model = cfg.get("model", env.get("LLM_MODEL", "unknown"))
|
| 334 |
provider = cfg.get("provider", "openrouter")
|
| 335 |
+
fallback = cfg.get("fallback_model", {})
|
| 336 |
+
fallback_model = fallback.get("model", "") if isinstance(fallback, dict) else ""
|
| 337 |
|
| 338 |
return {
|
| 339 |
"running": is_running,
|
| 340 |
"pid": pid,
|
| 341 |
"model": model,
|
| 342 |
"provider": provider,
|
| 343 |
+
"fallback_model": fallback_model,
|
| 344 |
"platform": "飞书 Feishu",
|
| 345 |
"platform_mode": "WebSocket",
|
| 346 |
"sessions": _get_sessions_count(),
|