Update app.py
Browse files
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.
|
| 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 |
-
당신은
|
| 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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()
|