Browse Source

历史会话传参修改为token

zhaojinyu 4 weeks ago
parent
commit
98443ff879

+ 9 - 6
base-modules/service-ai/service-ai-biz/src/main/java/com/usky/ai/controller/web/AiChatController.java

@@ -76,8 +76,7 @@ public class AiChatController {
         } else {
             sessionId = java.util.UUID.randomUUID().toString();
         }
-//        log.info("会话ID:{}", sessionId);
-//        System.out.println("会话ID:" + sessionId);
+
         // 解析 JSON 并提取 "content" 字段的值
         String questionText;
         questionText = content; // 提取 "content" 字段的值
@@ -116,7 +115,6 @@ public class AiChatController {
         // 插入角色定义(在对话历史的开头)
         Message roleDefinition = Message.builder()
                 .role(Role.SYSTEM.getValue()) // 使用系统角色
-//                .content("你是一个名为'永天小天Ai'的智能助手,擅长幽默和简洁的回答。") // 定义角色的行为和风格
                 .content(aiRole) // 定义角色的行为和风格
                 .build();
         messages.add(0, roleDefinition); // 将角色定义插入到对话历史的开头
@@ -133,6 +131,7 @@ public class AiChatController {
                 .model(tyqwModel)
                 .messages(messages)
                 .resultFormat(GenerationParam.ResultFormat.MESSAGE)
+                .topP(0.8)
                 .apiKey(apiKey)
                 .incrementalOutput(true) // 开启增量输出
                 .build();
@@ -212,8 +211,7 @@ public class AiChatController {
         } else {
             sessionId = java.util.UUID.randomUUID().toString();
         }
-//        log.info("会话ID:{}", sessionId);
-//        System.out.println("会话ID:" + sessionId);
+
         // 解析 JSON 并提取 "content" 字段的值
         String questionText;
         questionText = content; // 提取 "content" 字段的值
@@ -235,6 +233,12 @@ public class AiChatController {
         // 获取当前用户的对话历史
         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()
@@ -246,7 +250,6 @@ public class AiChatController {
         // 插入角色定义(在对话历史的开头)
         Message roleDefinition = Message.builder()
                 .role(Role.SYSTEM.getValue()) // 使用系统角色
-//                .content("你是一个名为'永天小天Ai'的智能助手,擅长幽默和简洁的回答。") // 定义角色的行为和风格
                 .content(aiRole) // 定义角色的行为和风格
                 .build();
         messages.add(0, roleDefinition); // 将角色定义插入到对话历史的开头

+ 8 - 5
base-modules/service-ai/service-ai-biz/src/main/java/com/usky/ai/controller/web/AiSessionController.java

@@ -5,12 +5,10 @@ import com.usky.ai.mapper.AiSessionMapper;
 import com.usky.ai.service.AiQuestion;
 import com.usky.ai.service.AiQuestionItem;
 import com.usky.ai.service.AiSession;
+import com.usky.common.security.utils.SecurityUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -31,7 +29,12 @@ public class AiSessionController {
         return aiSessionMapper.findAll();
     }
 
-    @GetMapping("/{userId}")
+    @GetMapping("/current")
+    public List<AiSession> getCurrentSessions(@RequestHeader("Authorization") String token) {
+        // 解析 token 获取 userId
+        Long userId = SecurityUtils.getUserId();
+        return getSessionsByUserId(userId);
+    }
     public List<AiSession> getSessionsByUserId(@PathVariable Long userId) {
         List<AiSession> sessions = aiSessionMapper.findByUserId(userId);