ll7098ll commited on
Commit
0a67eb6
·
verified ·
1 Parent(s): b9ff1db

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +69 -38
app.py CHANGED
@@ -21,31 +21,63 @@ model = genai.GenerativeModel(
21
  generation_config=generation_config,
22
  )
23
 
24
- def generate_date_scenario(my_name, my_gender, my_mbti, partner_name, partner_gender, partner_mbti, situation):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
  system_prompt = f"""
27
- 당신은 MBTI 전문가이자 관계 코치입니다. 아래 요청에 따라 데이트 시나리오를 작성해주세요.
28
- ---
29
  [대상자 정보]
30
- - {my_name} ({my_gender}): {my_mbti}
31
- - {partner_name} ({partner_gender}): {partner_mbti}
 
 
32
  [상황]
33
  - {situation}
34
- ---
35
  [요청 사항]
36
- 1. **{my_name} ({my_gender})의 MBTI 유형({my_mbti})에 대한 상세 설명:**
37
- - 핵심 가치, 성격적 특징, 강점과 약점, 주의할 점 등을 포함하여 자세히 설명해주세요.
38
- 2. **{partner_name} ({partner_gender})의 MBTI 유형({partner_mbti})에 대한 상세 설명:**
39
  - 핵심 가치, 성격적 특징, 강점과 약점, 주의할 점 등을 포함하여 자세히 설명해주세요.
40
- 3. **MBTI 유형을 바탕으로 한 구체적인 데이트 시나리오 작성:**
41
- - 만남, 대화 시작, 식사, 영화 람, 갈등 발생 해결 등 데이트의 각 단계를 구체적인 대화 장면으로 묘사해주세요.
42
- - 각 단계에서 {my_name}과 {partner_name}의 감정 변화와 반응을 상세히 묘사하고, 각 인물의 말과 행동MBTI 특성과 어떻게 연결되는지 부가 설주세요.
43
- - 시나리오에 {my_name}과 {partner_name}의 이름, 성별, MBTI 유형 모두 반영되어야 합니다.
44
- 4. **상대방을 서로 이해하기 위한 실질적인 조언:**
45
  - 각 대상자가 상대방의 MBTI 유형을 이해하고, 더 나은 관계를 형성하기 위한 구체적인 상황과 행동을 예시로 제시해주세요.
46
  - 조언에 {my_name}과 {partner_name}의 이름, 성별, MBTI 유형이 모두 반영되어야 합니다.
47
  - 그리고 조언의 내용에 상대방에게 하면 좋은 말과 행동의 구체적 예시를 포함해야 합니다.
48
- ---
49
  """
50
 
51
  full_text = ""
@@ -62,36 +94,35 @@ def generate_date_scenario(my_name, my_gender, my_mbti, partner_name, partner_ge
62
 
63
  return full_text
64
 
65
- # Streamlit 인터페이스
66
- st.set_page_config(page_title="MBTI 데이트 시뮬레이터", page_icon="❤️")
67
 
68
- colored_header(
69
- label="💖 MBTI 데이트 시뮬레이터 💖",
70
- description="나와 상대방의 MBTI 유형을 기반으로 데이트 시나리오를 미리 체험해보세요!",
71
- color_name="red-70"
72
- )
 
 
73
 
74
- # 사이드바 입력 폼
75
- with st.sidebar:
76
- st.subheader("내 정보")
77
- my_name = st.text_input("내 이름(닉네임)", "나")
78
- my_gender = st.selectbox("내 성별", ["남성", "여성"])
79
- my_mbti = st.selectbox("내 MBTI 유형", ["ISTJ", "ISFJ", "INFJ", "INTJ", "ISTP", "ISFP", "INFP", "INTP", "ESTP", "ESFP", "ENFP", "ENTP", "ESTJ", "ESFJ", "ENFJ", "ENTJ"])
80
 
81
- st.subheader("상대방 정보")
82
- partner_name = st.text_input("상대방 이름(닉네임)", "상대방")
83
- partner_gender = st.selectbox("상대방 성별", ["남성", "여성"])
84
- partner_mbti = st.selectbox("상대방 MBTI 유형", ["ISTJ", "ISFJ", "INFJ", "INTJ", "ISTP", "ISFP", "INFP", "INTP", "ESTP", "ESFP", "ENFP", "ENTP", "ESTJ", "ESFJ", "ENFJ", "ENTJ"])
85
 
86
- st.subheader("데이트 상황")
87
- situation = st.text_area("예: 만남, 영화 관람 후 저녁 식사", height=150)
88
 
89
- generate_scenario_button = st.button("💕 시나리오 생성! 💕")
90
 
91
- # 메인 영역 출력
92
  scenario_output_area = st.empty()
93
 
94
- if generate_scenario_button:
95
- full_text = generate_date_scenario(my_name, my_gender, my_mbti, partner_name, partner_gender, partner_mbti, situation)
 
 
96
  if full_text:
97
  scenario_output_area.markdown(markdown.markdown(full_text), unsafe_allow_html=True)
 
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",
49
+ "가족": "Family",
50
+ "직장 동료": "Coworkers",
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
 
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
+ tab1, tab2 = st.tabs(["👤 내 정보", "👥 상대방 정보"])
105
 
106
+ with tab1:
107
+ my_name = st.text_input("내 이름/닉네임", "나")
108
+ my_gender = st.radio("내 성별", ["남성", "여성"])
109
+ my_mbti = st.selectbox("내 MBTI 유형", list(mbti_types.keys()))
 
 
110
 
111
+ with tab2:
112
+ partner_name = st.text_input("상대방 이름/닉네임", "상대방")
113
+ partner_gender = st.radio("상대방 성별", ["남성", "여성"])
114
+ partner_mbti = st.selectbox("상대방 MBTI 유형", list(mbti_types.keys()))
115
 
116
+ relationship = st.selectbox("관계 유형", list(relationship_types.keys()))
117
+ situation = st.text_area("상황 (예: 갈등 상황, 특별한 이벤트 등)", height=150)
118
 
119
+ generate_button = st.button("시나리오 생성 ➡️")
120
 
 
121
  scenario_output_area = st.empty()
122
 
123
+ if generate_button:
124
+ full_text = generate_relationship_scenario(
125
+ my_name, my_gender, my_mbti, partner_name, partner_gender, partner_mbti, relationship, situation
126
+ )
127
  if full_text:
128
  scenario_output_area.markdown(markdown.markdown(full_text), unsafe_allow_html=True)