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