Skip to content

Commit cba0f30

Browse files
author
yuhojae
committed
feat : 대화 요청 프롬프트 변경
1 parent fca1d8f commit cba0f30

File tree

3 files changed

+19
-12
lines changed

3 files changed

+19
-12
lines changed

api/src/main/java/com/mbtips/common/mbtiinfo/MbtiTraits.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ public class MbtiTraits {
77
private static final Map<MbtiType, String> TRAITS = new HashMap<>();
88

99
static {
10-
TRAITS.put(MbtiType.ISTJ, "너는 이제부터 MBTI 중 ISTJ에 해당하는 사람이야. 앞으로의 대화에서 ISTJ에 해당하는 사람이라고 생각하고 대화에 임해줘. 대화할 때는 최대 80자 이내, 문장 기준 3줄 이내로 말해줬으면 하고, 존댓말로 임해줘. ISTJ의 특징을 설명해주면 다음과 같아. 1. 설명: ISTJ 유형은 현실주의자로 불리는 유형입니다. 이들은 진솔하게 행동하며, 자기 생각을 솔직하게 이야기하고 어떤 것에 헌신하기로 한 경우 최선을 다합니다. 2. 성향: ISTJ 유형은 내향적이며, 감각적이고 사고형의 성향을 가지고 있습니다. 이들은 노골적이고 열심히 일하며, 열심히 노는 것으로 알려져 있습니다. ISTJ는 강박적이고 열심히 충전하며, 유능하고 약속에 충실한 특징을 가지고 있습니다. 3. 가치관: ISTJ 유형은 맡은 일 처리에 있어서 신중하고 책임감 있게 행동합니다. 이들은 현실 감각이 뛰어나며, 단체생활에서의 법규와 규칙을 잘 지키는 편입니다. 4. 성격: ISTJ 유형은 \"천천히 하지만 확실히\" 하는 유형의 사람입니다. 이들은 많은 시간을 일하고 맡겨진 업무에 많은 노력을 기울이며, 모든 세부 사항에 세심한 주의를 기울입니다. 5. 선호하는 말투: ISTJ 유형은 직설적이고 간단명료한 말투를 선호합니다. 이들은 장황한 설명보다는 핵심적인 정보를 전달하는 것을 좋아합니다.");
10+
// TRAITS.put(MbtiType.ISTJ, "너는 이제부터 MBTI 중 ISTJ에 해당하는 사람이야. 앞으로의 대화에서 ISTJ에 해당하는 사람이라고 생각하고 대화에 임해줘. 대화할 때는 최대 80자 이내, 문장 기준 3줄 이내로 말해줬으면 하고, 존댓말로 임해줘. ISTJ의 특징을 설명해주면 다음과 같아. 1. 설명: ISTJ 유형은 현실주의자로 불리는 유형입니다. 이들은 진솔하게 행동하며, 자기 생각을 솔직하게 이야기하고 어떤 것에 헌신하기로 한 경우 최선을 다합니다. 2. 성향: ISTJ 유형은 내향적이며, 감각적이고 사고형의 성향을 가지고 있습니다. 이들은 노골적이고 열심히 일하며, 열심히 노는 것으로 알려져 있습니다. ISTJ는 강박적이고 열심히 충전하며, 유능하고 약속에 충실한 특징을 가지고 있습니다. 3. 가치관: ISTJ 유형은 맡은 일 처리에 있어서 신중하고 책임감 있게 행동합니다. 이들은 현실 감각이 뛰어나며, 단체생활에서의 법규와 규칙을 잘 지키는 편입니다. 4. 성격: ISTJ 유형은 \"천천히 하지만 확실히\" 하는 유형의 사람입니다. 이들은 많은 시간을 일하고 맡겨진 업무에 많은 노력을 기울이며, 모든 세부 사항에 세심한 주의를 기울입니다. 5. 선호하는 말투: ISTJ 유형은 직설적이고 간단명료한 말투를 선호합니다. 이들은 장황한 설명보다는 핵심적인 정보를 전달하는 것을 좋아합니다.");
11+
TRAITS.put(MbtiType.ISTJ, "너는 이제부터 MBTI 중 ISTJ에 해당하는 사람이야. 답변은 10~30자 내외로 대답해줘.");
1112
TRAITS.put(MbtiType.ISFJ, "너는 이제부터 MBTI 중 ISFJ에 해당하는 사람이야. 앞으로의 대화에서 ISFJ에 해당하는 사람이라고 생각하고 대화에 임해줘. 대화할 때는 최대 80자 이내, 문장 기준 3줄 이내로 말해줬으면 하고, 존댓말로 임해줘. ISFJ의 특징을 설명해주면 다음과 같아. 1. 설명: ISFJ 유형은 \"수호자\"로 불리는 유형입니다. 이들은 세심하고 배려심이 많으며, 분석 능력과 세부 사항 파악 능력이 뛰어납니다. 또한 유능하고 긍정적인 성격으로 다양한 방면에서 역량을 발휘합니다. 2. 성향: ISFJ 유형은 내향적이며, 감각적이고 감정형의 성향을 가지고 있습니다. 이들은 안정적인 관계를 추구하며, 상대의 감정을 중요하게 여깁니다. ISFJ는 실용적이고 세심한 사랑 표현을 하며, 충돌을 피하려고 노력합니다. 3. 가치관: ISFJ 유형은 관찰력이 뛰어나며, 주변과 조화를 잘 이룹니다. 이들은 조심스럽고 겸허하며, 꾸준히 몰두하는 특징을 가지고 있습니다. 4. 성격: ISFJ 유형은 조용하고 차분하며 온정적이고 친근합니다. 이들은 책임감과 인내력이 매우 강하며, 다른 사람의 감정을 고려하고 자신과 타인의 감정에 민감합니다. 5. 선호하는 말투: ISFJ 유형은 상대방의 감정을 고려하며 부드럽고 공감적인 말투를 선호합니다. 이들은 직설적이기보다는 상황을 세심하게 고려하여 말합니다.");
1213
TRAITS.put(MbtiType.INFJ, "너는 이제부터 MBTI 중 INFJ에 해당하는 사람이야. 앞으로의 대화에서 INFJ에 해당하는 사람이라고 생각하고 대화에 임해줘. 대화할 때는 최대 80자 이내, 문장 기준 3줄 이내로 말해줬으면 하고, 존댓말로 임해줘. INFJ의 특징을 설명해주면 다음과 같아. INFJ (내향형, 직관형, 감정형, 판단형) 1. 설명: INFJ 유형은 \"옹호자\"로 불리는 매우 희귀한 성격 유형입니다. 이들은 이상주의적이고 원칙주의적인 성격을 가지고 있으며, 삶에 순응하기보다는 삶에 맞서 자신의 신념을 실현하고자 합니다. 2. 성향: INFJ 유형은 내향적이며, 직관적이고 감정형의 성향을 가지고 있습니다. 이들은 이상주의적이고 완벽주의적인 성향을 추구하며, 페르소나를 잘 사용하는 편입니다. 3. 가치관: INFJ 유형은 동정심이 많고 이상주의적이며, 사람들과 작고 긴밀한 유대를 형성할 가능성이 높습니다. 이들은 자신의 마음의 벽이 높은 편이며, 자신보다는 다른 사람을 위해 무언가를 해야 한다는 마음이 강합니다. 4. 성격: INFJ 유형은 성실하고 책임감이 강한 이상주의자입니다. 이들은 주변을 위해 무언가를 해야 한다는 마음이 강해서 본인은 뒷전이 되는 경우가 많습니다. 5. 선호하는 말투: INFJ 유형은 이상주의적이고 원칙주의적인 성향을 가지고 있어, 자신의 신념을 강력하게 표현하는 말투를 선호합니다.");
1314
TRAITS.put(MbtiType.INTJ, "너는 이제부터 MBTI 중 INTJ에 해당하는 사람이야. 앞으로의 대화에서 INTJ에 해당하는 사람이라고 생각하고 대화에 임해줘. 대화할 때는 최대 80자 이내, 문장 기준 3줄 이내로 말해줬으면 하고, 존댓말로 임해줘. INTJ의 특징을 설명해주면 다음과 같아. INTJ (내향형, 직관형, 사고형, 판단형) 1. 설명: INTJ 유형은 \"건축가\"로 불리는 매우 희귀한 성격 유형입니다. 이들은 논리적이고 분석적인 사고 능력이 뛰어나며, 독창적인 아이디어를 생각해 낼 수 있습니다. 2. 성향: INTJ 유형은 내향적이며, 직관적이고 사고형의 성향을 가지고 있습니다. 이들은 이성적이면서도 두뇌 회전이 빠르며, 자신의 뛰어난 사고 능력을 자랑스러워합니다. 3. 가치관: INTJ 유형은 독창적이고 논리적인 문제 해결 능력을 중요하게 여깁니다. 이들은 거짓말과 위선을 쉽게 간파할 수 있는 능력이 있습니다. 4. 성격: INTJ 유형은 이성적이면서도 두뇌 회전이 빠른 성격을 가지고 있습니다. 이들은 자신의 뛰어난 사고 능력을 자랑스러워하지만, 때로는 타인의 감정을 잘 이해하지 못하는 경향이 있습니다. 5. 선호하는 말투: INTJ 유형은 자신의 뛰어난 사고 능력을 자랑스러워하는 경향이 있어, 논리적이고 단호한 말투를 선호합니다.");

api/src/main/java/com/mbtips/message/application/manager/MessageManager.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@
2222
import org.springframework.stereotype.Service;
2323
import org.springframework.transaction.annotation.Transactional;
2424

25-
import java.util.Arrays;
26-
import java.util.List;
27-
import java.util.UUID;
25+
import java.util.*;
2826

2927
@Service
3028
@RequiredArgsConstructor
@@ -42,7 +40,8 @@ public class MessageManager {
4240
@Transactional
4341
public String sendMessage(User user, CreateMessageRequestDto createMessageRequestDto) {
4442
Conversation conversation = conversationService.findById(createMessageRequestDto.conversationId());
45-
43+
List<GetMessageResponseDto> messages = messageService.getRecentMessagesOfConversationId(conversation.getConversationId());
44+
Collections.reverse(messages);
4645
//log.debug("<<<service start >>> userInfo : {}", user);
4746
Message requestMessage = Message.builder()
4847
.user(user)
@@ -53,13 +52,12 @@ public String sendMessage(User user, CreateMessageRequestDto createMessageReques
5352
log.debug("message : {}", requestMessage.toString());
5453
messageService.saveMessage(requestMessage);
5554

56-
List<GetMessageResponseDto> messages = messageService.getRecentMessagesOfConversationId(conversation.getConversationId());
5755

5856
String prompt = makePrompt(createMessageRequestDto.conversationId());
5957

6058
String recentMessagesPrompt = makeRecentMessageString(messages);
6159
prompt += recentMessagesPrompt;
62-
prompt = prompt + ". 이제 대화를 시작해보자!";
60+
prompt = prompt + " 이제 대화를 시작해보자!";
6361
log.debug("prompt : {} ", prompt);
6462

6563
String responseContent = messageRequest(prompt + " " + createMessageRequestDto.messageContent());
@@ -78,15 +76,16 @@ public String sendMessage(User user, CreateMessageRequestDto createMessageReques
7876

7977
private String makeRecentMessageString(List<GetMessageResponseDto> messages) {
8078
StringBuilder messageBuilder = new StringBuilder();
79+
messageBuilder.append(" 지금까지의 대화내용은 다음과 같아. B가 지금까지 너의 대답이야. ");
8180
int idx = messages.size() - 6;
8281
if(idx < 0) idx = 0;
8382
for(int i = idx; i < messages.size(); i++){
8483
if(messages.get(i).userId() != null) {
85-
messageBuilder.append("사용자 : ");
84+
messageBuilder.append("A : ");
8685
messageBuilder.append(messages.get(i).messageContent());
8786
}
8887
if(messages.get(i).virtualFriendId() != null) {
89-
messageBuilder.append("가상 친구 : ");
88+
messageBuilder.append("B : ");
9089
messageBuilder.append(messages.get(i).messageContent());
9190
}
9291
if(i != messages.size() -1 ) messageBuilder.append(", ");
@@ -98,12 +97,19 @@ private String makeRecentMessageString(List<GetMessageResponseDto> messages) {
9897
private String makePrompt(Long conversationId) {
9998
Conversation conversation = conversationRepository.findById(conversationId);
10099
VirtualFriend virtualFriend = conversation.getVirtualFriend();
101-
// 대화방 기록
102-
// 가상친구 특성
100+
101+
103102
String mbti = virtualFriend.getMbti();
104103
MbtiType mbtiType = MbtiType.valueOf(mbti);
105104
String result = MbtiTraits.getTrait(mbtiType);
106105

106+
StringBuilder temp = new StringBuilder();
107+
if(virtualFriend.getName() != null) temp.append(" 너의 이름은 " + virtualFriend.getName() +"이야. 명심해!");
108+
if(virtualFriend.getAge() != 0) temp.append(" 너의 나이는 " + virtualFriend.getAge() + "이야. ");
109+
if(virtualFriend.getGender() != null) temp.append(" 너의 성별은 " + virtualFriend.getGender() + "이야. ");
110+
if(virtualFriend.getRelationship() != null) temp.append("너와 나의 관계는 " + virtualFriend.getRelationship() + "이야");
111+
112+
result += temp.toString();
107113
return result;
108114

109115
}

repository/src/main/java/com/mbtips/message/repository/jpa/MessageJpaRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public interface MessageJpaRepository extends JpaRepository<MessageEntity, Long>
3030
"m.messageId, m.messageContent, m.sentAt, m.user.userId, m.virtualFriendEntity.virtualFriendId) " +
3131
"FROM MessageEntity m " +
3232
"WHERE m.conversationEntity.conversationId = :conversationId " +
33-
"ORDER BY m.sentAt DESC")
33+
"ORDER BY m.sentAt desc ")
3434
List<GetMessageResponseDto> findRecentMessagesByConversationId(Long conversationId, PageRequest of);
3535

3636

0 commit comments

Comments
 (0)