Browse Source

Merge remote-tracking branch 'origin/master-jdk21-ai' into master-jdk21-ai

cherishsince 11 months ago
parent
commit
5a711d988d

+ 0 - 8
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/AiChatRoleMapper.java

@@ -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())

+ 9 - 8
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/chat/AiChatConversationServiceImpl.java

@@ -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();
     }

+ 3 - 1
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/chat/AiChatMessageServiceImpl.java

@@ -165,7 +165,9 @@ public class AiChatMessageServiceImpl implements AiChatMessageService {
         // 1. 构建 Prompt Message 列表
         List<Message> chatMessages = new ArrayList<>();
         // 1.1 system context 角色设定
-        chatMessages.add(new SystemMessage(conversation.getSystemMessage()));
+        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())));

+ 0 - 9
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/model/AiChatRoleService.java

@@ -94,15 +94,6 @@ public interface AiChatRoleService {
      */
     AiChatRoleDO validateChatRole(Long id);
 
-    /**
-     * 获得默认的聊天角色
-     *
-     * 如果获取不到,则抛出 {@link cn.iocoder.yudao.framework.common.exception.ServiceException} 业务异常
-     *
-     * @return 聊天角色
-     */
-    AiChatRoleDO getRequiredDefaultChatRole();
-
     /**
      * 获得聊天角色分页
      *

+ 0 - 10
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/model/AiChatRoleServiceImpl.java

@@ -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);