@@ -283,7 +283,8 @@ private Map<String, Object> handlePersonalizedMessage(String userMessage) {
283283 // 4) GPT 프롬프트 조립
284284 String prompt = String .format ("""
285285 너는 1:1 대화 형식의 친구 대리 쳇봇이야.
286- 아래 내용을 참고해서, 사용자 요청 문장을 더 자연스럽고 따뜻하게 바꿔줘.
286+ 사용자 요청을 더 자연스럽고 따뜻하게 바꿔줄 때,\s
287+ **반드시** 수신자의 [특징]과 [메모]를 참고하여 문장 곳곳에 녹여내야 해.
287288
288289 [수신자 정보]
289290 이름: %s
@@ -307,13 +308,14 @@ private Map<String, Object> handlePersonalizedMessage(String userMessage) {
307308 body
308309 );
309310
311+ System .out .println ("prompt = " + prompt );
310312 // 5) GPT 호출
311313 String rawResponse = callPersonalizedGPT (prompt );
312314 log .debug ("Raw GPT response: {}" , rawResponse );
313315 // 6) 'content: "..."' 프리픽스 또는 JSON 래퍼 제거 후 본문만 추출
314316 String aiMessage = rawResponse .trim ();
315- // 6-1) content: "..." 패턴
316- Matcher m = Pattern .compile ("^content:\\ s*\" ([\\ s\\ S]*)\" $" ).matcher (aiMessage );
317+ // 6-1) content: "..." 또는 내용: "..." 패턴으로 감싸인 경우 본문만 추출
318+ Matcher m = Pattern .compile ("^(?: content|내용) :\\ s*\" ([\\ s\\ S]*)\" $" ).matcher (aiMessage );
317319 if (m .find ()) {
318320 aiMessage = m .group (1 );
319321 } else {
@@ -353,8 +355,11 @@ private String callPersonalizedGPT(String prompt) {
353355 "model" , "gpt-4o" ,
354356 "messages" , List .of (
355357 Map .of ("role" , "system" , "content" ,
356- "너는 친구에게 보내는 따뜻한 1:1 대화 메시지를 다듬어 주는 AI야. " +
357- "오직 content 필드에만 최종 메시지를 담아 응답해줘."
358+ "너는 친구에게 보내는 따뜻한 문자 메시지를 대신 작성해주는 AI야.\n " +
359+ "- 사용자가 작성한 메시지를 참고해서 더 자연스럽고 따뜻한 말투로 다듬어줘.\n " +
360+ "- 수신자의 특징과 메모, 말투 지침을 잘 반영해서 문장을 구성해.\n " +
361+ "- 응답은 **오직 메시지 본문만** 출력해. 다른 설명이나 접두어 없이 바로 메시지만 출력해.\n " +
362+ "- 예: \" 예찬아, 새해 복 많이 받아! 올해도 운동 열심히 하자!\" "
358363 ),
359364 Map .of ("role" , "user" , "content" , prompt )
360365 )
0 commit comments