ll7098ll commited on
Commit
0361aaf
·
verified ·
1 Parent(s): 2ab06d6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -53
app.py CHANGED
@@ -56,59 +56,35 @@ instinct_variants = {
56
  }
57
 
58
  def generate_date_scenario(my_name, my_gender, my_type, my_wing, my_instinct, partner_name, partner_gender, partner_type, partner_wing, partner_instinct, situation):
59
- my_type_full = my_type
60
- if my_wing:
61
- my_type_full += my_wing
62
- if my_instinct:
63
- my_type_full += f" ({instinct_variants.get(my_instinct, '')})"
64
-
65
- partner_type_full = partner_type
66
- if partner_wing:
67
- partner_type_full += partner_wing
68
- if partner_instinct:
69
- partner_type_full += f" ({instinct_variants.get(partner_instinct, '')})"
 
 
 
70
 
71
  system_prompt = f"""
72
  당신은 에니어그램 전문가이자 관계 코치입니다. 아래 요청에 따라 데이트 시나리오를 작성해주세요.
73
- ---
74
  [대상자 정보]
75
- - {my_name} ({my_gender}): {my_type}"""
76
-
77
- if my_wing:
78
- system_prompt += f" {my_wing}"
79
- if my_instinct:
80
- system_prompt += f" ({instinct_variants.get(my_instinct, '')})"
81
-
82
- system_prompt += f" ({enneagram_types.get(my_type, '알 수 없는 유형')})"
83
-
84
- system_prompt += f"""
85
- - {partner_name} ({partner_gender}): {partner_type}"""
86
-
87
- if partner_wing:
88
- system_prompt += f" {partner_wing}"
89
- if partner_instinct:
90
- system_prompt += f" ({instinct_variants.get(partner_instinct, '')})"
91
-
92
- system_prompt += f" ({enneagram_types.get(partner_type, '알 수 없는 유형')})"
93
-
94
- system_prompt += f"""
95
  [상황]
96
  - {situation}
97
- ---
98
  [요청 사항]
99
- 1. **{my_name} ({my_gender})의 에니어그램 유형에 대한 상세 설명:**"""
100
-
101
- if my_wing or my_instinct:
102
- system_prompt += f" (날개: {my_wing if my_wing else '없음'}, 본능: {instinct_variants.get(my_instinct, '없음')})"
103
-
104
- system_prompt += """
105
  - 핵심 가치, 성격적 특징, 강점과 약점, 주의할 점 등을 포함하여 자세히 설명해주세요.
106
- 2. **{partner_name} ({partner_gender})의 에니어그램 유형에 대한 상세 설명:**"""
107
-
108
- if partner_wing or partner_instinct:
109
- system_prompt += f" (날개: {partner_wing if partner_wing else '없음'}, 본능: {instinct_variants.get(partner_instinct, '없음')})"
110
-
111
- system_prompt += """
112
  - 핵심 가치, 성격적 특징, 강점과 약점, 주의할 점 등을 포함하여 자세히 설명해주세요.
113
  3. **에니어그램 유형을 바탕으로 한 구체적인 데이트 시나리오 작성:**
114
  - 만남, 대화 시작, 식사, 영화 관람, 갈등 발생 및 해결 등 데이트의 각 단계를 구체적인 대화 장면으로 묘사해주세요.
@@ -117,7 +93,6 @@ def generate_date_scenario(my_name, my_gender, my_type, my_wing, my_instinct, pa
117
  4. **상대방을 서로 이해하기 위한 실질적인 조언:**
118
  - 각 대상자가 상대방의 에니어그램 유형을 이해하고, 더 나은 관계를 형성하기 위한 구체적인 상황과 행동을 예시로 제시해주세요.
119
  - 조언에 {my_name}과 {partner_name}의 이름, 성별, 에니어그램 유형이 모두 반영되어야 합니다.
120
- ---
121
  """
122
 
123
  full_text = ""
@@ -127,37 +102,40 @@ def generate_date_scenario(my_name, my_gender, my_type, my_wing, my_instinct, pa
127
  full_text += chunk.text
128
  html_text = markdown.markdown(full_text)
129
  scenario_output_area.markdown(html_text, unsafe_allow_html=True)
130
- time.sleep(0.05)
131
  except Exception as e:
132
  st.error(f"Error: {str(e)}")
133
  return ""
134
 
135
  return full_text
136
 
 
137
  # Streamlit 인터페이스
138
  st.set_page_config(page_title="에니어그램 데이트 시뮬레이터", page_icon="❤️")
139
 
140
  colored_header(
141
  label="💖 에니어그램 데이트 시뮬레이터 💖",
142
  description="나와 상대방의 에니어그램 유형을 기반으로 데이트 시나리오를 미리 체험해보세요!",
143
- color_name="red-70"
144
  )
145
 
 
146
  # 사이드바 입력 폼
147
  with st.sidebar:
148
  st.subheader("내 정보")
149
  my_name = st.text_input("내 이름(닉네임)", "나")
150
  my_gender = st.selectbox("내 성별", ["남성", "여성"])
151
  my_type = st.selectbox("내 에니어그램 유형", list(enneagram_types.keys()))
152
- my_wing = st.selectbox("내 날개 유형 (선택)", [""] + list(wing_types.keys()))
153
- my_instinct = st.selectbox("내 본능 유형 (선택)", [""] + list(instinct_variants.keys()))
154
 
155
  st.subheader("상대방 정보")
156
  partner_name = st.text_input("상대방 이름(닉네임)", "상대방")
157
  partner_gender = st.selectbox("상대방 성별", ["남성", "여성"])
158
  partner_type = st.selectbox("상대방 에니어그램 유형", list(enneagram_types.keys()))
159
- partner_wing = st.selectbox("상대방 날개 유형 (선택)", [""] + list(wing_types.keys()))
160
- partner_instinct = st.selectbox("상대방 본능 유형 (선택)", [""] + list(instinct_variants.keys()))
 
161
 
162
  st.subheader("데이트 상황")
163
  situation = st.text_area("예: 첫 만남, 영화 관람 후 저녁 식사", height=150)
@@ -168,7 +146,7 @@ with st.sidebar:
168
  scenario_output_area = st.empty()
169
 
170
  if generate_scenario_button:
171
- # 날개본능 유형 선택되지 않은 경우
172
  my_wing = my_wing if my_wing != "" else None
173
  my_instinct = my_instinct if my_instinct != "" else None
174
  partner_wing = partner_wing if partner_wing != "" else None
 
56
  }
57
 
58
  def generate_date_scenario(my_name, my_gender, my_type, my_wing, my_instinct, partner_name, partner_gender, partner_type, partner_wing, partner_instinct, situation):
59
+
60
+ # 에니어그램 유형 정보 문자열 생성 (날개/본능 포함)
61
+ def create_type_info(name, gender, type, wing, instinct):
62
+ type_info = f"{name} ({gender}): {type} ({enneagram_types.get(type, '알 수 없는 유형')})"
63
+ if wing:
64
+ type_info += f" 날개: {wing_types.get(wing)}"
65
+ if instinct:
66
+ type_info += f", 본능: {instinct_variants.get(instinct)}"
67
+ return type_info
68
+
69
+ my_type_info = create_type_info(my_name, my_gender, my_type, my_wing, my_instinct)
70
+ partner_type_info = create_type_info(partner_name, partner_gender, partner_type, partner_wing, partner_instinct)
71
+
72
+
73
 
74
  system_prompt = f"""
75
  당신은 에니어그램 전문가이자 관계 코치입니다. 아래 요청에 따라 데이트 시나리오를 작성해주세요.
76
+
77
  [대상자 정보]
78
+ - {my_type_info}
79
+ - {partner_type_info}
80
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
81
  [상황]
82
  - {situation}
83
+
84
  [요청 사항]
85
+ 1. **{my_name} ({my_gender})의 에니어그램 유형에 대한 상세 설명:**
 
 
 
 
 
86
  - 핵심 가치, 성격적 특징, 강점과 약점, 주의할 점 등을 포함하여 자세히 설명해주세요.
87
+ 2. **{partner_name} ({partner_gender})의 에니어그램 유형에 대한 상세 설명:**
 
 
 
 
 
88
  - 핵심 가치, 성격적 특징, 강점과 약점, 주의할 점 등을 포함하여 자세히 설명해주세요.
89
  3. **에니어그램 유형을 바탕으로 한 구체적인 데이트 시나리오 작성:**
90
  - 만남, 대화 시작, 식사, 영화 관람, 갈등 발생 및 해결 등 데이트의 각 단계를 구체적인 대화 장면으로 묘사해주세요.
 
93
  4. **상대방을 서로 이해하기 위한 실질적인 조언:**
94
  - 각 대상자가 상대방의 에니어그램 유형을 이해하고, 더 나은 관계를 형성하기 위한 구체적인 상황과 행동을 예시로 제시해주세요.
95
  - 조언에 {my_name}과 {partner_name}의 이름, 성별, 에니어그램 유형이 모두 반영되어야 합니다.
 
96
  """
97
 
98
  full_text = ""
 
102
  full_text += chunk.text
103
  html_text = markdown.markdown(full_text)
104
  scenario_output_area.markdown(html_text, unsafe_allow_html=True)
105
+ time.sleep(0.05) # 출력 속도 조절
106
  except Exception as e:
107
  st.error(f"Error: {str(e)}")
108
  return ""
109
 
110
  return full_text
111
 
112
+
113
  # Streamlit 인터페이스
114
  st.set_page_config(page_title="에니어그램 데이트 시뮬레이터", page_icon="❤️")
115
 
116
  colored_header(
117
  label="💖 에니어그램 데이트 시뮬레이터 💖",
118
  description="나와 상대방의 에니어그램 유형을 기반으로 데이트 시나리오를 미리 체험해보세요!",
119
+ color_name="red-70",
120
  )
121
 
122
+
123
  # 사이드바 입력 폼
124
  with st.sidebar:
125
  st.subheader("내 정보")
126
  my_name = st.text_input("내 이름(닉네임)", "나")
127
  my_gender = st.selectbox("내 성별", ["남성", "여성"])
128
  my_type = st.selectbox("내 에니어그램 유형", list(enneagram_types.keys()))
129
+ my_wing = st.selectbox("내 날개 유형 (선택)", [""] + list(wing_types.keys())) # 빈 문자열 추가
130
+ my_instinct = st.selectbox("내 본능 유형 (선택)", [""] + list(instinct_variants.keys())) # 빈 문자열 추가
131
 
132
  st.subheader("상대방 정보")
133
  partner_name = st.text_input("상대방 이름(닉네임)", "상대방")
134
  partner_gender = st.selectbox("상대방 성별", ["남성", "여성"])
135
  partner_type = st.selectbox("상대방 에니어그램 유형", list(enneagram_types.keys()))
136
+ partner_wing = st.selectbox("상대방 날개 유형 (선택)", [""] + list(wing_types.keys())) # 빈 문자열 추가
137
+ partner_instinct = st.selectbox("상대방 본능 유형 (선택)", [""] + list(instinct_variants.keys())) # 빈 문자열 추가
138
+
139
 
140
  st.subheader("데이트 상황")
141
  situation = st.text_area("예: 첫 만남, 영화 관람 후 저녁 식사", height=150)
 
146
  scenario_output_area = st.empty()
147
 
148
  if generate_scenario_button:
149
+ # 날개/본능 유형 선택 안한 경우 None으로 처리
150
  my_wing = my_wing if my_wing != "" else None
151
  my_instinct = my_instinct if my_instinct != "" else None
152
  partner_wing = partner_wing if partner_wing != "" else None