冲刺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);
}
}