|
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.ai.service.chat;
|
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
import cn.hutool.core.util.ObjUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
|
|
import cn.iocoder.yudao.module.ai.controller.admin.chat.vo.conversation.AiChatConversationCreateMyReqVO;
|
|
@@ -11,7 +12,7 @@ import cn.iocoder.yudao.module.ai.convert.AiChatConversationConvert;
|
|
|
import cn.iocoder.yudao.module.ai.dal.dataobject.chat.AiChatConversationDO;
|
|
|
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModelDO;
|
|
|
import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO;
|
|
|
-import cn.iocoder.yudao.module.ai.dal.mysql.AiChatConversationMapper;
|
|
|
+import cn.iocoder.yudao.module.ai.dal.mysql.chat.AiChatConversationMapper;
|
|
|
import cn.iocoder.yudao.module.ai.service.model.AiChatModelService;
|
|
|
import cn.iocoder.yudao.module.ai.service.model.AiChatRoleService;
|
|
|
import jakarta.annotation.Resource;
|
|
@@ -22,6 +23,7 @@ import org.springframework.validation.annotation.Validated;
|
|
|
import java.util.List;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.*;
|
|
|
+import static cn.iocoder.yudao.module.ai.ErrorCodeConstants.CHAT_CONVERSATION_MODEL_ERROR;
|
|
|
import static cn.iocoder.yudao.module.ai.ErrorCodeConstants.CHAT_CONVERSATION_NOT_EXISTS;
|
|
|
|
|
|
/**
|
|
@@ -49,9 +51,10 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
|
|
|
: chatRoleService.getRequiredDefaultChatRole();
|
|
|
Assert.notNull(role, "必须找到聊天角色");
|
|
|
// 1.2 获得 AiChatModelDO 聊天模型
|
|
|
- AiChatModelDO model = role.getModelId() != null ? chatModalService.validateChatModel(role.getId())
|
|
|
+ AiChatModelDO model = role.getModelId() != null ? chatModalService.validateChatModel(role.getModelId())
|
|
|
: chatModalService.getRequiredDefaultChatModel();
|
|
|
- Assert.notNull(role, "必须找到默认模型");
|
|
|
+ Assert.notNull(model, "必须找到默认模型");
|
|
|
+ validateChatModel(model);
|
|
|
|
|
|
// 2. 创建 AiChatConversationDO 聊天对话
|
|
|
AiChatConversationDO conversation = new AiChatConversationDO()
|
|
@@ -70,9 +73,10 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
|
|
|
throw exception(CHAT_CONVERSATION_NOT_EXISTS);
|
|
|
}
|
|
|
// 1.2 校验模型是否存在
|
|
|
- AiChatModelDO model = null;
|
|
|
+ AiChatModelDO model;
|
|
|
if (updateReqVO.getModelId() != null) {
|
|
|
model = chatModalService.validateChatModel(updateReqVO.getModelId());
|
|
|
+ Assert.notNull(model, "必须找到默认模型");
|
|
|
}
|
|
|
// 1.3 校验温度参数、Token 数量、消息数量 TODO
|
|
|
|
|
@@ -81,13 +85,15 @@ public class AiChatConversationServiceImpl implements AiChatConversationService
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<AiChatConversationRespVO> listConversation() {
|
|
|
- // 获取用户id
|
|
|
- Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
|
|
|
- // 查询前100对话
|
|
|
- List<AiChatConversationDO> top100Conversation
|
|
|
- = chatConversationMapper.selectTop100Conversation(loginUserId, null);
|
|
|
- return AiChatConversationConvert.INSTANCE.covnertChatConversationResList(top100Conversation);
|
|
|
+ public List<AiChatConversationDO> getChatConversationListByUserId(Long userId) {
|
|
|
+ return chatConversationMapper.selectListByUserId(userId);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void validateChatModel(AiChatModelDO model) {
|
|
|
+ if (ObjectUtil.isAllNotEmpty(model.getTemperature(), model.getMaxTokens(), model.getMaxContexts())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ throw exception(CHAT_CONVERSATION_MODEL_ERROR);
|
|
|
}
|
|
|
|
|
|
@Override
|