Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 17 additions & 20 deletions service/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,27 @@
SYSTEM_PROMPT = "너는 한국어 어르신 대화 코치이다. 반드시 순수 JSON 한 줄만 출력하세요."

ICEBREAKING_TOPICS = {
"자기소개 & 일상": [
"편하게 불리고 싶은 이름이나 별명",
"요즘 주로 머무는 동네나 장소",
"아침에 일어나 제일 먼저 하는 스마트폰 활동",
"자기소개": [
"이름 나이",
"거주지 & 고향",
"하루 일과",
],
"디지털 사용 경험": [
"스마트폰으로 자주 하는 일이나 앱",
"최근에 배우고 싶었던 기능 하나",
"한 번쯤 포기했던 스마트폰 기능",
"취미 & 관심사": [
"책",
"음식",
],
"소통 & 가족 이야기": [
"가족과 연락할 때 가장 자주 쓰는 방식",
"문자나 카톡을 쓰면서 어려웠던 기억",
"손주나 자녀와 영상통화한 기억",
"추억": [
"학창 시절",
"직장 생활",
],
"세대 공감 & 비교": [
"처음 휴대폰을 썼던 기억 (또는 멘토는 스마트폰을 처음 썼을 때)",
"요즘 세대에서 유행하는 디지털 문화 하나 소개",
"서로에게 추천해주고 싶은 앱이 있다면?",
"지역 이야기": [
"동네 맛집 & 카페",
],
"감정 & 바람": [
"기기가 잘 안 될 때 드는 감정",
"앞으로 스마트폰으로 꼭 해보고 싶은 일",
"청년 멘토가 도와주고 싶은 디지털 활동",
"건강": [
"현재 건강 상태",
],
"미래 계획": [
"올해 하고 싶은 일",
],
}

Expand Down
50 changes: 20 additions & 30 deletions service/icebreaking.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand All @@ -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. 단답형 응답으로 대화가 마무리되었다.
Expand Down