Skip to content

Commit a9427ea

Browse files
committed
대화 부가서비스 관련 API구현
1 parent e2ee408 commit a9427ea

File tree

5 files changed

+34
-10
lines changed

5 files changed

+34
-10
lines changed

api/src/main/java/com/mbtips/domain/addition/controller/AdditionController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ public class AdditionController {
2424
@Operation(summary = "대화 꿀팁", description = "해당 AI와의 대화 꿀팁을 반환합니다.")
2525
public ApiResponse<String> requestConversationTips(@PathVariable Long virtualFriendId, @LoginUser User user){
2626
String result = additionService.requestConversationTips(virtualFriendId);
27-
2827
return ApiResponse.success(result);
2928
}
3029

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,39 @@
11
package com.mbtips.domain.addition.service;
22

33
import com.mbtips.clova.dto.Message;
4+
import com.mbtips.common.mbtiinfo.MbtiTraits;
5+
import com.mbtips.common.mbtiinfo.MbtiType;
46
import com.mbtips.domain.conversation.service.ConversationService;
57
import com.mbtips.domain.converstation.Conversation;
68
import com.mbtips.domain.message.dto.response.GetMessageResponseDto;
9+
import com.mbtips.domain.virtualfriend.VirtualFriend;
10+
import com.mbtips.domain.virtualfriend.VirtualFriendService;
11+
import com.mbtips.domain.virtualfriend.response.VirtualFriendInfoResponse;
712
import com.mbtips.message.application.manager.MessageManager;
813
import com.mbtips.message.application.service.MessageService;
914
import lombok.RequiredArgsConstructor;
15+
import lombok.extern.slf4j.Slf4j;
1016
import org.springframework.stereotype.Service;
1117

1218
import java.util.ArrayList;
1319
import java.util.List;
1420

1521
@Service
1622
@RequiredArgsConstructor
23+
@Slf4j
1724
public class AdditionService {
1825

1926
public final MessageManager messageManager;
2027
public final ConversationService conversationService;
2128
public final MessageService messageService;
29+
public final VirtualFriendService virtualFriendService;
2230
public String requestConversationTips(Long virtualFriendId) {
23-
String requestPrompt = "대화 주제 추천해줘";
31+
VirtualFriendInfoResponse virtualFriend = virtualFriendService.findFriendInfoById(virtualFriendId);
32+
33+
String mbtiTrait = MbtiTraits.getTrait(MbtiType.valueOf(virtualFriend.mbti()));
34+
mbtiTrait = mbtiTrait.substring(mbtiTrait.indexOf("특징을 설명해주면 다음과 같아"));
35+
String requestPrompt = mbtiTrait + ", 이 mbti와 대화할 때, 꿀팁 알려줘";
36+
log.debug("requstPrompt : {}", requestPrompt);
2437
String result = messageManager.messageRequest(requestPrompt);
2538
return result;
2639
}
@@ -29,16 +42,28 @@ public String requestTemperature(Long conversationId) {
2942
Conversation conversation = conversationService.findById(conversationId);
3043
List<GetMessageResponseDto> messages = messageService.getMessagesOfConversationId(conversationId);
3144

32-
String prompt = "현재까지의 대화 온도 측정해서 0~100 사이의 숫자로만 대답해줘";
33-
String result = messageManager.messageRequest(prompt);
45+
String[] messageList = {
46+
"사용자: 안녕하세요, 오늘 기분이 어떠세요?",
47+
"AI: 안녕하세요, 오늘 기분이 활기차고 즐거워요.",
48+
"사용자: 오늘 특별한 계획이 있으세요?",
49+
"AI: 네, 친구와 함께 신나는 시간을 보낼 예정입니다."
50+
};
51+
String requestConversation = String.join(", ", messageList);
52+
String prompt = requestConversation + "현재까지의 대화 온도 측정해서 0~100 사이의 숫자로만 대답해줘 냉정하게 판단해주고, 숫자로만 대답해.";
53+
log.debug("prompt : {}", prompt);
54+
String temperatureResponse = messageManager.messageRequest(prompt);
55+
String result = temperatureResponse.replaceAll("[^0-9]", "");
3456
return result;
3557
}
3658

3759
public String requestRecommendTopic(Long virtualFriendId) {
60+
VirtualFriendInfoResponse virtualFriend = virtualFriendService.findFriendInfoById(virtualFriendId);
61+
String mbtiTrait = MbtiTraits.getTrait(MbtiType.valueOf(virtualFriend.mbti()));
62+
mbtiTrait = mbtiTrait.substring(mbtiTrait.indexOf("특징을 설명해주면 다음과 같아"));
63+
String requestPrompt = mbtiTrait + ", 이 mbti와 대화할 때, 맞는 대화 주제 키워드 5개만 추천해줘, 짧게 단어로만 이야기해줘";
3864

39-
String prompt = "지금까지 말한 MBTI와 맞는 대화 주제 5개만 추천해줘";
40-
String result = messageManager.messageRequest(prompt);
41-
65+
String result = messageManager.messageRequest(requestPrompt);
66+
log.debug("result : {}", result);
4267
return result;
4368
}
4469
}

api/src/main/java/com/mbtips/domain/virtualfriend/VirtualFriendController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public ApiResponse<List<VirtualFriendResponse>> getVirtualFriends(@LoginUser Use
3333
@GetMapping("/{virtualFriendId}")
3434
@Operation(summary = "가상친구 상세 조회", description = "virtualFriendId를 기준으로 가상친구를 상세조회합니다.")
3535
public ApiResponse<VirtualFriendInfoResponse> getVirtualFriend(@LoginUser User user, @PathVariable Long virtualFriendId) {
36-
VirtualFriendInfoResponse result = virtualFriendService.findById(virtualFriendId);
36+
VirtualFriendInfoResponse result = virtualFriendService.findFriendInfoById(virtualFriendId);
3737
return ApiResponse.success(result);
3838
}
3939

api/src/main/java/com/mbtips/domain/virtualfriend/VirtualFriendService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public String makePrompt(Long conversationId) {
9191
return result;
9292
}
9393

94-
public VirtualFriendInfoResponse findById(Long virtualFriendId) {
94+
public VirtualFriendInfoResponse findFriendInfoById(Long virtualFriendId) {
9595
VirtualFriend virtualFriend = virtualFriendRepository.findById(virtualFriendId);
9696
List<String> interest = interestRepository.findTopicsByVirtualFriendId(virtualFriendId);
9797
log.debug("interest : {}", interest);

repository/src/main/resources/local/application-repository.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ spring:
33
driver-class-name: com.mysql.cj.jdbc.Driver
44
url: "jdbc:mysql://localhost:3306/problem"
55
username: root
6-
password: "!qotjrdyd1"
6+
password: root
77

88
jpa:
99
show-sql: true

0 commit comments

Comments
 (0)