Commit 25523fd53ee0d9cd9657c14f85f7f298a6094728

Authored by cherishsince
1 parent 97d4e56c

调整 chat 和 steamChat 获取对话逻辑

yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/impl/ChatServiceImpl.java
@@ -18,7 +18,9 @@ import cn.iocoder.yudao.module.ai.enums.ChatTypeEnum; @@ -18,7 +18,9 @@ import cn.iocoder.yudao.module.ai.enums.ChatTypeEnum;
18 import cn.iocoder.yudao.module.ai.mapper.AiChatConversationMapper; 18 import cn.iocoder.yudao.module.ai.mapper.AiChatConversationMapper;
19 import cn.iocoder.yudao.module.ai.mapper.AiChatMessageMapper; 19 import cn.iocoder.yudao.module.ai.mapper.AiChatMessageMapper;
20 import cn.iocoder.yudao.module.ai.mapper.AiChatRoleMapper; 20 import cn.iocoder.yudao.module.ai.mapper.AiChatRoleMapper;
  21 +import cn.iocoder.yudao.module.ai.service.ChatConversationService;
21 import cn.iocoder.yudao.module.ai.service.ChatService; 22 import cn.iocoder.yudao.module.ai.service.ChatService;
  23 +import cn.iocoder.yudao.module.ai.vo.ChatConversationRes;
22 import cn.iocoder.yudao.module.ai.vo.ChatReq; 24 import cn.iocoder.yudao.module.ai.vo.ChatReq;
23 import lombok.AllArgsConstructor; 25 import lombok.AllArgsConstructor;
24 import lombok.extern.slf4j.Slf4j; 26 import lombok.extern.slf4j.Slf4j;
@@ -46,6 +48,7 @@ public class ChatServiceImpl implements ChatService { @@ -46,6 +48,7 @@ public class ChatServiceImpl implements ChatService {
46 private final AiChatRoleMapper aiChatRoleMapper; 48 private final AiChatRoleMapper aiChatRoleMapper;
47 private final AiChatMessageMapper aiChatMessageMapper; 49 private final AiChatMessageMapper aiChatMessageMapper;
48 private final AiChatConversationMapper aiChatConversationMapper; 50 private final AiChatConversationMapper aiChatConversationMapper;
  51 + private final ChatConversationService chatConversationService;
49 52
50 53
51 /** 54 /**
@@ -59,13 +62,10 @@ public class ChatServiceImpl implements ChatService { @@ -59,13 +62,10 @@ public class ChatServiceImpl implements ChatService {
59 Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); 62 Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
60 // 获取 client 类型 63 // 获取 client 类型
61 AiClientNameEnum clientNameEnum = AiClientNameEnum.valueOfName(req.getModal()); 64 AiClientNameEnum clientNameEnum = AiClientNameEnum.valueOfName(req.getModal());
62 - // 获取 对话类型(新建还是继续)  
63 - ChatConversationTypeEnum chatConversationTypeEnum = ChatConversationTypeEnum.valueOfType(req.getConversationType());  
64 - AiChatConversationDO aiChatConversationDO = getChatConversationNoExistToCreate(req, chatConversationTypeEnum, loginUserId);  
65 - 65 + // 获取对话信息
  66 + ChatConversationRes conversationRes = chatConversationService.getConversation(req.getConversationId());
66 // 保存 chat message 67 // 保存 chat message
67 - saveChatMessage(req, aiChatConversationDO.getId(), loginUserId);  
68 - 68 + saveChatMessage(req, conversationRes.getId(), loginUserId);
69 String content = null; 69 String content = null;
70 try { 70 try {
71 // 创建 chat 需要的 Prompt 71 // 创建 chat 需要的 Prompt
@@ -80,7 +80,7 @@ public class ChatServiceImpl implements ChatService { @@ -80,7 +80,7 @@ public class ChatServiceImpl implements ChatService {
80 content = ExceptionUtil.getMessage(e); 80 content = ExceptionUtil.getMessage(e);
81 } finally { 81 } finally {
82 // 保存 chat message 82 // 保存 chat message
83 - saveSystemChatMessage(req, aiChatConversationDO.getId(), loginUserId, content); 83 + saveSystemChatMessage(req, conversationRes.getId(), loginUserId, content);
84 } 84 }
85 return content; 85 return content;
86 } 86 }
@@ -176,16 +176,15 @@ public class ChatServiceImpl implements ChatService { @@ -176,16 +176,15 @@ public class ChatServiceImpl implements ChatService {
176 Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); 176 Long loginUserId = SecurityFrameworkUtils.getLoginUserId();
177 // 获取 client 类型 177 // 获取 client 类型
178 AiClientNameEnum clientNameEnum = AiClientNameEnum.valueOfName(req.getModal()); 178 AiClientNameEnum clientNameEnum = AiClientNameEnum.valueOfName(req.getModal());
179 - // 获取 对话类型(新建还是继续)  
180 - ChatConversationTypeEnum chatConversationTypeEnum = ChatConversationTypeEnum.valueOfType(req.getConversationType());  
181 - AiChatConversationDO aiChatConversationDO = getChatConversationNoExistToCreate(req, chatConversationTypeEnum, loginUserId); 179 + // 获取对话信息
  180 + ChatConversationRes conversationRes = chatConversationService.getConversation(req.getConversationId());
182 // 创建 chat 需要的 Prompt 181 // 创建 chat 需要的 Prompt
183 Prompt prompt = new Prompt(req.getPrompt()); 182 Prompt prompt = new Prompt(req.getPrompt());
184 req.setTopK(req.getTopK()); 183 req.setTopK(req.getTopK());
185 req.setTopP(req.getTopP()); 184 req.setTopP(req.getTopP());
186 req.setTemperature(req.getTemperature()); 185 req.setTemperature(req.getTemperature());
187 // 保存 chat message 186 // 保存 chat message
188 - saveChatMessage(req, aiChatConversationDO.getId(), loginUserId); 187 + saveChatMessage(req, conversationRes.getId(), loginUserId);
189 Flux<ChatResponse> streamResponse = aiClient.stream(prompt, clientNameEnum.getName()); 188 Flux<ChatResponse> streamResponse = aiClient.stream(prompt, clientNameEnum.getName());
190 189
191 StringBuffer contentBuffer = new StringBuffer(); 190 StringBuffer contentBuffer = new StringBuffer();
@@ -212,7 +211,7 @@ public class ChatServiceImpl implements ChatService { @@ -212,7 +211,7 @@ public class ChatServiceImpl implements ChatService {
212 log.info("发送完成!"); 211 log.info("发送完成!");
213 sseEmitter.complete(); 212 sseEmitter.complete();
214 // 保存 chat message 213 // 保存 chat message
215 - saveSystemChatMessage(req, aiChatConversationDO.getId(), loginUserId, contentBuffer.toString()); 214 + saveSystemChatMessage(req, conversationRes.getId(), loginUserId, contentBuffer.toString());
216 } 215 }
217 ); 216 );
218 } 217 }