ll7098ll commited on
Commit
4cac0d6
·
verified ·
1 Parent(s): 2ff2333

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -27
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"]) # 환경 변수에서 API 키를 읽어옵니다.
8
 
9
  # 모델 설정
10
  generation_config = {
11
- "temperature": 0.75, # 창의성 조절 (0.2 ~ 1.0) - 조금 더 높은 창의성 부여
12
- "top_p": 0.8, # 샘플링 다양성 조절 (0.5 ~ 1.0) - 다양성을 조금 더 높여 흥미로운 시나리오 생성 유도
13
- "top_k": 40, # 최상위 k개 토큰 고려 - 더욱 다양한 표현을 생성하도록 설정
14
- "max_output_tokens": 5000, # 최대 출력 토큰 수 - 더 짧고 간결하게 이야기 구성
15
  }
16
 
17
  model = genai.GenerativeModel(
18
- model_name="gemini-1.5-pro-002", # Gemini Pro 모델 사용
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
- def generate_date_scenario(male_type, female_type, situation):
54
- male_type_description = enneagram_types.get(male_type, " 수 없는 유형")
55
- female_type_description = enneagram_types.get(female_type, " 수 없는 유형")
 
 
 
 
 
 
 
 
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
- # Gradio 인터페이스 설정
 
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