feat(cockpit): 会话agent模型选择收窄为对话能力t2t/i2t/m2t(2026-09-06用户定夺)——下拉传capabilities=chat,持久化入口(set_agent_model/cockpit_agent)同守卫防绕过

This commit is contained in:
ymq 2026-09-06 19:49:08 +08:00
parent 2740ae1451
commit 0cf735018e
4 changed files with 12 additions and 5 deletions

View File

@ -27,8 +27,10 @@ if action == 'start_agent':
# model_id 兼容 id / vendor_model_id / 注册名 → 统一走模型治理模块解析
# pipeline_llm.selection.resolve_model_name唯一解析点不再各模块自查表
# capabilities='chat':角色 agent 只接受对话能力t2t/i2t/m2t2026-09-06
if model_id:
_resolved = await llm_resolve_model_name(model_id, org_id=org_id)
_resolved = await llm_resolve_model_name(model_id, org_id=org_id,
capabilities='chat')
if _resolved:
model_id = _resolved

View File

@ -1,11 +1,13 @@
# cockpit_model_options.dspy — 驾驶舱模型下拉
# 2026-09-04 收敛:实现统一在模型治理模块 pipeline_llm.selection.model_options
# 本文件只作 URL 入口(驾驶舱 AgentIO 的 model_dataurl 指向此处)。
# capabilities='chat':会话 agent 只列文本输出对话能力t2t/i2t/m2t
# 过滤掉 embedding/rerank/图视频生成等非对话模型2026-09-06 用户定夺)。
uid = await get_user()
org_id = (await get_userorgid()) or ''
session_id = (params_kw or {}).get('session_id', '') or ''
rows = await llm_model_options(org_id, uid=uid or '', session_id=session_id,
value_field='id')
value_field='id', capabilities='chat')
return rows

View File

@ -1,12 +1,14 @@
# get_model_options.dspy — 角色模型配置下拉value=模型注册名)
# 2026-09-04 收敛:实现统一在模型治理模块 pipeline_llm.selection.model_options
# 本文件只作 URL 入口。保留历史格式:首项「缺省(用项目默认模型)」+ value/text 两列。
# capabilities='chat':角色模型也是会话/任务 agent 用的对话模型,只列 t2t/i2t/m2t
# 2026-09-06 用户定夺;防把 embedding 等非对话模型配给角色后推理链报能力不匹配)。
rows = [{'value': '', 'text': '缺省(用项目默认模型)'}]
try:
org_id = await get_userorgid()
if org_id:
opts = await llm_model_options(org_id, value_field='name')
opts = await llm_model_options(org_id, value_field='name', capabilities='chat')
rows += [{'value': r['value'], 'text': r['text']} for r in opts]
return json.dumps(rows, ensure_ascii=False)
except Exception as e:

View File

@ -15,9 +15,10 @@ if not llm_id:
org_id = await get_userorgid() or '0'
# 统一解析:解析得到注册名即代表存在且属于本机构(系统级不过滤)
name = await llm_resolve_model_name(llm_id, org_id=org_id)
# capabilities='chat':个人默认模型是会话 agent 用的只接受对话能力t2t/i2t/m2t
name = await llm_resolve_model_name(llm_id, org_id=org_id, capabilities='chat')
if not name:
return json.dumps({"success": False, "error": "模型不存在或不属于本机构"}, ensure_ascii=False)
return json.dumps({"success": False, "error": "模型不存在、不属于本机构或不是对话模型(t2t/i2t/m2t)"}, ensure_ascii=False)
# 反查模型 id 持久化(个人默认选择按 id 存,与下拉 value 一致)
_model_id = llm_id