Update app.py
Browse files
app.py
CHANGED
|
@@ -4,22 +4,22 @@ import os
|
|
| 4 |
import time
|
| 5 |
|
| 6 |
# Google Gemini API 키 설정 (필수)
|
| 7 |
-
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
|
| 8 |
|
| 9 |
# 모델 설정
|
| 10 |
generation_config = {
|
| 11 |
-
"temperature": 0.75,
|
| 12 |
-
"top_p": 0.8,
|
| 13 |
-
"top_k": 40,
|
| 14 |
-
"max_output_tokens": 5000,
|
| 15 |
}
|
| 16 |
|
| 17 |
model = genai.GenerativeModel(
|
| 18 |
-
model_name="gemini-1.5-pro-002",
|
| 19 |
generation_config=generation_config,
|
| 20 |
)
|
| 21 |
|
| 22 |
-
#
|
| 23 |
enneagram_types = {
|
| 24 |
"1": "개혁가",
|
| 25 |
"1w2": "개혁가(조력가 날개)",
|
|
@@ -50,23 +50,22 @@ enneagram_types = {
|
|
| 50 |
"9w1": "평화주의자(개혁가 날개)"
|
| 51 |
}
|
| 52 |
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
system_prompt = f"""
|
| 57 |
당신은 에니어그램 전문가이자 관계 코치입니다. 아래에 {male_type_description} 남성과 {female_type_description} 여성의 데이트 시나리오를 만들어주세요.
|
| 58 |
상황: {situation}
|
| 59 |
-
|
| 60 |
-
시나리오는
|
| 61 |
-
1. **상호작용의 구체적인 묘사**: 두 사람의 성격 특성이 어떻게 상호작용하며, 각각의 반응이 어떤 영향을 미치는지 구체적으로 설명해주세요.
|
| 62 |
-
2. **내면의 생각과 감정**: 각자의 내면의 생각과 느끼는 감정을 상황마다 상세하게 드러내세요. 이로 인해 두 사람의 관계가 어떻게 발전하는지 묘사해주세요.
|
| 63 |
-
3. **대화와 행동**: 두 사람의 대화 내용뿐만 아니라 행동과 그 이면의 이유를 상세히 묘사하여 자연스러운 흐름을 만들어주세요.
|
| 64 |
-
4. **갈등과 해결**: 서로 다른 성격으로 인해 발생할 수 있는 갈등 상황과 이를 어떻게 해결하는지 구체적으로 제시해주세요.
|
| 65 |
-
5. **상대방에 대한 이해**: 두 사람이 서로의 성격을 이해하고 수용하는 과정을 통해 관계가 어떻게 발전할 수 있는지 조언을 추가해주세요.
|
| 66 |
-
6. **궁합 평가 및 조언**: 마지막으로 두 유형 간의 궁합 점수를 100점 만점으로 평가하고, 관계 개선을 위한 구체적인 팁을 제공해주세요. 각자의 유형 특성을 반영하여 현실적이고 유용한 조언을 제시하세요.
|
| 67 |
-
7. **각 유형의 특성 반영**: 남성과 여성의 애니어그램 유형이 정확하게 반영되도록, 각 유형의 특성, 행동 방식, 대화 스타일 등을 구체적으로 설명해주세요.
|
| 68 |
-
|
| 69 |
-
이 모든 요소를 포함하여, 독자가 두 사람의 성격과 관계 발전 과정을 쉽게 이해할 수 있도록 상세하고 생동감 있는 시나리오를 작성해주세요.
|
| 70 |
"""
|
| 71 |
|
| 72 |
response = model.generate_content([system_prompt], stream=True)
|
|
@@ -78,21 +77,24 @@ def generate_date_scenario(male_type, female_type, situation):
|
|
| 78 |
yield collected_text
|
| 79 |
time.sleep(0.03)
|
| 80 |
|
| 81 |
-
|
|
|
|
| 82 |
iface = gr.Interface(
|
| 83 |
fn=generate_date_scenario,
|
| 84 |
inputs=[
|
| 85 |
gr.Dropdown(list(enneagram_types.keys()), label="남성 에니어그램 유형"),
|
|
|
|
| 86 |
gr.Dropdown(list(enneagram_types.keys()), label="여성 에니어그램 유형"),
|
|
|
|
| 87 |
gr.Textbox(label="상황")
|
| 88 |
],
|
| 89 |
outputs=gr.Textbox(lines=15, label="시나리오 결과"),
|
| 90 |
-
title="에니어그램 기반 데이트 시나리오 생성기",
|
| 91 |
-
description="남성과 여성의 에니어그램 유형 및 상황을 입력하여 데이트 시나리오를 생성합니다.",
|
| 92 |
examples=[
|
| 93 |
-
["1", "2", "첫 데이트로 함께 요리 교실에 참여하는 상황"],
|
| 94 |
-
["5", "7", "놀이공원에서 데이트하는 상황"],
|
| 95 |
-
["3w2", "9w1", "미술관에서 조용한 시간을 보내는 상황"]
|
| 96 |
]
|
| 97 |
)
|
| 98 |
|
|
|
|
| 4 |
import time
|
| 5 |
|
| 6 |
# Google Gemini API 키 설정 (필수)
|
| 7 |
+
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
|
| 8 |
|
| 9 |
# 모델 설정
|
| 10 |
generation_config = {
|
| 11 |
+
"temperature": 0.75,
|
| 12 |
+
"top_p": 0.8,
|
| 13 |
+
"top_k": 40,
|
| 14 |
+
"max_output_tokens": 5000,
|
| 15 |
}
|
| 16 |
|
| 17 |
model = genai.GenerativeModel(
|
| 18 |
+
model_name="gemini-1.5-pro-002",
|
| 19 |
generation_config=generation_config,
|
| 20 |
)
|
| 21 |
|
| 22 |
+
# 에니어그램 유형 정보 (본능 유형 추가)
|
| 23 |
enneagram_types = {
|
| 24 |
"1": "개혁가",
|
| 25 |
"1w2": "개혁가(조력가 날개)",
|
|
|
|
| 50 |
"9w1": "평화주의자(개혁가 날개)"
|
| 51 |
}
|
| 52 |
|
| 53 |
+
instinct_variants = {
|
| 54 |
+
"sp": "자기보존",
|
| 55 |
+
"so": "사회적",
|
| 56 |
+
"sx": "성적"
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
|
| 60 |
+
def generate_date_scenario(male_type, male_instinct, female_type, female_instinct, situation):
|
| 61 |
+
male_type_description = f"{enneagram_types.get(male_type, '알 수 없는 유형')} ({instinct_variants.get(male_instinct, '알 수 없는 본능')})"
|
| 62 |
+
female_type_description = f"{enneagram_types.get(female_type, '알 수 없는 유형')} ({instinct_variants.get(female_instinct, '알 수 없는 본능')})"
|
| 63 |
+
|
| 64 |
system_prompt = f"""
|
| 65 |
당신은 에니어그램 전문가이자 관계 코치입니다. 아래에 {male_type_description} 남성과 {female_type_description} 여성의 데이트 시나리오를 만들어주세요.
|
| 66 |
상황: {situation}
|
| 67 |
+
|
| 68 |
+
시나리오는 이전과 동일한 요소 (상호작용, 내면, 대화, 갈등 해결, 상대방 이해, 궁합 평가 및 조언, 유형 특성 반영)를 포함해야 하며, 특히 **본능 유형**이 데이트 상황에 어떻게 영향을 미치는지 구체적으로 보여주세요. 예를 들어, 자기보존 본능이 강한 사람은 데이트 장소의 안전이나 편안함을 중요하게 생각할 수 있고, 사회적 본능이 강한 사람은 데이트 상대와의 공통 관심사나 사회적 연결에 관심을 가질 수 있으며, 성적 본능이 강한 사람은 데이트 상대와의 강렬한 연결이나 매력에 집중할 수 있습니다. 이러한 본능 유형의 차이가 데이트 상황에서 어떤 갈등이나 조화를 만들어내는지 상세하게 묘사해주세요.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 69 |
"""
|
| 70 |
|
| 71 |
response = model.generate_content([system_prompt], stream=True)
|
|
|
|
| 77 |
yield collected_text
|
| 78 |
time.sleep(0.03)
|
| 79 |
|
| 80 |
+
|
| 81 |
+
# Gradio 인터페이스 설정 (본능 유형 입력 추가)
|
| 82 |
iface = gr.Interface(
|
| 83 |
fn=generate_date_scenario,
|
| 84 |
inputs=[
|
| 85 |
gr.Dropdown(list(enneagram_types.keys()), label="남성 에니어그램 유형"),
|
| 86 |
+
gr.Dropdown(list(instinct_variants.keys()), label="남성 본능 유형"),
|
| 87 |
gr.Dropdown(list(enneagram_types.keys()), label="여성 에니어그램 유형"),
|
| 88 |
+
gr.Dropdown(list(instinct_variants.keys()), label="여성 본능 유형"),
|
| 89 |
gr.Textbox(label="상황")
|
| 90 |
],
|
| 91 |
outputs=gr.Textbox(lines=15, label="시나리오 결과"),
|
| 92 |
+
title="에니어그램 기반 데이트 시나리오 생성기 (본능 유형 포함)",
|
| 93 |
+
description="남성과 여성의 에니어그램 유형, 본능 유형 및 상황을 입력하여 데이트 시나리오를 생성합니다.",
|
| 94 |
examples=[
|
| 95 |
+
["1", "sp", "2", "so", "첫 데이트로 함께 요리 교실에 참여하는 상황"],
|
| 96 |
+
["5", "sx", "7", "sp", "놀이공원에서 데이트하는 상황"],
|
| 97 |
+
["3w2", "so", "9w1", "sx", "미술관에서 조용한 시간을 보내는 상황"]
|
| 98 |
]
|
| 99 |
)
|
| 100 |
|