浏览代码

将deepseek接口代码与tyqw接口代码保持一致

zhaojinyu 1 月之前
父节点
当前提交
961f3fee92
共有 1 个文件被更改,包括 42 次插入19 次删除
  1. 42 19
      service-ai/service-ai-biz/src/main/java/com/usky/ai/controller/web/AiChatController.java

+ 42 - 19
service-ai/service-ai-biz/src/main/java/com/usky/ai/controller/web/AiChatController.java

@@ -240,8 +240,7 @@ public class AiChatController {
         }
 
         // 解析 JSON 并提取 "content" 字段的值
-        String questionText;
-        questionText = content; // 提取 "content" 字段的值
+        String questionText = content;
 
         // 检查是否已经存在相同的 sessionId
         boolean exists = aiSessionMapper.existsBySessionId(sessionId);
@@ -257,29 +256,53 @@ public class AiChatController {
             aiSessionMapper.save(aiSession);
         }
 
-        // 获取当前用户的对话历史
-        List<AiQuestion> conversationHistory = aiQuestionMapper.findByUserIdAndSessionId(sessionId, userId);
-
-        // 只保留最近的几轮对话
-//        int historyLimit = Limit;
-//        if (conversationHistory.size() > historyLimit) {
-//            conversationHistory = conversationHistory.subList(conversationHistory.size() - historyLimit, conversationHistory.size());
-//        }
-
-        // 构建对话历史消息
-        List<Message> messages = conversationHistory.stream()
-                .map(q -> Message.builder()
-                        .role(q.getUserId().equals(userId) ? Role.USER.getValue() : Role.ASSISTANT.getValue())
-                        .content(q.getUserId().equals(userId) ? q.getQuestion() : q.getAnswer())
-                        .build())
-                .collect(Collectors.toList());
+        // 构建消息列表,包含角色定义、历史对话记录和用户新消息
+        List<Message> messages = new ArrayList<>();
 
         // 插入角色定义(在对话历史的开头)
         Message roleDefinition = Message.builder()
                 .role(Role.SYSTEM.getValue()) // 使用系统角色
                 .content(aiRole) // 定义角色的行为和风格
                 .build();
-        messages.add(0, roleDefinition); // 将角色定义插入到对话历史的开头
+        messages.add(roleDefinition); // 将角色定义插入到对话历史的开头
+
+        // 从数据库中获取历史对话记录
+        List<AiQuestion> questions = aiQuestionMapper.findQuestionsBySessionId(sessionId);
+
+        // 如果历史记录超过限制,则只取最近的记录
+        if (questions.size() > Limit) {
+            questions = questions.subList(questions.size() - Limit, questions.size());
+        }
+
+        // 将历史对话记录转换为 AiQuestionItem 列表
+        List<AiQuestionItem> itemList = new ArrayList<>();
+        for (AiQuestion question : questions) {
+            AiQuestionItem userItem = new AiQuestionItem("user", question.getQuestion());
+            userItem.setId(question.getId());
+            userItem.setSessionId(question.getSessionId());
+            userItem.setUserId(question.getUserId());
+            userItem.setUserName(question.getUserName());
+            userItem.setAskTime(question.getAskTime());
+
+            AiQuestionItem assistantItem = new AiQuestionItem("assistant", question.getAnswer());
+            assistantItem.setId(question.getId());
+            assistantItem.setSessionId(question.getSessionId());
+            assistantItem.setUserId(question.getUserId());
+            assistantItem.setUserName(question.getUserName());
+            assistantItem.setAskTime(question.getAskTime());
+
+            itemList.add(userItem);
+            itemList.add(assistantItem);
+        }
+
+        // 将 AiQuestionItem 列表转换为消息列表
+        for (AiQuestionItem item : itemList) {
+            Message message = Message.builder()
+                    .role(item.getRole().equals("user") ? Role.USER.getValue() : Role.ASSISTANT.getValue())
+                    .content(item.getContent() != null ? item.getContent() : item.getReasoningContent())
+                    .build();
+            messages.add(message);
+        }
 
         // 添加用户的新消息
         Message userMessage = Message.builder()