pipeline-sdlc/wwwroot/api/set_agent_model.dspy

39 lines
1.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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_settingsuser_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)