44 lines
1.4 KiB
JavaScript
44 lines
1.4 KiB
JavaScript
/*
|
|
* /api/active-model — 当前激活的模型 (mother | coder)
|
|
* 守护: 铸渊 · ICE-GL-ZY001
|
|
*
|
|
* GET / → 当前
|
|
* POST / {name} → 切换 (本地状态 + 转发推理端)
|
|
*
|
|
* 注意: 推理端 switch-model 失败时, 本地状态不回滚.
|
|
* 原因: 推理端可能没起 (AutoDL 关机 / 还没 refresh-endpoint), 但用户在前端
|
|
* 切 tab 应该立即生效, 等推理端起来再连. 这跟 cc-004 "不让用户做无用功"
|
|
* 一致. 如果回滚, 用户每次切 tab 都失败, 体验崩.
|
|
*/
|
|
"use strict";
|
|
|
|
const express = require("express");
|
|
const router = express.Router();
|
|
|
|
router.get("/", (req, res) => {
|
|
res.json({
|
|
name: req.ctx.inference.getActiveModel()
|
|
});
|
|
});
|
|
|
|
router.post("/", async (req, res) => {
|
|
const body = req.body || {};
|
|
const name = body.name;
|
|
if (name !== "mother" && name !== "coder") {
|
|
return res.status(400).json({ error: true, code: "bad_name", message: "name 只允许 mother 或 coder" });
|
|
}
|
|
// 本地立即生效
|
|
req.ctx.inference.setActiveModel(name);
|
|
// 异步通知推理端 (失败不挡前端)
|
|
let upstream = { ok: false, message: "推理端尚未联通, 切换稍后生效" };
|
|
try {
|
|
const r = await req.ctx.inference.switchUpstreamModel(name);
|
|
upstream = { ok: true, ...r };
|
|
} catch (e) {
|
|
upstream = { ok: false, message: e.message };
|
|
}
|
|
res.json({ name, upstream });
|
|
});
|
|
|
|
module.exports = router;
|