diff --git a/service/constants.py b/service/constants.py index 142b12e..4813d7e 100644 --- a/service/constants.py +++ b/service/constants.py @@ -3,30 +3,27 @@ SYSTEM_PROMPT = "너는 한국어 어르신 대화 코치이다. 반드시 순수 JSON 한 줄만 출력하세요." ICEBREAKING_TOPICS = { - "자기소개 & 일상": [ - "편하게 불리고 싶은 이름이나 별명", - "요즘 주로 머무는 동네나 장소", - "아침에 일어나 제일 먼저 하는 스마트폰 활동", + "자기소개": [ + "이름 나이", + "거주지 & 고향", + "하루 일과", ], - "디지털 사용 경험": [ - "스마트폰으로 자주 하는 일이나 앱", - "최근에 배우고 싶었던 기능 하나", - "한 번쯤 포기했던 스마트폰 기능", + "취미 & 관심사": [ + "책", + "음식", ], - "소통 & 가족 이야기": [ - "가족과 연락할 때 가장 자주 쓰는 방식", - "문자나 카톡을 쓰면서 어려웠던 기억", - "손주나 자녀와 영상통화한 기억", + "추억": [ + "학창 시절", + "직장 생활", ], - "세대 공감 & 비교": [ - "처음 휴대폰을 썼던 기억 (또는 멘토는 스마트폰을 처음 썼을 때)", - "요즘 세대에서 유행하는 디지털 문화 하나 소개", - "서로에게 추천해주고 싶은 앱이 있다면?", + "지역 이야기": [ + "동네 맛집 & 카페", ], - "감정 & 바람": [ - "기기가 잘 안 될 때 드는 감정", - "앞으로 스마트폰으로 꼭 해보고 싶은 일", - "청년 멘토가 도와주고 싶은 디지털 활동", + "건강": [ + "현재 건강 상태", + ], + "미래 계획": [ + "올해 하고 싶은 일", ], } diff --git a/service/icebreaking.py b/service/icebreaking.py index ea2c39b..9f6eae7 100644 --- a/service/icebreaking.py +++ b/service/icebreaking.py @@ -111,47 +111,37 @@ def get_gpt_api_response(user_prompt): def get_icebreaking_text_user_prompt(message_list): return f""" -당신은 노인(멘티)과 청년(멘토)이 처음 만나 소통을 시작한 채팅방의 대화 흐름을 지원하는 **아이스브레이킹 코치 (Icebreaking Coach)**입니다. +아래는 두 명의 어르신이 처음 만나 나누는 채팅방 대화 내용입니다. +당신은 해당 채팅방 안에서 이들의 어색함을 풀고 대화를 자연스럽게 이어가도록 돕는 한국어 어르신 대화 코치입니다. -역할 정의: -당신은 두 사람이 어색함 없이 자연스럽게 대화를 이어갈 수 있도록 **제3자의 입장에서 적절한 대화 주제를 추천**하는 조력자입니다. -특히, 노인 사용자가 자신의 **디지털 기기 사용 경험과 어려움을 자연스럽게 이야기할 수 있도록** 대화 흐름을 설계하는 것이 핵심입니다. +당신의 역할는 다음과 같습니다: +1. 말문이 막힌 어르신의 입장에서, 대화를 자연스럽게 이어갈 수 있도록 따뜻한 주제를 추천합니다. +2. 말투는 정중하면서도 편안하게 유지해 주세요. +3. 반드시 제 3자 입장에서 답변해야 합니다. (답변할 문장을 직접 말하지 않습니다.) -목적: -1. 두 사람의 심리적 거리를 줄이고, 신뢰 형성의 기반을 마련합니다. -2. 노인이 겪는 **디지털 사용의 불편, 습관, 배움에 대한 욕구**가 자연스럽게 드러나도록 유도합니다. -3. 청년 멘토가 노인의 상황을 더 잘 이해하고 돕는 구조로 대화가 연결되도록 합니다. +당신의 목적은 다음과 같습니다: +1. 처음 만난 두 어르신이 어색함을 풀고 자연스럽게 대화를 이어가게 돕는다. +2. 서로의 정보를 알 수 있도록, 적절한 질문을 던진다. +3. 추천 질문은 어르신 간의 정서적 연결을 강화하는 것이어야 한다. -대화 스타일 가이드라인: -- **말투**는 존중과 배려를 기반으로 하되, **너무 형식적이지 않은 편안한 어조**를 권장합니다. -- **세대 차이를 줄이는 공감형 주제**를 활용하여 공통 경험을 이끌어냅니다. -- **직접 대화에 개입하거나 문장을 생성하지 말고**, 추천 질문의 형태로만 제안하세요. +최근 메시지: +{message_list} -아이스브레이킹 추천 주제 목록: +아이스브레이킹 추천 주제 리스트: {ICEBREAKING_TOPICS} -작업 지시: -1. 아래의 채팅 메시지 내역을 분석하여, 두 사람의 대화 분위기, 말투, 상호 작용 정도를 파악하세요. -2. 아이스브레이킹 추천 주제 리스트를 참고하여 총 **3개의 적절한 주제 후보**를 상상해보세요. -3. 그 중 가장 **자연스럽고, 감정적 연결이 강하며, 디지털 사용 경험을 끌어낼 수 있는 1개 주제**를 선택하여 추천 형태로 출력하세요. - -출력 형식: -- 추천 질문은 한 문장 이내로 명확하게 표현해주세요. -- 출력 예시는 아래 형식을 따르세요. +다음 조건을 따르세요: +1. 최근 메세지를 바탕으로, 두 사람의 관계, 말투, 상황 맥락을 파악한다. +2. **아이스브레이킹 추천 주제 리스트**를 참고하여 총 3개의 주제를 생각한 뒤, **가장 자연스럽고 감정적 연결이 잘된 주제**를 선택하여 작성한다. -[출력 예시] -{{"reply": "스마트폰으로 주로 무슨 일을 하는지 서로 이야기 해보세요!"}} -{{"reply": "가장 헷갈리는 스마트폰 기능이 있으셨다면, 어떤 게 있는지 대화를 나누어 보세요!"}} +[좋은 예시] {{"reply":"첫 대화니, 이름부터 여쭤보는 것은 어떤가요?"}} """ def get_icebreaking_state_user_prompt(message_list, icebreaker_message_list): return f""" -당신은 노인(멘티)과 청년(멘토)이 처음 만나 소통을 시작한 채팅방의 대화 흐름을 지원하는 **아이스브레이킹 코치 (Icebreaking Coach)**입니다. - -역할 정의: -당신은 두 사람이 어색함 없이 자연스럽게 대화를 이어갈 수 있도록 **제3자의 입장에서 적절한 대화 주제를 추천**하는 조력자입니다. -특히, 노인 사용자가 자신의 **디지털 기기 사용 경험과 어려움을 자연스럽게 이야기할 수 있도록** 대화 흐름을 설계하는 것이 핵심입니다. +아래는 두 명의 어르신이 처음 만나 나누는 채팅방 대화 내용입니다. +당신은 해당 채팅방 안에서 이들의 어색함을 풀고 대화를 자연스럽게 이어가도록 돕는 한국어 어르신 대화 코치입니다. 최근 메세지: {message_list} @@ -165,7 +155,7 @@ def get_icebreaking_state_user_prompt(message_list, icebreaker_message_list): 3. 충분히 이야기를 나누었다면 **switch**, 아니라면 **continue**를 근거와 함께 반환합니다. 충분한 이야기를 나누었는지 판단하는 기준은 다음과 같습니다: -1. 두 사람 모두 이전에 제안한 주제에 대해 1가지 이상을 답변했다. +1. 두 어르신 모두 이전에 제안한 주제에 대해 1가지 이상을 답변했다. 2. 더 이상 질문이 오가지 않는다. 3. 반복되는 대답으로 정보가 고갈된 느낌이다. 4. 단답형 응답으로 대화가 마무리되었다.