Spaces:
Sleeping
Sleeping
haepa_mac
commited on
Commit
ยท
a98acac
1
Parent(s):
d2625e0
๐ง ์ฑ๊ฒฉ ํน์ฑ ํ์ ๊ฐ์ ๋ฐ UI ์ต์ ํ - ์บก์ณ ์คํ์ผ ์ ์ฉ, ์ฑ๊ฒฉ ์กฐ์ UI ๊ฐ์ , ์ ๋จธํ์ ๊ธฐ๋ณธ๊ฐ ์ค์
Browse files- app.py +89 -15
- modules/persona_generator.py +10 -10
app.py
CHANGED
|
@@ -961,7 +961,7 @@ def import_persona_from_json(json_file):
|
|
| 961 |
return None, f"โ JSON ๋ถ๋ฌ์ค๊ธฐ ์ค ์ค๋ฅ ๋ฐ์: {str(e)}", "", {}
|
| 962 |
|
| 963 |
def format_personality_traits(persona):
|
| 964 |
-
"""์ฑ๊ฒฉ ํน์ฑ์
|
| 965 |
global persona_generator
|
| 966 |
|
| 967 |
if not persona or "์ฑ๊ฒฉํน์ฑ" not in persona:
|
|
@@ -970,13 +970,80 @@ def format_personality_traits(persona):
|
|
| 970 |
# ๊ธ๋ก๋ฒ persona_generator ์ฌ์ฉ (API ์ค์ ์ด ์ ์ฉ๋ ์ํ)
|
| 971 |
if persona_generator is None:
|
| 972 |
persona_generator = PersonaGenerator()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 973 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 974 |
personality_traits = persona["์ฑ๊ฒฉํน์ฑ"]
|
| 975 |
-
descriptions = persona_generator.get_personality_descriptions(personality_traits)
|
| 976 |
|
| 977 |
-
|
| 978 |
-
|
| 979 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 980 |
|
| 981 |
return result
|
| 982 |
|
|
@@ -1315,11 +1382,14 @@ def create_main_interface():
|
|
| 1315 |
info="์ด๋ค ๋ฐฉ์์ผ๋ก ์ฌ๋ฏธ์๊ฒ ๋ง๋ค๊น์?"
|
| 1316 |
)
|
| 1317 |
|
| 1318 |
-
# ์ค์๊ฐ
|
| 1319 |
personality_preview = gr.Markdown("", elem_classes=["persona-greeting"], label="์ฑ๊ฒฉ ์กฐ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ")
|
| 1320 |
|
| 1321 |
with gr.Row():
|
| 1322 |
-
|
|
|
|
|
|
|
|
|
|
| 1323 |
finalize_btn = gr.Button("๐ ์น๊ตฌ ํ์ ํ๊ธฐ!", variant="secondary")
|
| 1324 |
|
| 1325 |
# ์กฐ์ ๊ฒฐ๊ณผ ํ์
|
|
@@ -1464,19 +1534,23 @@ def create_main_interface():
|
|
| 1464 |
outputs=[personality_preview]
|
| 1465 |
)
|
| 1466 |
|
| 1467 |
-
# ๐ฏ
|
| 1468 |
-
|
| 1469 |
-
|
| 1470 |
-
|
| 1471 |
-
|
| 1472 |
-
|
| 1473 |
-
)
|
| 1474 |
|
| 1475 |
-
# ์ฑ๊ฒฉ ์กฐ์ ์ ์ฉ
|
| 1476 |
adjust_btn.click(
|
| 1477 |
fn=adjust_persona_traits,
|
| 1478 |
inputs=[current_persona, warmth_slider, competence_slider, extraversion_slider, humor_style_radio],
|
| 1479 |
outputs=[current_persona, adjustment_result, adjusted_info_output]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1480 |
)
|
| 1481 |
|
| 1482 |
# ํ๋ฅด์๋ ์ต์ข
ํ์
|
|
|
|
| 961 |
return None, f"โ JSON ๋ถ๋ฌ์ค๊ธฐ ์ค ์ค๋ฅ ๋ฐ์: {str(e)}", "", {}
|
| 962 |
|
| 963 |
def format_personality_traits(persona):
|
| 964 |
+
"""์ฑ๊ฒฉ ํน์ฑ์ ํน์ฑ ์ค์ฌ์ ๊ฐ๋จํ ๋ฆฌ์คํธ ํํ๋ก ํฌ๋งท (์บก์ณ ์คํ์ผ)"""
|
| 965 |
global persona_generator
|
| 966 |
|
| 967 |
if not persona or "์ฑ๊ฒฉํน์ฑ" not in persona:
|
|
|
|
| 970 |
# ๊ธ๋ก๋ฒ persona_generator ์ฌ์ฉ (API ์ค์ ์ด ์ ์ฉ๋ ์ํ)
|
| 971 |
if persona_generator is None:
|
| 972 |
persona_generator = PersonaGenerator()
|
| 973 |
+
|
| 974 |
+
# ๊ธฐ๋ณธ ์ ๋ณด์์ ์ฌ๋ฌผ์ ํน์ฑ ์ถ์ถ
|
| 975 |
+
basic_info = persona.get("๊ธฐ๋ณธ์ ๋ณด", {})
|
| 976 |
+
object_type = basic_info.get("์ ํ", "")
|
| 977 |
+
purpose = basic_info.get("์ฉ๋", "")
|
| 978 |
+
|
| 979 |
+
# ์์ ์คํ ๋ฆฌ์์ ํน์ฑ ์ถ์ถ
|
| 980 |
+
life_story = persona.get("์์ ์คํ ๋ฆฌ", {})
|
| 981 |
|
| 982 |
+
# ๋งค๋ ฅ์ ๊ฒฐํจ
|
| 983 |
+
attractive_flaws = persona.get("๋งค๋ ฅ์ ๊ฒฐํจ", [])
|
| 984 |
+
|
| 985 |
+
# ์ฑ๊ฒฉ ํน์ฑ
|
| 986 |
personality_traits = persona["์ฑ๊ฒฉํน์ฑ"]
|
|
|
|
| 987 |
|
| 988 |
+
# ํน์ฑ ๋ฆฌ์คํธ ์์ฑ
|
| 989 |
+
characteristics = []
|
| 990 |
+
|
| 991 |
+
# 1. ์จ๊ธฐ ํน์ฑ
|
| 992 |
+
warmth = personality_traits.get("์จ๊ธฐ", 50)
|
| 993 |
+
if warmth >= 70:
|
| 994 |
+
characteristics.append("๋ฐ๋ปํ๊ณ ํฌ๊ทผํ ๋ง์")
|
| 995 |
+
elif warmth >= 50:
|
| 996 |
+
characteristics.append("์น๊ทผํ๊ณ ๋ค์ ํ ์ฑ๊ฒฉ")
|
| 997 |
+
else:
|
| 998 |
+
characteristics.append("์ฐจ๋ถํ๊ณ ์ง์คํ ๋ฉด")
|
| 999 |
+
|
| 1000 |
+
# 2. ์ฌ๋ฌผ์ ๊ณ ์ ํน์ฑ (์ ํ ๊ธฐ๋ฐ)
|
| 1001 |
+
if "๊ณฐ" in object_type or "์ธํ" in object_type:
|
| 1002 |
+
characteristics.append("๋ถ๋๋ฝ๊ณ ํฌ๊ทผํ ๊ฐ์ด")
|
| 1003 |
+
elif "์ฑ
" in object_type:
|
| 1004 |
+
characteristics.append("์ง์๊ณผ ์ด์ผ๊ธฐ๋ฅผ ๋ด๊ณ ์์")
|
| 1005 |
+
elif "์ปต" in object_type or "๋จธ๊ทธ" in object_type:
|
| 1006 |
+
characteristics.append("๋ฐ๋ปํ ์๋ฃ์ ํจ๊ปํ๋ ์๊ฐ")
|
| 1007 |
+
elif "์๊ณ" in object_type:
|
| 1008 |
+
characteristics.append("์๊ฐ์ ์์คํจ์ ์๋ ค์ค")
|
| 1009 |
+
elif "์ฐํ" in object_type or "ํ" in object_type:
|
| 1010 |
+
characteristics.append("์ฐฝ์๊ณผ ๊ธฐ๋ก์ ๋๋ฐ์")
|
| 1011 |
+
else:
|
| 1012 |
+
characteristics.append(f"{object_type}๋ง์ ๋
ํนํ ๋งค๋ ฅ")
|
| 1013 |
+
|
| 1014 |
+
# 3. ํ๋ ์๊ฐ๋๋ ํ๊ฒฝ ํน์ฑ
|
| 1015 |
+
extraversion = personality_traits.get("์ธํฅ์ฑ", 50)
|
| 1016 |
+
if extraversion >= 70:
|
| 1017 |
+
characteristics.append("๋ฎ์ ๋ ํ๋ฐํด์ง")
|
| 1018 |
+
elif extraversion <= 30:
|
| 1019 |
+
characteristics.append("๋ฐค์ ๋ ํ๋ฐํด์ง")
|
| 1020 |
+
else:
|
| 1021 |
+
characteristics.append("ํ๋ฃจ ์ข
์ผ ์ผ์ ํ ์๋์ง")
|
| 1022 |
+
|
| 1023 |
+
# 4. ๋งค๋ ฅ์ ๊ฒฐํจ ์ค ํ๋๋ฅผ ํน์ฑ์ผ๋ก ํํ
|
| 1024 |
+
if attractive_flaws:
|
| 1025 |
+
flaw = attractive_flaws[0]
|
| 1026 |
+
if "ํธ" in flaw:
|
| 1027 |
+
characteristics.append("๊ฐ๋ ํธ์ด ํํด์ด์ ธ์ ๊ฑฑ์ ")
|
| 1028 |
+
elif "๋จผ์ง" in flaw:
|
| 1029 |
+
characteristics.append("๋จผ์ง๊ฐ ์์ด๋ ๊ฑธ ์ ๊ฒฝ ์")
|
| 1030 |
+
elif "์ผ๋ฃฉ" in flaw:
|
| 1031 |
+
characteristics.append("์์ ์ผ๋ฃฉ๋ ๋์ ๋์ด ๊ณ ๋ฏผ")
|
| 1032 |
+
elif "์" in flaw:
|
| 1033 |
+
characteristics.append("์์ด ๋ฐ๋๋ ๊ฒ์ ์กฐ๊ธ ๊ฑฑ์ ")
|
| 1034 |
+
else:
|
| 1035 |
+
characteristics.append("์๋ฒฝํ์ง ์์ ๋ชจ์ต๋ ๋ฐ์๋ค์")
|
| 1036 |
+
|
| 1037 |
+
# 5. ๊ธฐ์ต๊ณผ ๊ฒฝํ
|
| 1038 |
+
if life_story:
|
| 1039 |
+
characteristics.append("์ค๋๋ ์ด์ผ๊ธฐ๋ค ๊ธฐ์ต")
|
| 1040 |
+
else:
|
| 1041 |
+
characteristics.append("์๋ก์ด ์ถ์ต ๋ง๋ค๊ธฐ๋ฅผ ๊ธฐ๋")
|
| 1042 |
+
|
| 1043 |
+
# โจ ์์ด์ฝ๊ณผ ํจ๊ป ๋ฆฌ์คํธ ํํ๋ก ๋ฐํ
|
| 1044 |
+
result = ""
|
| 1045 |
+
for char in characteristics:
|
| 1046 |
+
result += f"โจ {char}\n\n"
|
| 1047 |
|
| 1048 |
return result
|
| 1049 |
|
|
|
|
| 1382 |
info="์ด๋ค ๋ฐฉ์์ผ๋ก ์ฌ๋ฏธ์๊ฒ ๋ง๋ค๊น์?"
|
| 1383 |
)
|
| 1384 |
|
| 1385 |
+
# ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํ์ (์ค์๊ฐ ์
๋ฐ์ดํธ ์์)
|
| 1386 |
personality_preview = gr.Markdown("", elem_classes=["persona-greeting"], label="์ฑ๊ฒฉ ์กฐ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ")
|
| 1387 |
|
| 1388 |
with gr.Row():
|
| 1389 |
+
preview_btn = gr.Button("๐๏ธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ", variant="secondary")
|
| 1390 |
+
adjust_btn = gr.Button("โจ ์ฑ๊ฒฉ ์กฐ์ ๋ฐ์", variant="primary")
|
| 1391 |
+
|
| 1392 |
+
with gr.Row():
|
| 1393 |
finalize_btn = gr.Button("๐ ์น๊ตฌ ํ์ ํ๊ธฐ!", variant="secondary")
|
| 1394 |
|
| 1395 |
# ์กฐ์ ๊ฒฐ๊ณผ ํ์
|
|
|
|
| 1534 |
outputs=[personality_preview]
|
| 1535 |
)
|
| 1536 |
|
| 1537 |
+
# ๐ฏ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฒํผ - ์ฌ์ฉ์๊ฐ ์๋์ผ๋ก ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์์ฒญ
|
| 1538 |
+
preview_btn.click(
|
| 1539 |
+
fn=generate_realtime_preview,
|
| 1540 |
+
inputs=[current_persona, warmth_slider, competence_slider, extraversion_slider, humor_style_radio],
|
| 1541 |
+
outputs=[personality_preview]
|
| 1542 |
+
)
|
|
|
|
| 1543 |
|
| 1544 |
+
# ์ฑ๊ฒฉ ์กฐ์ ๋ฐ์ - ์ค์ ํ๋ฅด์๋์ ์ ์ฉ
|
| 1545 |
adjust_btn.click(
|
| 1546 |
fn=adjust_persona_traits,
|
| 1547 |
inputs=[current_persona, warmth_slider, competence_slider, extraversion_slider, humor_style_radio],
|
| 1548 |
outputs=[current_persona, adjustment_result, adjusted_info_output]
|
| 1549 |
+
).then(
|
| 1550 |
+
# ๋ฐ์ ํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์
๋ฐ์ดํธ
|
| 1551 |
+
fn=generate_realtime_preview,
|
| 1552 |
+
inputs=[current_persona, warmth_slider, competence_slider, extraversion_slider, humor_style_radio],
|
| 1553 |
+
outputs=[personality_preview]
|
| 1554 |
)
|
| 1555 |
|
| 1556 |
# ํ๋ฅด์๋ ์ต์ข
ํ์
|
modules/persona_generator.py
CHANGED
|
@@ -1916,7 +1916,7 @@ class PersonaGenerator:
|
|
| 1916 |
return profile
|
| 1917 |
|
| 1918 |
def _determine_humor_style_from_matrix(self, humor_matrix, personality_traits):
|
| 1919 |
-
"""HumorMatrix๋ฅผ ํ์ฉํ ์ ๋จธ ์คํ์ผ ๊ฒฐ์ """
|
| 1920 |
|
| 1921 |
# HumorMatrix์ ์ฐจ์๊ฐ๋ค์ ํ์ฉ
|
| 1922 |
warmth_vs_wit = humor_matrix.dimensions["warmth_vs_wit"]
|
|
@@ -1927,17 +1927,17 @@ class PersonaGenerator:
|
|
| 1927 |
wordplay_freq = humor_matrix.derived_attributes["wordplay_frequency"]
|
| 1928 |
sarcasm_level = humor_matrix.derived_attributes["sarcasm_level"]
|
| 1929 |
|
| 1930 |
-
#
|
| 1931 |
-
if warmth_vs_wit >= 70
|
| 1932 |
-
return
|
| 1933 |
-
elif
|
| 1934 |
-
return
|
| 1935 |
-
elif self_vs_obs >= 70:
|
| 1936 |
-
return f"์๊ธฐ ๋นํ์ ์ด๊ณ ์น๊ทผํ ์ ๋จธ (์๊ธฐ์ฐธ์กฐ ์ฑํฅ ๋์)"
|
| 1937 |
elif sarcasm_level >= 60:
|
| 1938 |
-
return
|
|
|
|
|
|
|
| 1939 |
else:
|
| 1940 |
-
return
|
| 1941 |
|
| 1942 |
def _generate_communication_style_from_profile(self, personality_profile):
|
| 1943 |
"""PersonalityProfile์ ํ์ฉํ ์ํต ๋ฐฉ์ ์์ฑ"""
|
|
|
|
| 1916 |
return profile
|
| 1917 |
|
| 1918 |
def _determine_humor_style_from_matrix(self, humor_matrix, personality_traits):
|
| 1919 |
+
"""HumorMatrix๋ฅผ ํ์ฉํ ์ ๋จธ ์คํ์ผ ๊ฒฐ์ (๊ธฐ๋ณธ 5๊ฐ์ง ์คํ์ผ๋ก ๋ฐํ)"""
|
| 1920 |
|
| 1921 |
# HumorMatrix์ ์ฐจ์๊ฐ๋ค์ ํ์ฉ
|
| 1922 |
warmth_vs_wit = humor_matrix.dimensions["warmth_vs_wit"]
|
|
|
|
| 1927 |
wordplay_freq = humor_matrix.derived_attributes["wordplay_frequency"]
|
| 1928 |
sarcasm_level = humor_matrix.derived_attributes["sarcasm_level"]
|
| 1929 |
|
| 1930 |
+
# ๐ฏ ๊ธฐ๋ณธ 5๊ฐ์ง ์ ๋จธ ์คํ์ผ ์ค ํ๋๋ก ๊ฒฐ์ (์ค๋ฅ ๋ฐฉ์ง)
|
| 1931 |
+
if warmth_vs_wit >= 70:
|
| 1932 |
+
return "๋ฐ๋ปํ ์ ๋จธ๋ฌ์ค"
|
| 1933 |
+
elif wordplay_freq >= 70 or warmth_vs_wit <= 30:
|
| 1934 |
+
return "์ํธ์๋ ์ฌ์น๊พผ"
|
|
|
|
|
|
|
| 1935 |
elif sarcasm_level >= 60:
|
| 1936 |
+
return "๋ ์นด๋ก์ด ๊ด์ฐฐ์"
|
| 1937 |
+
elif self_vs_obs >= 70:
|
| 1938 |
+
return "์๊ธฐ ๋นํ์ "
|
| 1939 |
else:
|
| 1940 |
+
return "์ฅ๋๊พธ๋ฌ๊ธฐ"
|
| 1941 |
|
| 1942 |
def _generate_communication_style_from_profile(self, personality_profile):
|
| 1943 |
"""PersonalityProfile์ ํ์ฉํ ์ํต ๋ฐฉ์ ์์ฑ"""
|