ll7098ll commited on
Commit
f5b0d3e
·
verified ·
1 Parent(s): 618d200

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -16
app.py CHANGED
@@ -1,24 +1,25 @@
1
  import gradio as gr
2
  import google.generativeai as genai
3
  import os
 
4
 
5
  # Google Gemini API 키 설정 (필수)
6
  genai.configure(api_key=os.environ["GEMINI_API_KEY"]) # 환경 변수에서 API 키를 읽어옵니다.
7
 
8
  # 모델 설정
9
  generation_config = {
10
- "temperature": 0.75,
11
- "top_p": 0.9,
12
- "top_k": 40,
13
- "max_output_tokens": 5000,
14
  }
15
 
16
  model = genai.GenerativeModel(
17
- model_name="gemini-1.5-pro-002",
18
  generation_config=generation_config,
19
  )
20
 
21
- # 니어그램 유형 정보
22
  enneagram_types = {
23
  "1": "개혁가",
24
  "1w2": "개혁가(조력가 날개)",
@@ -53,7 +54,7 @@ def generate_date_scenario(male_type, female_type, situation):
53
  male_type_description = enneagram_types.get(male_type, "알 수 없는 유형")
54
  female_type_description = enneagram_types.get(female_type, "알 수 없는 유형")
55
  system_prompt = f"""
56
- 당신은 니어그램 전문가이자 관계 코치입니다. 아래에 {male_type_description} 남성과 {female_type_description} 여성의 데이트 시나리오를 만들어주세요.
57
  상황: {situation}
58
 
59
  시나리오는 아래와 같은 요소를 반드시 포함해야 합니다:
@@ -63,25 +64,31 @@ def generate_date_scenario(male_type, female_type, situation):
63
  4. **갈등과 해결**: 서로 다른 성격으로 인해 발생할 수 있는 갈등 상황과 이를 어떻게 해결하는지 구체적으로 제시해주세요.
64
  5. **상대방에 대한 이해**: 두 사람이 서로의 성격을 이해하고 수용하는 과정을 통해 관계가 어떻게 발전할 수 있는지 조언을 추가해주세요.
65
  6. **궁합 평가 및 조언**: 마지막으로 두 유형 간의 궁합 점수를 100점 만점으로 평가하고, 관계 개선을 위한 구체적인 팁을 제공해주세요. 각자의 유형 특성을 반영하여 현실적이고 유용한 조언을 제시하세요.
66
- 7. **각 유형의 특성 반영**: 남성과 여성의 니어그램 유형이 정확하게 반영되도록, 각 유형의 특성, 행동 방식, 대화 스타일 등을 구체적으로 설명해주세요.
67
 
68
  이 모든 요소를 포함하여, 독자가 두 사람의 성격과 관계 발전 과정을 쉽게 이해할 수 있도록 상세하고 생동감 있는 시나리오를 작성해주세요.
69
  """
70
 
71
- response = model.generate_content([system_prompt])
72
- return response[0]['content']
 
 
 
 
 
 
73
 
74
  # Gradio 인터페이스 설정
75
  iface = gr.Interface(
76
- fn=generate_date_scenario,
77
  inputs=[
78
- gr.Dropdown(list(enneagram_types.keys()), label="남성 니어그램 유형"),
79
- gr.Dropdown(list(enneagram_types.keys()), label="여성 니어그램 유형"),
80
- gr.Textbox(label="상황")
81
  ],
82
  outputs=gr.Textbox(lines=15, label="시나리오 결과"),
83
  title="데이트 시나리오 생성기",
84
- description="남성과 여성의 니어그램 유형 및 상황을 입력하여 데이트 시나리오를 생성합니다.",
85
  examples=[
86
  ["1", "2", "첫 데이트로 함께 요리 교실에 참여하는 상황"],
87
  ["5", "7", "놀이공원에서 데이트하는 상황"],
@@ -90,4 +97,4 @@ iface = gr.Interface(
90
  )
91
 
92
  # 인터페이스 실행
93
- iface.launch()
 
1
  import gradio as gr
2
  import google.generativeai as genai
3
  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": "개혁가(조력가 날개)",
 
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
  시나리오는 아래와 같은 요소를 반드시 포함해야 합니다:
 
64
  4. **갈등과 해결**: 서로 다른 성격으로 인해 발생할 수 있는 갈등 상황과 이를 어떻게 해결하는지 구체적으로 제시해주세요.
65
  5. **상대방에 대한 이해**: 두 사람이 서로의 성격을 이해하고 수용하는 과정을 통해 관계가 어떻게 발전할 수 있는지 조언을 추가해주세요.
66
  6. **궁합 평가 및 조언**: 마지막으로 두 유형 간의 궁합 점수를 100점 만점으로 평가하고, 관계 개선을 위한 구체적인 팁을 제공해주세요. 각자의 유형 특성을 반영하여 현실적이고 유용한 조언을 제시하세요.
67
+ 7. **각 유형의 특성 반영**: 남성과 여성의 니어그램 유형이 정확하게 반영되도록, 각 유형의 특성, 행동 방식, 대화 스타일 등을 구체적으로 설명해주세요.
68
 
69
  이 모든 요소를 포함하여, 독자가 두 사람의 성격과 관계 발전 과정을 쉽게 이해할 수 있도록 상세하고 생동감 있는 시나리오를 작성해주세요.
70
  """
71
 
72
+ response = model.generate_content([system_prompt], stream=True)
73
+ collected_text = ""
74
+
75
+ for token in response:
76
+ chunk = token.text
77
+ collected_text += chunk
78
+ yield collected_text
79
+ time.sleep(0.03)
80
 
81
  # Gradio 인터페이스 설정
82
  iface = gr.Interface(
83
+ fn=lambda male_type, female_type, situation: list(generate_date_scenario(male_type, female_type, situation))[-1],
84
  inputs=[
85
+ gr.Dropdown(list(enneagram_types.keys()), value="1", label="남성 니어그램 유형"),
86
+ gr.Dropdown(list(enneagram_types.keys()), value="2", label="여성 니어그램 유형"),
87
+ gr.Textbox(value="첫 데이트로 함께 요리 교실에 참여하는 상황", label="상황")
88
  ],
89
  outputs=gr.Textbox(lines=15, label="시나리오 결과"),
90
  title="데이트 시나리오 생성기",
91
+ description="남성과 여성의 니어그램 유형 및 상황을 입력하여 데이트 시나리오를 생성합니다.",
92
  examples=[
93
  ["1", "2", "첫 데이트로 함께 요리 교실에 참여하는 상황"],
94
  ["5", "7", "놀이공원에서 데이트하는 상황"],
 
97
  )
98
 
99
  # 인터페이스 실행
100
+ iface.launch()