Spaces:
Sleeping
Sleeping
๐ฏ ์์ฑ: 152๊ฐ ๋ณ์ ์์คํ & ์ค์๊ฐ ๋ณํ๋ ๋ถ์ - ์ฌ์ฉ์ ์กฐ์ ๊ฐ์ด ๋ชจ๋ ๋ณ์์ ์ฒด๊ณ์ ๋ฐ์, ์ ๋จธ์คํ์ผ๋ณ ์ฐจ๋ณํ, ๋ณํ๋ ๋ถ์์ผ๋ก ์กฐ์ ํจ๊ณผ ์ค์๊ฐ ํ์ธ, ๋ ํ์ฑํ๊ณ ์ ์ฒด์ ์ธ ์ฑ๊ฒฉ ์์ฑ์ ์ํ AI+์ํ์ ์กฐํฉ
Browse files
app.py
CHANGED
|
@@ -300,9 +300,57 @@ def create_persona_from_image(image, name, location, time_spent, object_type, pu
|
|
| 300 |
contradictions = backend_persona.get("๋ชจ์์ ํน์ฑ", [])
|
| 301 |
contradictions_df = [[contradiction, "๋ณตํฉ์ ๋งค๋ ฅ"] for contradiction in contradictions]
|
| 302 |
|
| 303 |
-
# 127๊ฐ ์ฑ๊ฒฉ ๋ณ์๋ฅผ DataFrame ํํ๋ก ๋ณํ
|
| 304 |
variables = backend_persona.get("์ฑ๊ฒฉ๋ณ์127", {})
|
| 305 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 306 |
|
| 307 |
progress(0.9, desc="์๋ฃ ์ค...")
|
| 308 |
|
|
@@ -442,6 +490,9 @@ def adjust_persona_traits(persona, warmth, competence, extraversion, humor_style
|
|
| 442 |
return None, "์กฐ์ ํ ํ๋ฅด์๋๊ฐ ์์ต๋๋ค.", {}
|
| 443 |
|
| 444 |
try:
|
|
|
|
|
|
|
|
|
|
| 445 |
# ๊น์ ๋ณต์ฌ๋ก ์๋ณธ ๋ณดํธ
|
| 446 |
adjusted_persona = copy.deepcopy(persona)
|
| 447 |
|
|
@@ -460,32 +511,102 @@ def adjust_persona_traits(persona, warmth, competence, extraversion, humor_style
|
|
| 460 |
from modules.persona_generator import PersonalityProfile
|
| 461 |
profile = PersonalityProfile.from_dict(adjusted_persona["์ฑ๊ฒฉํ๋กํ"])
|
| 462 |
|
| 463 |
-
# ์จ๊ธฐ ๊ด๋ จ ๋ณ์๋ค ์กฐ์
|
| 464 |
-
warmth_vars = ["W01_์น์ ํจ", "W02_์น๊ทผํจ", "
|
|
|
|
| 465 |
for var in warmth_vars:
|
| 466 |
-
|
| 467 |
-
profile.variables[var] = max(0, min(100,
|
| 468 |
|
| 469 |
-
# ๋ฅ๋ ฅ ๊ด๋ จ ๋ณ์๋ค ์กฐ์
|
| 470 |
-
competence_vars = ["C01_ํจ์จ์ฑ", "C02_์ง๋ฅ", "
|
|
|
|
|
|
|
|
|
|
| 471 |
for var in competence_vars:
|
| 472 |
-
|
| 473 |
-
profile.variables[var] = max(0, min(100,
|
| 474 |
|
| 475 |
-
# ์ธํฅ์ฑ ๊ด๋ จ ๋ณ์๋ค ์กฐ์
|
| 476 |
-
extraversion_vars = ["E01_์ฌ๊ต์ฑ", "E02_ํ๋์ฑ", "E04_๊ธ์ ์ ์"]
|
| 477 |
for var in extraversion_vars:
|
| 478 |
-
|
| 479 |
-
profile.variables[var] = max(0, min(100,
|
| 480 |
|
| 481 |
-
# ์ ๋จธ ๊ด๋ จ
|
| 482 |
-
humor_vars = ["H01_์ธ์ด์ ํฌ๋น๋", "H02_์ํฉ์ ๋จธ๊ฐ๊ฐ", "
|
| 483 |
-
|
| 484 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 485 |
|
| 486 |
# ์
๋ฐ์ดํธ๋ ํ๋กํ ์ ์ฅ
|
| 487 |
adjusted_persona["์ฑ๊ฒฉํ๋กํ"] = profile.to_dict()
|
| 488 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 489 |
# ์กฐ์ ๋ ์ ๋ณด ํ์
|
| 490 |
adjusted_info = {
|
| 491 |
"์ด๋ฆ": adjusted_persona.get("๊ธฐ๋ณธ์ ๋ณด", {}).get("์ด๋ฆ", "Unknown"),
|
|
@@ -513,6 +634,9 @@ def adjust_persona_traits(persona, warmth, competence, extraversion, humor_style
|
|
| 513 |
"์ธํฅ์ฑ": extraversion
|
| 514 |
}, full_object_info, attractive_flaws)
|
| 515 |
|
|
|
|
|
|
|
|
|
|
| 516 |
adjustment_message = f"""
|
| 517 |
### ๐ญ {persona_name}์ ์ฑ๊ฒฉ์ด ์กฐ์ ๋์์ต๋๋ค!
|
| 518 |
|
|
@@ -523,15 +647,17 @@ def adjust_persona_traits(persona, warmth, competence, extraversion, humor_style
|
|
| 523 |
โข ์ ๋จธ๊ฐ๊ฐ: 75/100 (๊ณ ์ - ๋ชจ๋ ํ๋ฅด์๋๊ฐ ์ ๋จธ๋ฌ์ค!)
|
| 524 |
โข ์ ๋จธ์คํ์ผ: {humor_style}
|
| 525 |
|
| 526 |
-
๐งฌ **๋ฐฑ๊ทธ๋ผ์ด๋**:
|
|
|
|
|
|
|
| 527 |
"""
|
| 528 |
|
| 529 |
-
return adjusted_persona, adjustment_message, adjusted_info
|
| 530 |
|
| 531 |
except Exception as e:
|
| 532 |
import traceback
|
| 533 |
traceback.print_exc()
|
| 534 |
-
return persona, f"์กฐ์ ์ค ์ค๋ฅ ๋ฐ์: {str(e)}", {}
|
| 535 |
|
| 536 |
def finalize_persona(persona):
|
| 537 |
"""ํ๋ฅด์๋ ์ต์ข
ํ์ - ํ๊ฒฝ๋ณ์ API ์ค์ ์ฌ์ฉ"""
|
|
@@ -1570,7 +1696,7 @@ def create_main_interface():
|
|
| 1570 |
adjust_btn.click(
|
| 1571 |
fn=adjust_persona_traits,
|
| 1572 |
inputs=[current_persona, warmth_slider, competence_slider, extraversion_slider, humor_style_radio],
|
| 1573 |
-
outputs=[current_persona, adjustment_result, adjusted_info_output]
|
| 1574 |
).then(
|
| 1575 |
# ๋ฐ์ ํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์
๋ฐ์ดํธ
|
| 1576 |
fn=generate_realtime_preview,
|
|
@@ -1769,6 +1895,94 @@ def generate_realtime_preview(persona, warmth, competence, extraversion, humor_s
|
|
| 1769 |
**๐ ์์ ์ธ์ฌ๋ง:**
|
| 1770 |
{preview}"""
|
| 1771 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1772 |
if __name__ == "__main__":
|
| 1773 |
app = create_main_interface()
|
| 1774 |
app.launch(server_name="0.0.0.0", server_port=7860)
|
|
|
|
| 300 |
contradictions = backend_persona.get("๋ชจ์์ ํน์ฑ", [])
|
| 301 |
contradictions_df = [[contradiction, "๋ณตํฉ์ ๋งค๋ ฅ"] for contradiction in contradictions]
|
| 302 |
|
| 303 |
+
# 127๊ฐ ์ฑ๊ฒฉ ๋ณ์๋ฅผ DataFrame ํํ๋ก ๋ณํ (์นดํ
๊ณ ๋ฆฌ๋ณ ๋ถ๋ฅ)
|
| 304 |
variables = backend_persona.get("์ฑ๊ฒฉ๋ณ์127", {})
|
| 305 |
+
if not variables and "์ฑ๊ฒฉํ๋กํ" in backend_persona:
|
| 306 |
+
# ์ฑ๊ฒฉํ๋กํ์์ ์ง์ ๊ฐ์ ธ์ค๊ธฐ
|
| 307 |
+
variables = backend_persona["์ฑ๊ฒฉํ๋กํ"]["variables"]
|
| 308 |
+
|
| 309 |
+
variables_df = []
|
| 310 |
+
for var, value in variables.items():
|
| 311 |
+
# ์นดํ
๊ณ ๋ฆฌ ๋ถ๋ฅ
|
| 312 |
+
if var.startswith('W'):
|
| 313 |
+
category = f"๐ฅ ์จ๊ธฐ/๋ฐ๋ปํจ ({value})"
|
| 314 |
+
elif var.startswith('C'):
|
| 315 |
+
category = f"๐ช ๋ฅ๋ ฅ/์ญ๋ ({value})"
|
| 316 |
+
elif var.startswith('E'):
|
| 317 |
+
category = f"๐ฃ๏ธ ์ธํฅ์ฑ ({value})"
|
| 318 |
+
elif var.startswith('H'):
|
| 319 |
+
category = f"๐ ์ ๋จธ ({value})"
|
| 320 |
+
elif var.startswith('F'):
|
| 321 |
+
category = f"๐ ๋งค๋ ฅ์ ๊ฒฐํจ ({value})"
|
| 322 |
+
elif var.startswith('P'):
|
| 323 |
+
category = f"๐ญ ์ฑ๊ฒฉํจํด ({value})"
|
| 324 |
+
elif var.startswith('S'):
|
| 325 |
+
category = f"๐จ๏ธ ์ธ์ด์คํ์ผ ({value})"
|
| 326 |
+
elif var.startswith('R'):
|
| 327 |
+
category = f"โค๏ธ ๊ด๊ณ์ฑํฅ ({value})"
|
| 328 |
+
elif var.startswith('D'):
|
| 329 |
+
category = f"๐ฌ ๋ํ์ญํ ({value})"
|
| 330 |
+
elif var.startswith('OBJ'):
|
| 331 |
+
category = f"๐ ์ฌ๋ฌผ์ ์ฒด์ฑ ({value})"
|
| 332 |
+
elif var.startswith('FORM'):
|
| 333 |
+
category = f"โจ ํํํน์ฑ ({value})"
|
| 334 |
+
elif var.startswith('INT'):
|
| 335 |
+
category = f"๐ค ์ํธ์์ฉ ({value})"
|
| 336 |
+
elif var.startswith('U'):
|
| 337 |
+
category = f"๐ ๋ฌธํ์ ํน์ฑ ({value})"
|
| 338 |
+
else:
|
| 339 |
+
category = f"๐ ๊ธฐํ ({value})"
|
| 340 |
+
|
| 341 |
+
# ๊ฐ์ ๋ฐ๋ฅธ ์์ ํ์
|
| 342 |
+
if value >= 80:
|
| 343 |
+
status = "๐ข ๋งค์ฐ ๋์"
|
| 344 |
+
elif value >= 60:
|
| 345 |
+
status = "๐ก ๋์"
|
| 346 |
+
elif value >= 40:
|
| 347 |
+
status = "๐ ๋ณดํต"
|
| 348 |
+
elif value >= 20:
|
| 349 |
+
status = "๐ด ๋ฎ์"
|
| 350 |
+
else:
|
| 351 |
+
status = "โซ ๋งค์ฐ ๋ฎ์"
|
| 352 |
+
|
| 353 |
+
variables_df.append([var, value, category, status])
|
| 354 |
|
| 355 |
progress(0.9, desc="์๋ฃ ์ค...")
|
| 356 |
|
|
|
|
| 490 |
return None, "์กฐ์ ํ ํ๋ฅด์๋๊ฐ ์์ต๋๋ค.", {}
|
| 491 |
|
| 492 |
try:
|
| 493 |
+
# ์๋ณธ ํ๋ฅด์๋ ์ ์ฅ (๋ณํ๋ ๋น๊ต์ฉ)
|
| 494 |
+
original_persona = copy.deepcopy(persona)
|
| 495 |
+
|
| 496 |
# ๊น์ ๋ณต์ฌ๋ก ์๋ณธ ๋ณดํธ
|
| 497 |
adjusted_persona = copy.deepcopy(persona)
|
| 498 |
|
|
|
|
| 511 |
from modules.persona_generator import PersonalityProfile
|
| 512 |
profile = PersonalityProfile.from_dict(adjusted_persona["์ฑ๊ฒฉํ๋กํ"])
|
| 513 |
|
| 514 |
+
# ์จ๊ธฐ ๊ด๋ จ ๋ณ์๋ค ์กฐ์ (10๊ฐ ๋ชจ๋)
|
| 515 |
+
warmth_vars = ["W01_์น์ ํจ", "W02_์น๊ทผํจ", "W03_์ง์ค์ฑ", "W04_์ ๋ขฐ์ฑ", "W05_์์ฉ์ฑ",
|
| 516 |
+
"W06_๊ณต๊ฐ๋ฅ๋ ฅ", "W07_ํฌ์ฉ๋ ฅ", "W08_๊ฒฉ๋ ค์ฑํฅ", "W09_์น๋ฐ๊ฐํํ", "W10_๋ฌด์กฐ๊ฑด์ ์์ฉ"]
|
| 517 |
for var in warmth_vars:
|
| 518 |
+
base_value = warmth + random.randint(-15, 15)
|
| 519 |
+
profile.variables[var] = max(0, min(100, base_value))
|
| 520 |
|
| 521 |
+
# ๋ฅ๋ ฅ ๊ด๋ จ ๋ณ์๋ค ์กฐ์ (16๊ฐ ๋ชจ๋)
|
| 522 |
+
competence_vars = ["C01_ํจ์จ์ฑ", "C02_์ง๋ฅ", "C03_์ฑ
์๊ฐ", "C04_์ ๋ขฐ๋", "C05_์ ํ์ฑ",
|
| 523 |
+
"C06_์ ๋ฌธ์ฑ", "C07_ํ์ ์ฑ", "C08_์ ์๋ ฅ", "C09_์คํ๋ ฅ", "C10_๋ถ์๋ ฅ",
|
| 524 |
+
"C11_์์ฌ๊ฒฐ์ ๋ ฅ", "C12_๋ฌธ์ ํด๊ฒฐ๋ ฅ", "C13_๊ณํ์๋ฆฝ๋ฅ๋ ฅ", "C14_์๊ฐ๊ด๋ฆฌ๋ฅ๋ ฅ",
|
| 525 |
+
"C15_ํ์ง๊ด๋ฆฌ๋ฅ๋ ฅ", "C16_์ฑ๊ณผ๋ฌ์ฑ๋ ฅ"]
|
| 526 |
for var in competence_vars:
|
| 527 |
+
base_value = competence + random.randint(-15, 15)
|
| 528 |
+
profile.variables[var] = max(0, min(100, base_value))
|
| 529 |
|
| 530 |
+
# ์ธํฅ์ฑ ๊ด๋ จ ๋ณ์๋ค ์กฐ์ (6๊ฐ ๋ชจ๋)
|
| 531 |
+
extraversion_vars = ["E01_์ฌ๊ต์ฑ", "E02_ํ๋์ฑ", "E03_์ ๊ทน์ฑ", "E04_๊ธ์ ์ ์", "E05_์๊ทน์ถ๊ตฌ์ฑ", "E06_์ฃผ๋์ฑ"]
|
| 532 |
for var in extraversion_vars:
|
| 533 |
+
base_value = extraversion + random.randint(-15, 15)
|
| 534 |
+
profile.variables[var] = max(0, min(100, base_value))
|
| 535 |
|
| 536 |
+
# ์ ๋จธ ๊ด๋ จ ๋ณ์๋ค ์กฐ์ (10๊ฐ ๋ชจ๋, ์ ๋จธ์คํ์ผ์ ๋ฐ๋ผ)
|
| 537 |
+
humor_vars = ["H01_์ธ์ด์ ํฌ๋น๋", "H02_์ํฉ์ ๋จธ๊ฐ๊ฐ", "H03_์๊ธฐ์กฐ๋กฑ๋ฅ๋ ฅ", "H04_์ํธ๊ฐ๊ฐ",
|
| 538 |
+
"H05_๋๋ด์์ฉ๋", "H06_๊ด์ฐฐ์ ๋จธ๋ฅ๋ ฅ", "H07_์ํฉ์ฌ์น", "H08_์ ๋จธํ์ด๋ฐ๊ฐ",
|
| 539 |
+
"H09_์ ๋จธ์คํ์ผ๋ค์์ฑ", "H10_์ ๋จธ์ ์ ์ฑ"]
|
| 540 |
+
|
| 541 |
+
# ์ ๋จธ์คํ์ผ์ ๋ฐ๋ฅธ ์ฐจ๋ณํ
|
| 542 |
+
if humor_style == "๋ฐ๋ปํ":
|
| 543 |
+
humor_bonus = [10, 10, 5, 8, 12, 8, 10, 10, 8, 12] # ๋ฐ๋ปํจ ๊ฐํ
|
| 544 |
+
elif humor_style == "์ฌ์น์๋":
|
| 545 |
+
humor_bonus = [15, 8, 8, 15, 8, 12, 15, 12, 12, 10] # ์ฌ์น/์ํธ ๊ฐํ
|
| 546 |
+
elif humor_style == "๋๋ผ์ด":
|
| 547 |
+
humor_bonus = [12, 6, 10, 12, 6, 15, 8, 8, 10, 8] # ๊ด์ฐฐํ/๋๋ผ์ด ๊ฐํ
|
| 548 |
+
else: # ๊ธฐ๋ณธ๊ฐ
|
| 549 |
+
humor_bonus = [10, 10, 8, 10, 10, 10, 10, 10, 10, 10]
|
| 550 |
+
|
| 551 |
+
for i, var in enumerate(humor_vars):
|
| 552 |
+
base_value = 75 + humor_bonus[i] + random.randint(-5, 5) # ์ ๋จธ๋ ํญ์ ๋๊ฒ
|
| 553 |
+
profile.variables[var] = max(50, min(100, base_value))
|
| 554 |
+
|
| 555 |
+
# ์
๋ฐ์ดํธ๋ ์ฑ๊ฒฉ๋ณ์127๋ ๋์์ ์ ์ฅ
|
| 556 |
+
adjusted_persona["์ฑ๊ฒฉ๋ณ์127"] = profile.variables.copy()
|
| 557 |
|
| 558 |
# ์
๋ฐ์ดํธ๋ ํ๋กํ ์ ์ฅ
|
| 559 |
adjusted_persona["์ฑ๊ฒฉํ๋กํ"] = profile.to_dict()
|
| 560 |
|
| 561 |
+
# ์กฐ์ ๋ ๋ณ์๋ค์ DataFrame์ผ๋ก ์์ฑ
|
| 562 |
+
variables_df = []
|
| 563 |
+
if "์ฑ๊ฒฉ๋ณ์127" in adjusted_persona:
|
| 564 |
+
variables = adjusted_persona["์ฑ๊ฒฉ๋ณ์127"]
|
| 565 |
+
for var, value in variables.items():
|
| 566 |
+
# ์นดํ
๊ณ ๋ฆฌ ๋ถ๋ฅ
|
| 567 |
+
if var.startswith('W'):
|
| 568 |
+
category = f"๐ฅ ์จ๊ธฐ/๋ฐ๋ปํจ ({value})"
|
| 569 |
+
elif var.startswith('C'):
|
| 570 |
+
category = f"๐ช ๋ฅ๋ ฅ/์ญ๋ ({value})"
|
| 571 |
+
elif var.startswith('E'):
|
| 572 |
+
category = f"๐ฃ๏ธ ์ธํฅ์ฑ ({value})"
|
| 573 |
+
elif var.startswith('H'):
|
| 574 |
+
category = f"๐ ์ ๋จธ ({value})"
|
| 575 |
+
elif var.startswith('F'):
|
| 576 |
+
category = f"๐ ๋งค๋ ฅ์ ๊ฒฐํจ ({value})"
|
| 577 |
+
elif var.startswith('P'):
|
| 578 |
+
category = f"๐ญ ์ฑ๊ฒฉํจํด ({value})"
|
| 579 |
+
elif var.startswith('S'):
|
| 580 |
+
category = f"๐จ๏ธ ์ธ์ด์คํ์ผ ({value})"
|
| 581 |
+
elif var.startswith('R'):
|
| 582 |
+
category = f"โค๏ธ ๊ด๊ณ์ฑํฅ ({value})"
|
| 583 |
+
elif var.startswith('D'):
|
| 584 |
+
category = f"๐ฌ ๋ํ์ญํ ({value})"
|
| 585 |
+
elif var.startswith('OBJ'):
|
| 586 |
+
category = f"๐ ์ฌ๋ฌผ์ ์ฒด์ฑ ({value})"
|
| 587 |
+
elif var.startswith('FORM'):
|
| 588 |
+
category = f"โจ ํํํน์ฑ ({value})"
|
| 589 |
+
elif var.startswith('INT'):
|
| 590 |
+
category = f"๐ค ์ํธ์์ฉ ({value})"
|
| 591 |
+
elif var.startswith('U'):
|
| 592 |
+
category = f"๐ ๋ฌธํ์ ํน์ฑ ({value})"
|
| 593 |
+
else:
|
| 594 |
+
category = f"๐ ๊ธฐํ ({value})"
|
| 595 |
+
|
| 596 |
+
# ๊ฐ์ ๋ฐ๋ฅธ ์์ ํ์
|
| 597 |
+
if value >= 80:
|
| 598 |
+
status = "๐ข ๋งค์ฐ ๋์"
|
| 599 |
+
elif value >= 60:
|
| 600 |
+
status = "๐ก ๋์"
|
| 601 |
+
elif value >= 40:
|
| 602 |
+
status = "๐ ๋ณดํต"
|
| 603 |
+
elif value >= 20:
|
| 604 |
+
status = "๐ด ๋ฎ์"
|
| 605 |
+
else:
|
| 606 |
+
status = "โซ ๋งค์ฐ ๋ฎ์"
|
| 607 |
+
|
| 608 |
+
variables_df.append([var, value, category, status])
|
| 609 |
+
|
| 610 |
# ์กฐ์ ๋ ์ ๋ณด ํ์
|
| 611 |
adjusted_info = {
|
| 612 |
"์ด๋ฆ": adjusted_persona.get("๊ธฐ๋ณธ์ ๋ณด", {}).get("์ด๋ฆ", "Unknown"),
|
|
|
|
| 634 |
"์ธํฅ์ฑ": extraversion
|
| 635 |
}, full_object_info, attractive_flaws)
|
| 636 |
|
| 637 |
+
# ๋ณํ๋ ๋ถ์ ์์ฑ
|
| 638 |
+
change_analysis = show_variable_changes(original_persona, adjusted_persona)
|
| 639 |
+
|
| 640 |
adjustment_message = f"""
|
| 641 |
### ๐ญ {persona_name}์ ์ฑ๊ฒฉ์ด ์กฐ์ ๋์์ต๋๋ค!
|
| 642 |
|
|
|
|
| 647 |
โข ์ ๋จธ๊ฐ๊ฐ: 75/100 (๊ณ ์ - ๋ชจ๋ ํ๋ฅด์๋๊ฐ ์ ๋จธ๋ฌ์ค!)
|
| 648 |
โข ์ ๋จธ์คํ์ผ: {humor_style}
|
| 649 |
|
| 650 |
+
๐งฌ **๋ฐฑ๊ทธ๋ผ์ด๋**: 152๊ฐ ์ธ๋ถ ๋ณ์๊ฐ ์ด ์ค์ ์ ๋ง์ถฐ ์๋ ์กฐ์ ๋์์ต๋๋ค.
|
| 651 |
+
|
| 652 |
+
{change_analysis}
|
| 653 |
"""
|
| 654 |
|
| 655 |
+
return adjusted_persona, adjustment_message, adjusted_info, variables_df
|
| 656 |
|
| 657 |
except Exception as e:
|
| 658 |
import traceback
|
| 659 |
traceback.print_exc()
|
| 660 |
+
return persona, f"์กฐ์ ์ค ์ค๋ฅ ๋ฐ์: {str(e)}", {}, []
|
| 661 |
|
| 662 |
def finalize_persona(persona):
|
| 663 |
"""ํ๋ฅด์๋ ์ต์ข
ํ์ - ํ๊ฒฝ๋ณ์ API ์ค์ ์ฌ์ฉ"""
|
|
|
|
| 1696 |
adjust_btn.click(
|
| 1697 |
fn=adjust_persona_traits,
|
| 1698 |
inputs=[current_persona, warmth_slider, competence_slider, extraversion_slider, humor_style_radio],
|
| 1699 |
+
outputs=[current_persona, adjustment_result, adjusted_info_output, personality_variables_output]
|
| 1700 |
).then(
|
| 1701 |
# ๋ฐ์ ํ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์
๋ฐ์ดํธ
|
| 1702 |
fn=generate_realtime_preview,
|
|
|
|
| 1895 |
**๐ ์์ ์ธ์ฌ๋ง:**
|
| 1896 |
{preview}"""
|
| 1897 |
|
| 1898 |
+
def show_variable_changes(original_persona, adjusted_persona):
|
| 1899 |
+
"""๋ณ์ ๋ณํ๋์ ์๊ฐํํ์ฌ ํ์"""
|
| 1900 |
+
if not original_persona or not adjusted_persona:
|
| 1901 |
+
return "๋ณํ๋์ ๋น๊ตํ ํ๋ฅด์๋๊ฐ ์์ต๋๋ค."
|
| 1902 |
+
|
| 1903 |
+
# ์๋ณธ๊ณผ ์กฐ์ ๋ ๋ณ์๋ค ๊ฐ์ ธ์ค๊ธฐ
|
| 1904 |
+
original_vars = original_persona.get("์ฑ๊ฒฉ๋ณ์127", {})
|
| 1905 |
+
if not original_vars and "์ฑ๊ฒฉํ๋กํ" in original_persona:
|
| 1906 |
+
original_vars = original_persona["์ฑ๊ฒฉํ๋กํ"]["variables"]
|
| 1907 |
+
|
| 1908 |
+
adjusted_vars = adjusted_persona.get("์ฑ๊ฒฉ๋ณ์127", {})
|
| 1909 |
+
if not adjusted_vars and "์ฑ๊ฒฉํ๋กํ" in adjusted_persona:
|
| 1910 |
+
adjusted_vars = adjusted_persona["์ฑ๊ฒฉํ๋กํ"]["variables"]
|
| 1911 |
+
|
| 1912 |
+
if not original_vars or not adjusted_vars:
|
| 1913 |
+
return "๋ณ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค."
|
| 1914 |
+
|
| 1915 |
+
# ๋ณํ๋ ๊ณ์ฐ
|
| 1916 |
+
changes = []
|
| 1917 |
+
significant_changes = [] # ๋ณํ๋์ด 10 ์ด์์ธ ํญ๋ชฉ๋ค
|
| 1918 |
+
|
| 1919 |
+
for var in original_vars:
|
| 1920 |
+
if var in adjusted_vars:
|
| 1921 |
+
original_val = original_vars[var]
|
| 1922 |
+
adjusted_val = adjusted_vars[var]
|
| 1923 |
+
change = adjusted_val - original_val
|
| 1924 |
+
|
| 1925 |
+
changes.append((var, original_val, adjusted_val, change))
|
| 1926 |
+
|
| 1927 |
+
if abs(change) >= 10: # ๋ณํ๋์ด 10 ์ด์์ธ ๊ฒ๋ง
|
| 1928 |
+
significant_changes.append((var, original_val, adjusted_val, change))
|
| 1929 |
+
|
| 1930 |
+
# ์นดํ
๊ณ ๋ฆฌ๋ณ ํ๊ท ๋ณํ๋ ๊ณ์ฐ
|
| 1931 |
+
category_changes = {}
|
| 1932 |
+
for var, orig, adj, change in changes:
|
| 1933 |
+
if var.startswith('W'):
|
| 1934 |
+
category = "์จ๊ธฐ"
|
| 1935 |
+
elif var.startswith('C'):
|
| 1936 |
+
category = "๋ฅ๋ ฅ"
|
| 1937 |
+
elif var.startswith('E'):
|
| 1938 |
+
category = "์ธํฅ์ฑ"
|
| 1939 |
+
elif var.startswith('H'):
|
| 1940 |
+
category = "์ ๋จธ"
|
| 1941 |
+
else:
|
| 1942 |
+
category = "๊ธฐํ"
|
| 1943 |
+
|
| 1944 |
+
if category not in category_changes:
|
| 1945 |
+
category_changes[category] = []
|
| 1946 |
+
category_changes[category].append(change)
|
| 1947 |
+
|
| 1948 |
+
# ํ๊ท ๋ณํ๋ ๊ณ์ฐ
|
| 1949 |
+
avg_changes = {}
|
| 1950 |
+
for category, change_list in category_changes.items():
|
| 1951 |
+
avg_changes[category] = sum(change_list) / len(change_list)
|
| 1952 |
+
|
| 1953 |
+
# ๊ฒฐ๊ณผ ํฌ๋งทํ
|
| 1954 |
+
result = "### ๐ ์ฑ๊ฒฉ ๋ณ์ ๋ณํ๋ ๋ถ์\n\n"
|
| 1955 |
+
|
| 1956 |
+
# ์นดํ
๊ณ ๋ฆฌ๋ณ ํ๊ท ๋ณํ๋
|
| 1957 |
+
result += "**๐ ์นดํ
๊ณ ๋ฆฌ๋ณ ํ๊ท ๋ณํ๋:**\n"
|
| 1958 |
+
for category, avg_change in avg_changes.items():
|
| 1959 |
+
if avg_change > 5:
|
| 1960 |
+
trend = "โฌ๏ธ ์์น"
|
| 1961 |
+
elif avg_change < -5:
|
| 1962 |
+
trend = "โฌ๏ธ ํ๋ฝ"
|
| 1963 |
+
else:
|
| 1964 |
+
trend = "โก๏ธ ์ ์ง"
|
| 1965 |
+
result += f"- {category}: {avg_change:+.1f} {trend}\n"
|
| 1966 |
+
|
| 1967 |
+
# ์ฃผ์ ๋ณํ๋ (10 ์ด์)
|
| 1968 |
+
if significant_changes:
|
| 1969 |
+
result += f"\n**๐ฏ ์ฃผ์ ๋ณํ ํญ๋ชฉ ({len(significant_changes)}๊ฐ):**\n"
|
| 1970 |
+
for var, orig, adj, change in sorted(significant_changes, key=lambda x: abs(x[3]), reverse=True)[:10]:
|
| 1971 |
+
if change > 0:
|
| 1972 |
+
arrow = "โฌ๏ธ"
|
| 1973 |
+
color = "๐ข"
|
| 1974 |
+
else:
|
| 1975 |
+
arrow = "โฌ๏ธ"
|
| 1976 |
+
color = "๐ด"
|
| 1977 |
+
|
| 1978 |
+
result += f"- {var}: {orig} โ {adj} ({change:+d}) {arrow} {color}\n"
|
| 1979 |
+
|
| 1980 |
+
result += f"\n**๐ ์ด ๋ณ์ ๊ฐ์:** {len(changes)}๊ฐ\n"
|
| 1981 |
+
result += f"**๐ ๋ณํ๋ ๋ณ์:** {len([c for c in changes if c[3] != 0])}๊ฐ\n"
|
| 1982 |
+
result += f"**๐ ์ฃผ์ ๋ณํ:** {len(significant_changes)}๊ฐ (๋ณํ๋ ยฑ10 ์ด์)\n"
|
| 1983 |
+
|
| 1984 |
+
return result
|
| 1985 |
+
|
| 1986 |
if __name__ == "__main__":
|
| 1987 |
app = create_main_interface()
|
| 1988 |
app.launch(server_name="0.0.0.0", server_port=7860)
|