|
1 | 1 | package com.mbtips.domain.addition.service; |
2 | 2 |
|
3 | 3 | import com.mbtips.clova.dto.Message; |
| 4 | +import com.mbtips.common.exception.CustomException; |
| 5 | +import com.mbtips.common.exception.enums.CommonException; |
4 | 6 | import com.mbtips.common.mbtiinfo.MbtiTraits; |
5 | 7 | import com.mbtips.common.mbtiinfo.MbtiType; |
6 | 8 | import com.mbtips.domain.conversation.service.ConversationService; |
@@ -39,17 +41,25 @@ public String requestConversationTips(Long virtualFriendId) { |
39 | 41 | } |
40 | 42 |
|
41 | 43 | public String requestTemperature(Long conversationId) { |
42 | | - Conversation conversation = conversationService.findById(conversationId); |
| 44 | + |
43 | 45 | List<GetMessageResponseDto> messages = messageService.getMessagesOfConversationId(conversationId); |
44 | 46 |
|
45 | | - String[] messageList = { |
46 | | - "사용자: 안녕하세요, 오늘 기분이 어떠세요?", |
47 | | - "AI: 안녕하세요, 오늘 기분이 활기차고 즐거워요.", |
48 | | - "사용자: 오늘 특별한 계획이 있으세요?", |
49 | | - "AI: 네, 친구와 함께 신나는 시간을 보낼 예정입니다." |
50 | | - }; |
51 | | - String requestConversation = String.join(", ", messageList); |
52 | | - String prompt = requestConversation + "현재까지의 대화 온도 측정해서 0~100 사이의 숫자로만 대답해줘 냉정하게 판단해주고, 숫자로만 대답해."; |
| 47 | + StringBuilder messageBuilder = new StringBuilder(); |
| 48 | + |
| 49 | + if(messages.size() <= 5) throw new CustomException(CommonException.TOO_FEW_CONVERSATIONS); |
| 50 | + for(int i = messages.size() - 6; i < messages.size(); i++){ |
| 51 | + if(messages.get(i).userId() != null) { |
| 52 | + messageBuilder.append("사용자 : "); |
| 53 | + messageBuilder.append(messages.get(i).messageContent()); |
| 54 | + } |
| 55 | + if(messages.get(i).virtualFriendId() != null) { |
| 56 | + messageBuilder.append("가상 친구 : "); |
| 57 | + messageBuilder.append(messages.get(i).messageContent()); |
| 58 | + } |
| 59 | + if(i != messages.size() -1 ) messageBuilder.append(", "); |
| 60 | + } |
| 61 | + log.debug("대화 내역 : {}", messageBuilder.toString()); |
| 62 | + String prompt = messageBuilder + "현재까지의 대화 온도 측정해서 0~100 사이의 숫자로만 대답해줘 냉정하게 판단해주고, 숫자로만 대답해."; |
53 | 63 | log.debug("prompt : {}", prompt); |
54 | 64 | String temperatureResponse = messageManager.messageRequest(prompt); |
55 | 65 | String result = temperatureResponse.replaceAll("[^0-9]", ""); |
|
0 commit comments