fix(gateway): 项目模型持久化加对话能力守卫——白名单取pipeline_llm.selection.CHAT_CAPS(未装兜底t2t/i2t/m2t),非对话模型选中即无效走回退链(2026-09-06用户定夺)
This commit is contained in:
parent
2f6b9396e1
commit
763e84681f
@ -226,10 +226,22 @@ class Gateway:
|
||||
except Exception:
|
||||
pass
|
||||
# 2026-09-04 切换到模型治理新表(旧 llm 表停用)
|
||||
# 2026-09-06 会话 agent 只接受对话能力(t2t/i2t/m2t):
|
||||
# 能力白名单唯一事实源 = pipeline_llm.selection.CHAT_CAPS
|
||||
# (模块未装时兜底同值);存量 capability 空串按 t2t 语义归一;
|
||||
# 非对话模型(embedding/视频生成等)选中即无效,走回退链,
|
||||
# 不落项目 default_model
|
||||
try:
|
||||
from pipeline_llm.selection import CHAT_CAPS as _chat_caps
|
||||
except ImportError:
|
||||
_chat_caps = ("t2t", "i2t", "m2t")
|
||||
_cap_ph = ",".join("${c%d}$" % i for i in range(len(_chat_caps)))
|
||||
_cap_params = {"c%d" % i: c for i, c in enumerate(_chat_caps)}
|
||||
recs = await sor.sqlExe(
|
||||
"SELECT id, name, org_id FROM llm_model "
|
||||
"WHERE status='active' AND (id=${m}$ OR vendor_model_id=${m}$) LIMIT 1",
|
||||
{"m": model_id})
|
||||
"WHERE status='active' AND (id=${m}$ OR vendor_model_id=${m}$) "
|
||||
"AND COALESCE(NULLIF(capability,''),'t2t') IN (%s) LIMIT 1" % _cap_ph,
|
||||
dict({"m": model_id}, **_cap_params))
|
||||
await sor.sqlExe("COMMIT", {})
|
||||
if not recs:
|
||||
logger.warning(f"run_message: model_id 无效(不存在或未启用): {model_id}")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user