11package UMC .career_mate .domain .chatgpt .service ;
22
33import UMC .career_mate .domain .chatgpt .dto .api .response .ChatCompletionResponse ;
4+ import UMC .career_mate .domain .job .Job ;
45import UMC .career_mate .domain .recruit .dto .MemberTemplateAnswerDTO ;
56import UMC .career_mate .domain .chatgpt .dto .api .request .GptRequest ;
67import UMC .career_mate .domain .chatgpt .dto .api .request .GptRequest .Message ;
1011import java .net .URI ;
1112import java .util .Collections ;
1213import java .util .List ;
14+ import java .util .Map ;
1315import lombok .RequiredArgsConstructor ;
1416import lombok .extern .slf4j .Slf4j ;
1517import org .springframework .beans .factory .annotation .Value ;
@@ -34,10 +36,16 @@ public class ChatGptService {
3436 "이 사람의 경력을 계산해서 앞뒤 설명 하지말고 정수로만 올바른 답변 예시와 같은 형식으로 답변해줘. " +
3537 "올바론 답변 예시) 5, 잘못된 답변 예시 1) 5년, 잘못된 답변 예시 2) 5 years, 잘못된 답변 예시 3) 이 사람의 경력은 5년" ;
3638
37- private static final String GPT_REQUEST_FORMAT_POSTFIX_FOR_RECRUIT_KEYWORD =
39+ private static final String GPT_REQUEST_FORMAT_POSTFIX_FOR_RECRUIT_KEYWORD_BACKEND =
3840 "이 사람의 직무를 내가 제시한 보기들 중에서 하나만 골라서 답변해줘.\n " +
39- "직무 보기 :'BACKEND', 'BACKEND_SPRING', 'BACKEND_NODE', 'BACKEND_DJANGO', 'FRONTEND', 'DESIGNER', 'PM', " +
40- "이 중에서 적절한 직무가 없다면 'MISMATCH'로 답변해줘.\n " +
41+ "직무 보기 :'BACKEND_SPRING', 'BACKEND_NODE', 'BACKEND_DJANGO'. " +
42+ "이 중에서 적절한 직무를 고르기 애매하면 'BACKEND'로 답변해줘.\n " +
43+ "앞뒤 설명하지 말고 직무만 답변해줘." ;
44+
45+ private static final String GPT_REQUEST_FORMAT_POSTFIX_FOR_RECRUIT_KEYWORD_FRONTEND =
46+ "이 사람의 직무를 내가 제시한 보기들 중에서 하나만 골라서 답변해줘.\n " +
47+ "직무 보기 : 'FRONTEND_REACT', 'FRONTEND_IOS', 'FRONTEND_ANDROID'. " +
48+ "이 중에서 적절한 직무를 고르기 애매하면 'FRONTEND'로 답변해줘.\n " +
4149 "앞뒤 설명하지 말고 직무만 답변해줘." ;
4250
4351 private static final String GPT_REQUEST_FORMAT_FOR_COMMENT =
@@ -46,6 +54,11 @@ public class ChatGptService {
4654 "답변은 문구만 답변해줘. 문구를 생성할 때 내용에는 회사 이름은 제외해줘. " +
4755 "답변에서 '-'는 빼줘." ;
4856
57+ private static final Map <String , String > formatMap = Map .ofEntries (
58+ Map .entry ("백엔드 개발자" , GPT_REQUEST_FORMAT_POSTFIX_FOR_RECRUIT_KEYWORD_BACKEND ),
59+ Map .entry ("프론트엔드 개발자" , GPT_REQUEST_FORMAT_POSTFIX_FOR_RECRUIT_KEYWORD_FRONTEND )
60+ );
61+
4962 private static final String GPT_SYSTEM_ROLE = "너는 취업 전문가로서 내가 보낸 경험 데이터를 기반으로 '~~한 경험이 있는 000님, ~~한 경험을 어필해보면 어때요?' 라는 느낌으로 사용자 맞춤형 추천 문구를 작성한다. " +
5063 "문구의 말투는 '-니다'체를 사용하는 것이 아니라, '-요'체를 사용한다." ;
5164
@@ -61,9 +74,9 @@ public int getCareerYear(String chatGptRequestContent) {
6174 return Integer .parseInt (gptAnswer );
6275 }
6376
64- public RecruitKeyword getRecruitKeyword (String chatGptRequestContent ) {
77+ public RecruitKeyword getRecruitKeyword (String chatGptRequestContent , Job job ) {
6578 GptRequest gptRequest = createGptRequest (
66- chatGptRequestContent + GPT_REQUEST_FORMAT_POSTFIX_FOR_RECRUIT_KEYWORD );
79+ chatGptRequestContent + formatMap . get ( job . getName ()) );
6780
6881 ObjectMapper om = new ObjectMapper ();
6982 String gptAnswer = getGptAnswer (om , gptRequest );
0 commit comments