ll7098ll commited on
Commit
5e6a8f1
·
verified ·
1 Parent(s): 03f5164

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +85 -64
app.py CHANGED
@@ -13,7 +13,7 @@ generation_config = {
13
  "temperature": 0.75,
14
  "top_p": 0.8,
15
  "top_k": 40,
16
- "max_output_tokens": 8000,
17
  }
18
 
19
  model = genai.GenerativeModel(
@@ -21,28 +21,28 @@ model = genai.GenerativeModel(
21
  generation_config=generation_config,
22
  )
23
 
24
- # MBTI 유형 정보
25
  mbti_types = {
26
- "ISTJ": "청렴백한 논리주의자",
27
- "ISFJ": "용감수호자",
28
- "INFJ": "선의의 옹호자",
29
- "INTJ": "주도한략가",
30
- "ISTP": "재주꾼",
31
- "ISFP": "호기 예술가",
32
- "INFP": "열정적인 중재자",
33
- "INTP": "논리적인 사색가",
34
- "ESTP": "모험즐기사업가",
35
- "ESFP": "자 영혼의 연예인",
36
- "ENFP": "재기발랄활동가",
37
- "ENTP": "박학식한 발명가",
38
- "ESTJ": "엄격한 ",
39
- "ESFJ": "사교적인 외교관",
40
- "ENFJ": "정의로운 ",
41
- "ENTJ": "대담한 통솔자"
42
  }
43
 
44
- # 관계 유형
45
- relationship_types = {
46
  "연인": "Romantic Couple",
47
  "부부": "Married Couple",
48
  "친구": "Friends",
@@ -51,33 +51,52 @@ relationship_types = {
51
  "기타": "Others"
52
  }
53
 
 
 
 
 
 
 
 
 
54
 
55
- def generate_relationship_scenario(my_name, my_gender, my_mbti, partner_name, partner_gender, partner_mbti, relationship, situation):
56
- my_type_info = f"{my_name} ({my_gender}): {my_mbti} ({mbti_types.get(my_mbti, '알 수 없는 유형')})"
57
- partner_type_info = f"{partner_name} ({partner_gender}): {partner_mbti} ({mbti_types.get(partner_mbti, '알 수 없는 유형')})"
 
 
 
 
 
58
 
59
- system_prompt = f"""
60
- 당신은 MBTI 전문가이자 관계 코치입니다. 아래 정보를 바탕으로 관계 시나리오를 작성해주세요.
 
 
 
61
 
 
 
 
 
62
  [대상자 정보]
63
- - {my_type_info}
64
- - {partner_type_info}
65
  [관계]
66
  - {relationship}
67
  [상황]
68
  - {situation}
69
-
70
  [요청 사항]
71
- 1. **각 대상자의 MBTI 유형에 대한 상세 설명:**
72
- - 핵심 가치, 성격적 특징, 강점과 약점, 주의할 점 등을 포함하여 자세히 설명해주세요.
73
- 2. **관계 유형 상황을 구체적인 시나리오 작성:**
74
- - 주어진 관계 유형 상황에 맞는 현실적인 상호작용을 묘사해주세요.
75
- - 인물의 MBTI 유형이 어떻게 반영되는지 명확하게 보여주세요.
76
- - 시나리오모든 입력 보(이름, 성별, 유형, 관계, 상황)가 포함되 합니다.
77
- 3. **서로하고 관계개선하기 위한 조언:**
78
- - 대상자가 상대방의 MBTI 유형을 이해하고, 더 나은 관계를 형성하기 위한 구체적인 조언을 제시해주세요.
79
- - 조언에 {my_name}과 {partner_name}의 이, 성별, MBTI 모두 반영되어야 합니다.
80
- - 마지막상대방에게 해주면 좋은 말과 행동구체적인 예와 상대방에게 좋은지에 대한 이유도 설명해주세요.
 
81
  """
82
 
83
  full_text = ""
@@ -94,39 +113,41 @@ def generate_relationship_scenario(my_name, my_gender, my_mbti, partner_name, pa
94
 
95
  return full_text
96
 
97
-
98
  # Streamlit UI
99
  st.set_page_config(page_title="MBTI 관계 시뮬레이터", page_icon="🤝")
100
-
101
  st.title("🤝 MBTI 관계 시뮬레이터")
102
- st.write("두 사람의 MBTI 유형 관계, 상황을 입력하여 관계 시나리오를 생성해보세요.")
103
 
104
- # 사이드바에 탭 배치
105
  with st.sidebar:
106
- tabs = st.tabs(["👤 정보", "👥대방"])
107
-
108
- with tabs[0]: # 정보 탭
109
- my_name = st.text_input("내 이름/닉네임", "나")
110
- my_gender = st.radio(" 성별", ["남성", "여성"])
111
- my_mbti = st.selectbox("내 MBTI 유형", list(mbti_types.keys()))
112
-
113
- with tabs[1]: # 상대방 정보
114
- partner_name = st.text_input("상대방 이름/닉네임", "상대방")
115
- partner_gender = st.radio("상대방 성별", ["남성", "여성"])
116
- partner_mbti = st.selectbox("상대방 MBTI 유형", list(mbti_types.keys()))
117
-
118
- relationship = st.selectbox("관계 유형", list(relationship_types.keys()))
119
- situation = st.text_area("상황 (예: 갈등 상황, 특별한 이벤트 등)", height=150)
120
-
 
 
 
 
 
 
 
 
121
  generate_button = st.button("시나리오 생성 ➡️")
122
-
123
-
124
- # 메인 영역 - 출력
125
  scenario_output_area = st.empty()
126
 
127
  if generate_button:
128
- full_text = generate_relationship_scenario(
129
- my_name, my_gender, my_mbti, partner_name, partner_gender, partner_mbti, relationship, situation
130
- )
131
  if full_text:
132
- scenario_output_area.markdown(markdown.markdown(full_text), unsafe_allow_html=True)
 
 
13
  "temperature": 0.75,
14
  "top_p": 0.8,
15
  "top_k": 40,
16
+ "max_output_tokens": 8192,
17
  }
18
 
19
  model = genai.GenerativeModel(
 
21
  generation_config=generation_config,
22
  )
23
 
24
+ # MBTI 유형 정보 (상세 설명 고도화)
25
  mbti_types = {
26
+ "INTJ": "전략가 (Architect) - 독창적이고 단력 있는 성격으로, 지식과 논리에 근거한 장기적인 계획을 세우는 것을 좋아합니다. 비판적 사고와 독립적인 사고를 중시하며 효율성을 추구합니다.",
27
+ "INTP": "논리주의자 (Logician) - 혁신적인 문제 해결을 즐기며, 이론적이고 분석적인 성격입니다. 지식 탐구와 분석을 즐기며 복잡아이디어를 다루는 데 능합니다.",
28
+ "ENTJ": "지휘관 (Commander) - 목표를 향해 밀어붙이는 리더로서, 조직적이고 전략적인 사고를 합니다. 다른 사람을 이끌고 계획을 실행에 옮기는 것을 즐기며, 높은 목표를 추구합니다.",
29
+ "ENTP": "변론가 (Debater) - 토론과 논쟁을 통해 새로운 아이디어를 찾는 것을 좋아합니다. 호기심이 많고 창적이며, 혁신적인 해결책을 찾기 위해 도하는 것을 즐깁니다.",
30
+ "INFJ": "옹호자 (Advocate) - 도덕적인 신념과 직관력으로 다른 사람들을 돕고자 합니다. 공감 력이 뛰어나고 깊이 있는 관계를 중시하며, 큰 비전을 가지고 세상을 더 나은 곳으로 만드는 것을 추구합니다.",
31
+ "INFP": "중재자 (Mediator) - 따뜻하고 이상적인 성격으, 사람들의 내면을 이해하고 돕고자 합니다. 예술적이고 창의적이며, 자신의 치를 소중히 여기며 사람들의 감정을 존중합니다.",
32
+ "ENFJ": "주도자 (Protagonist) - 다른 사람을 이끄는 리더로서, 사람들의 성장을 돕고 그들과 함께 목표를 이루고자 합니다. 사회이며 배려심이 많고, 타 필요에 민감합니다.",
33
+ "ENFP": "활동가 (Campaigner) - 열정이고 창의적이며, 새로운 가능성을 탐색하는 것을 즐깁니다. 간관계를 중시하고, 주변 람들에게 긍정적인 영향을 주고 싶어합니다.",
34
+ "ISTJ": "현실주의자 (Logistician) - 책임감 있고 실용적인 성격으로, 계획세우고 신뢰할 수 있결과를 추구합니다. 전통적인 치를 중시하며 신뢰성과 성실성을 중요하게 생각합니다.",
35
+ "ISFJ": "수호 (Defender) - 따뜻하고 섬세한 성격으, 타인을 돕는 데 집중합니다. 실질적 도움을 제공하고자 하며, 타인의 필요를 돌보는 데 헌신적입니다.",
36
+ "ESTJ": "경영자 (Executive) - 조직적이고 현실적인 접근을 선호하며, 질서와 효율을 중요시합니다. 강리더십을 발휘하여 목표를 달성하고, 전통과 규칙을 준수합니다.",
37
+ "ESFJ": "관리자 (Consul) - 사회적이고 배려심이 많은 성격으로, 주변 사람들을 돕고 공동체의 조화를 유지하고자 합니. 타인의 감정에 민감하며 협력과 지원을 중요하게 생각합니다.",
38
+ "ISTP": "장인 (Virtuoso) - 도전적인 문제를 해결하고, 도구와 기술을 다루는 데 능숙합니다. 논적이고 실용적인 사고를 하며, 손으로 무언가를 만드는 것을 즐깁니다.",
39
+ "ISFP": "모험가 (Adventurer) - 감각이고 예술적성향을 가진 성격으로, 새로운 경험을 즐깁니다. 자신의 감정에 충실하며, 순간의 아름다움을 찾고자 합니다.",
40
+ "ESTP": "기업가 (Entrepreneur) - 적극적이고 현실적인 성격으, 새로를 찾아 모험하는 것을 좋아합니다. 즉흥적이고 행 중심적이며, 도전에 맞서기를 두려워하지 않습니다.",
41
+ "ESFP": "연예인 (Entertainer) - 사람들과의 상호작용을 즐기며, 주변에 즐거움을 주고 싶어하는 성격입니다. 개방적이고 감각적인 성향을 가지며, 현재를 즐기고 합니다."
42
  }
43
 
44
+ # 관계 유형 (2인 관계와 다인 관계 분리)
45
+ relationship_types_two = {
46
  "연인": "Romantic Couple",
47
  "부부": "Married Couple",
48
  "친구": "Friends",
 
51
  "기타": "Others"
52
  }
53
 
54
+ relationship_types_multiple = {
55
+ "친구": "Friends",
56
+ "가족": "Family",
57
+ "직장 동료": "Coworkers",
58
+ "프로젝트 팀": "Project Team",
59
+ "스터디 그룹": "Study Group",
60
+ "기타": "Others"
61
+ }
62
 
63
+ # 추가된 기능: 대화형 입력 결과 다운로드
64
+ def download_results(full_text):
65
+ st.download_button(
66
+ label="시나리오 다운로드",
67
+ data=full_text,
68
+ file_name="relationship_scenario.txt",
69
+ mime="text/plain"
70
+ )
71
 
72
+ def generate_relationship_scenario(people, relationship, situation):
73
+
74
+ def create_type_info(person):
75
+ type_info = f"{person['name']} ({person['gender']}): {person['type']} ({mbti_types.get(person['type'], '알 수 없는 유형')})"
76
+ return type_info
77
 
78
+ people_info = "\n".join([f"- {create_type_info(person)}" for person in people])
79
+
80
+ system_prompt = f"""
81
+ 당신은 MBTI 전문가이자 관계 코치입니다. 아래 제공된 정보를 바탕으로 관계 시나리오를 작성해주세요. 각 유형의 이름은 해당 유형의 대표적인 성격을 나타내므로, 이름에 지나치게 얽매이지 않고 전체적인 맥락을 반영하여 시나리오를 작성해 주세요.
82
  [대상자 정보]
83
+ {people_info}
 
84
  [관계]
85
  - {relationship}
86
  [상황]
87
  - {situation}
 
88
  [요청 사항]
89
+ 1. **각 대상자의 MBTI 유형에 대한 심층 설명:**
90
+ - 각 대상자의 핵심 가치, 성격적 특징, 행동 패턴, 강점과 약점, 그리고 주의할 점 등을 자세히 설명해주세요.
91
+ - MBTI 유형 따른 동기와 두움, 주요 행동 경향 등을 심도 있게 서술해주세요.
92
+ 2. **MBTI 유형 바탕으로 구체적인 시나리오 작성:**
93
+ - 상황에 맞는 시나리오를 단계별로 작성하고, 단계를 구체적인 대화 장면으로 묘사해주세요.
94
+ - 각 단계 등장인물들의 변화와 반응을 상세히 묘사하고, 인물의 말과 행동이 MBTI 특성과 떻게 연결되는지 부가 설명해주세요.
95
+ - 등장인물 간의 상호작용과 그들 각자의 유형에서 어떻게 행동하고 반응하는지상세히 설명해주세요.
96
+ 3. **서로 이해하기 위한 실질적인 조언:**
97
+ - 대상자가 서로MBTI 유형을 해하고, 나은 관계를 성하기 위한 구체적인 조언을 제시해주세요.
98
+ - 조언모든 등장인물이름, 성별, MBTI 유형이 모두 반영되어야 합니다.
99
+ - 각 대상자가 다른 대상자에게 해주면 좋은 말과 행동의 구체적인 예와 그 이유도 상세히 설명해주세요.
100
  """
101
 
102
  full_text = ""
 
113
 
114
  return full_text
115
 
 
116
  # Streamlit UI
117
  st.set_page_config(page_title="MBTI 관계 시뮬레이터", page_icon="🤝")
 
118
  st.title("🤝 MBTI 관계 시뮬레이터")
119
+ st.write("참여자들의 MBTI 유형, 관계, 상황을 입력하여 관계 시나리오를 생성해보세요.")
120
 
121
+ # 사이드바에 탭 생성
122
  with st.sidebar:
123
+ tabs = st.tabs(["참여자 정보", "관계 정"])
124
+
125
+ # 참여자 정보 탭
126
+ with tabs[0]:
127
+ num_people = st.number_input("참여자 ", min_value=2, value=2)
128
+ people = []
129
+ for i in range(num_people):
130
+ with st.expander(f"참여자 {i+1} 정보"):
131
+ person = {}
132
+ person['name'] = st.text_input(f"이름/닉네임", key=f"name_{i}")
133
+ person['gender'] = st.radio("성별", ["남성", "여성"], key=f"gender_{i}")
134
+ person['type'] = st.selectbox("MBTI 유형", list(mbti_types.keys()), key=f"type_{i}")
135
+ people.append(person)
136
+
137
+ # 관계 및 상황 설정 탭
138
+ with tabs[1]:
139
+ if num_people == 2:
140
+ relationship = st.selectbox("관계 유형", list(relationship_types_two.keys()))
141
+ else:
142
+ relationship = st.selectbox("관계 유형", list(relationship_types_multiple.keys()))
143
+ situation = st.text_area("상황 (예: 갈등 상황, 특별한 이벤트 등)", height=150)
144
+
145
+ # 메인 영역 - 출력 및 버튼
146
  generate_button = st.button("시나리오 생성 ➡️")
 
 
 
147
  scenario_output_area = st.empty()
148
 
149
  if generate_button:
150
+ full_text = generate_relationship_scenario(people, relationship, situation)
 
 
151
  if full_text:
152
+ scenario_output_area.markdown(markdown.markdown(full_text), unsafe_allow_html=True)
153
+ download_results(full_text)