39 lines
1.6 KiB
Plaintext
39 lines
1.6 KiB
Plaintext
# set_agent_model.dspy - 保存个人选择的默认模型
|
||
# 机构人员在本机构 llm 池选模型,持久化到 pipeline_agent_settings.default_llm_id
|
||
# 下次进入会话,缺省模型 = 个人之前选择的模型
|
||
|
||
dbname = get_module_dbname('pipeline-sdlc')
|
||
uid = await get_user()
|
||
llm_id = (params_kw or {}).get('llm_id', '')
|
||
|
||
if not uid:
|
||
return json.dumps({"success": False, "error": "请先登录"}, ensure_ascii=False)
|
||
if not llm_id:
|
||
return json.dumps({"success": False, "error": "缺少 llm_id"}, ensure_ascii=False)
|
||
|
||
org_id = await get_userorgid() or '0'
|
||
|
||
async with DBPools().sqlorContext(dbname) as sor:
|
||
# 校验 llm_id 属于本机构(严格本机构隔离;超管 org_id='0' 不过滤)
|
||
sql = "SELECT id FROM llm WHERE id=${id}$ AND status='active'"
|
||
params = {"id": llm_id}
|
||
if org_id and org_id != '0':
|
||
sql += " AND org_id=${org}$"
|
||
params['org'] = org_id
|
||
recs = await sor.sqlExe(sql, params)
|
||
if not recs:
|
||
return json.dumps({"success": False, "error": "模型不存在或不属于本机构"}, ensure_ascii=False)
|
||
|
||
# upsert 到 pipeline_agent_settings(user_id 唯一键)
|
||
await sor.sqlExe(
|
||
"UPDATE pipeline_agent_settings SET default_llm_id=${lid}$ WHERE user_id=${uid}$",
|
||
{"lid": llm_id, "uid": uid})
|
||
exists = await sor.sqlExe(
|
||
"SELECT 1 FROM pipeline_agent_settings WHERE user_id=${uid}$", {"uid": uid})
|
||
if not exists:
|
||
await sor.C('pipeline_agent_settings', {
|
||
'id': getID(), 'user_id': uid, 'default_llm_id': llm_id,
|
||
})
|
||
|
||
return json.dumps({"success": True, "llm_id": llm_id}, ensure_ascii=False)
|