冲刺1

服务端代码:

@PostMapping("/chat")
    public Result<String> processChatRequest(@RequestBody ChatRequest chatRequest) {
        //System.out.println(chatRequest.toString());
        //System.out.println(chatRequest.getMessage());
        //验证token
        try {
            Map<String, Object> claims = JwtUtil.parseToken(chatRequest.getToken());

            int userId = (int) claims.get("id");

            Calendar calendar = Calendar.getInstance();

            SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

            String reqTime = dateFormat.format(calendar.getTime());

            ChatProRequest req = new ChatProRequest();
            ArrayList<Message> messages1 = new ArrayList<Message>();
            Message message1 = new Message();

            message1.setRole("system");
            message1.setContent("你是一个用于辅导儿童心理的对话专家,你的名字叫小e" +
                    "我要求你在与儿童对话的过程中," +
                    "辅导儿童心理,同时引导他们树立正确的价值观;在与家长对话的时候," +
                    "能够根据与儿童的对话内容分析儿童的心理健康状况,并给出家长建议,在每一轮对话的" +
                    "末尾使用【情感关键词:关键词】的形式,一定要使用【】进行包围,给出本轮对话用户可能的情感,如果信息不足以分析用户" +
                    "情绪则返回【情感关键词:NULL】,默认情况下也一定在回答末尾要返回【情感关键词:NULL】");

            messages1.add(message1);
            Message message2 = new Message();

            List<ChatRecord> historyMessages = chatService.getChatHistory(userId);
            if (historyMessages != null){
                for (ChatRecord record : historyMessages) {
                    Message historyUserMessage = new Message();
                    historyUserMessage.setRole("user");
                    historyUserMessage.setContent(record.getUser_message());
                    messages1.add(historyUserMessage);
                    Message historyBotMessage = new Message();
                    historyBotMessage.setRole("assistant");
                    historyBotMessage.setContent(record.getBot_response());
                    messages1.add(historyBotMessage);
                    System.out.println(record.getTimestamp());
                }
            }

            message2.setRole("user");
            message2.setContent(chatRequest.getMessage());

            messages1.add(message2);
            Message[] messages = messages1.toArray(new Message[0]);

            req.setMessages(messages);
            ChatProResponse response = sendPostRequest(req);

            System.out.println(response);

            Choice[] choices = response.getChoices();
            Message message = choices[0].getMessage();

            String choice = message.getContent();
            System.out.println(choice);
            String[] result = extractDataAndKeyword(choice);
            System.out.println(result[0]+result[1]+" is null");
            if (result[1] == null){
                    chatService.chatHistoryIncert(userId,chatRequest.getMessage(),result[0],null);
                    return Result.success(result[0]);
            } else {
                chatService.chatHistoryIncert(userId,chatRequest.getMessage(),result[0],result[1]);
            }

            return Result.success(choice);

        } catch (Exception e) {
            //未登录
            Result.error("未登录");
            throw new RuntimeException(e);
        }


    }
posted @ 2024-06-17 10:52  起名字真难_qmz  阅读(21)  评论(0)    收藏  举报