mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-30 01:38:43 +08:00 
			
		
		
		
	【新增】AI:新建对话时,不使用默认角色
This commit is contained in:
		| @@ -20,14 +20,6 @@ import java.util.List; | ||||
| @Mapper | ||||
| public interface AiChatRoleMapper extends BaseMapperX<AiChatRoleDO> { | ||||
|  | ||||
|     default AiChatRoleDO selectFirstByPublicStatusAndStatus(Boolean publicStatus, Integer status) { | ||||
|         return selectOne(new QueryWrapperX<AiChatRoleDO>() | ||||
|                 .eq("status", status) | ||||
|                 .eq("public_status", publicStatus) | ||||
|                 .limitN(1) | ||||
|                 .orderByAsc("sort")); | ||||
|     } | ||||
|  | ||||
|     default PageResult<AiChatRoleDO> selectPage(AiChatRolePageReqVO reqVO) { | ||||
|         return selectPage(reqVO, new LambdaQueryWrapperX<AiChatRoleDO>() | ||||
|                 .likeIfPresent(AiChatRoleDO::getName, reqVO.getName()) | ||||
|   | ||||
| @@ -46,21 +46,22 @@ public class AiChatConversationServiceImpl implements AiChatConversationService | ||||
|     @Override | ||||
|     public Long createChatConversationMy(AiChatConversationCreateMyReqVO createReqVO, Long userId) { | ||||
|         // 1.1 获得 AiChatRoleDO 聊天角色 | ||||
|         AiChatRoleDO role = createReqVO.getRoleId() != null ? chatRoleService.validateChatRole(createReqVO.getRoleId()) | ||||
|                 : chatRoleService.getRequiredDefaultChatRole(); | ||||
|         Assert.notNull(role, "必须找到聊天角色"); | ||||
|         AiChatRoleDO role = createReqVO.getRoleId() != null ? chatRoleService.validateChatRole(createReqVO.getRoleId()) : null; | ||||
|         // 1.2 获得 AiChatModelDO 聊天模型 | ||||
|         AiChatModelDO model = role.getModelId() != null ? chatModalService.validateChatModel(role.getModelId()) | ||||
|         AiChatModelDO model = role != null && role.getModelId() != null ? chatModalService.validateChatModel(role.getModelId()) | ||||
|                 : chatModalService.getRequiredDefaultChatModel(); | ||||
|         Assert.notNull(model, "必须找到默认模型"); | ||||
|         validateChatModel(model); | ||||
|  | ||||
|         // 2. 创建 AiChatConversationDO 聊天对话 | ||||
|         String title = createReqVO.getRoleId() == null ? AiChatConversationDO.TITLE_DEFAULT : role.getName(); | ||||
|         AiChatConversationDO conversation = new AiChatConversationDO() | ||||
|                 .setUserId(userId).setTitle(title).setPinned(false) | ||||
|                 .setRoleId(role.getId()).setModelId(model.getId()).setModel(model.getModel()).setSystemMessage(role.getSystemMessage()) | ||||
|         AiChatConversationDO conversation = new AiChatConversationDO().setUserId(userId).setPinned(false) | ||||
|                 .setModelId(model.getId()).setModel(model.getModel()) | ||||
|                 .setTemperature(model.getTemperature()).setMaxTokens(model.getMaxTokens()).setMaxContexts(model.getMaxContexts()); | ||||
|         if (role != null) { | ||||
|             conversation.setTitle(role.getName()).setRoleId(role.getId()).setSystemMessage(role.getSystemMessage()); | ||||
|         } else { | ||||
|             conversation.setTitle(AiChatConversationDO.TITLE_DEFAULT); | ||||
|         } | ||||
|         chatConversationMapper.insert(conversation); | ||||
|         return conversation.getId(); | ||||
|     } | ||||
|   | ||||
| @@ -165,7 +165,9 @@ public class AiChatMessageServiceImpl implements AiChatMessageService { | ||||
|         // 1. 构建 Prompt Message 列表 | ||||
|         List<Message> chatMessages = new ArrayList<>(); | ||||
|         // 1.1 system context 角色设定 | ||||
|         if (StrUtil.isNotBlank(conversation.getSystemMessage())) { | ||||
|             chatMessages.add(new SystemMessage(conversation.getSystemMessage())); | ||||
|         } | ||||
|         // 1.2 history message 历史消息 | ||||
|         List<AiChatMessageDO> contextMessages = filterContextMessages(messages, conversation, sendReqVO); | ||||
|         contextMessages.forEach(message -> chatMessages.add(new ChatMessage(message.getType().toUpperCase(), message.getContent()))); | ||||
|   | ||||
| @@ -94,15 +94,6 @@ public interface AiChatRoleService { | ||||
|      */ | ||||
|     AiChatRoleDO validateChatRole(Long id); | ||||
|  | ||||
|     /** | ||||
|      * 获得默认的聊天角色 | ||||
|      * | ||||
|      * 如果获取不到,则抛出 {@link cn.iocoder.yudao.framework.common.exception.ServiceException} 业务异常 | ||||
|      * | ||||
|      * @return 聊天角色 | ||||
|      */ | ||||
|     AiChatRoleDO getRequiredDefaultChatRole(); | ||||
|  | ||||
|     /** | ||||
|      * 获得聊天角色分页 | ||||
|      * | ||||
|   | ||||
| @@ -121,16 +121,6 @@ public class AiChatRoleServiceImpl implements AiChatRoleService { | ||||
|         return chatRole; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public AiChatRoleDO getRequiredDefaultChatRole() { | ||||
|         AiChatRoleDO chatRole = chatRoleMapper.selectFirstByPublicStatusAndStatus( | ||||
|                 true, CommonStatusEnum.ENABLE.getStatus()); | ||||
|         if (chatRole == null) { | ||||
|             throw exception(CHAT_ROLE_DEFAULT_NOT_EXISTS); | ||||
|         } | ||||
|         return chatRole; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public PageResult<AiChatRoleDO> getChatRolePage(AiChatRolePageReqVO pageReqVO) { | ||||
|         return chatRoleMapper.selectPage(pageReqVO); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV