haepada commited on
Commit
c6fbbab
ยท
1 Parent(s): bfa6f05

๐ŸŽญ ์™„์„ฑ: AI ๊ธฐ๋ฐ˜ ๋™์  ๋งค๋ ฅ์  ๊ฒฐํ•จ/๋ชจ์ˆœ ์ƒ์„ฑ ์‹œ์Šคํ…œ - ์„ฑ๊ฒฉ ์กฐ์ • ์‹œ 152๊ฐœ ๋ณ€์ˆ˜ + ๋งค๋ ฅ์  ๊ฒฐํ•จ + ๋ชจ์ˆœ์  ํŠน์„ฑ ๋ชจ๋‘ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์žฌ์ƒ์„ฑ

Browse files
Files changed (1) hide show
  1. app.py +78 -4
app.py CHANGED
@@ -557,6 +557,41 @@ def adjust_persona_traits(persona, warmth, competence, extraversion, humor_style
557
 
558
  # ์—…๋ฐ์ดํŠธ๋œ ํ”„๋กœํ•„ ์ €์žฅ
559
  adjusted_persona["์„ฑ๊ฒฉํ”„๋กœํ•„"] = profile.to_dict()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
560
 
561
  # ์กฐ์ •๋œ ๋ณ€์ˆ˜๋“ค์„ DataFrame์œผ๋กœ ์ƒ์„ฑ
562
  variables_df = []
@@ -637,6 +672,27 @@ def adjust_persona_traits(persona, warmth, competence, extraversion, humor_style
637
  # ๋ณ€ํ™”๋Ÿ‰ ๋ถ„์„ ์ƒ์„ฑ
638
  change_analysis = show_variable_changes(original_persona, adjusted_persona)
639
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
640
  adjustment_message = f"""
641
  ### ๐ŸŽญ {persona_name}์˜ ์„ฑ๊ฒฉ์ด ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค!
642
 
@@ -649,15 +705,33 @@ def adjust_persona_traits(persona, warmth, competence, extraversion, 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 ์„ค์ • ์‚ฌ์šฉ"""
@@ -1744,7 +1818,7 @@ def create_main_interface():
1744
  adjust_btn.click(
1745
  fn=adjust_persona_traits,
1746
  inputs=[current_persona, warmth_slider, competence_slider, extraversion_slider, humor_style_radio],
1747
- outputs=[current_persona, adjustment_result, adjusted_info_output, personality_variables_output]
1748
  ).then(
1749
  # ๋ฐ˜์˜ ํ›„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋„ ์—…๋ฐ์ดํŠธ
1750
  fn=generate_realtime_preview,
 
557
 
558
  # ์—…๋ฐ์ดํŠธ๋œ ํ”„๋กœํ•„ ์ €์žฅ
559
  adjusted_persona["์„ฑ๊ฒฉํ”„๋กœํ•„"] = profile.to_dict()
560
+
561
+ # ๐Ÿ†• ๋ณ€๊ฒฝ๋œ ๋ณ€์ˆ˜ ๊ฐ’ ๊ธฐ๋ฐ˜์œผ๋กœ AI๊ฐ€ ์ƒˆ๋กœ์šด ๋งค๋ ฅ์  ๊ฒฐํ•จ๊ณผ ๋ชจ์ˆœ์  ํŠน์„ฑ ์ƒ์„ฑ
562
+ try:
563
+ global persona_generator
564
+ if persona_generator and hasattr(persona_generator, 'api_key') and persona_generator.api_key:
565
+ # ์‚ฌ๋ฌผ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
566
+ object_analysis = {
567
+ "object_type": adjusted_persona.get("๊ธฐ๋ณธ์ •๋ณด", {}).get("์œ ํ˜•", "์‚ฌ๋ฌผ"),
568
+ "material": adjusted_persona.get("๊ธฐ๋ณธ์ •๋ณด", {}).get("์žฌ์งˆ", "์•Œ ์ˆ˜ ์—†๋Š” ์žฌ์งˆ"),
569
+ "description": adjusted_persona.get("๊ธฐ๋ณธ์ •๋ณด", {}).get("์„ค๋ช…", "")
570
+ }
571
+
572
+ # AI ๊ธฐ๋ฐ˜ ๋งค๋ ฅ์  ๊ฒฐํ•จ ์ƒ์„ฑ (๋ณ€๊ฒฝ๋œ ์„ฑ๊ฒฉ ๋ณ€์ˆ˜ ๋ฐ˜์˜)
573
+ new_flaws = persona_generator.generate_attractive_flaws(
574
+ object_analysis,
575
+ adjusted_persona["์„ฑ๊ฒฉํŠน์„ฑ"]
576
+ )
577
+
578
+ # AI ๊ธฐ๋ฐ˜ ๋ชจ์ˆœ์  ํŠน์„ฑ ์ƒ์„ฑ (๋ณ€๊ฒฝ๋œ ์„ฑ๊ฒฉ ๋ณ€์ˆ˜ ๋ฐ˜์˜)
579
+ new_contradictions = persona_generator.generate_contradictions(
580
+ object_analysis,
581
+ adjusted_persona["์„ฑ๊ฒฉํŠน์„ฑ"]
582
+ )
583
+
584
+ # ์—…๋ฐ์ดํŠธ
585
+ if new_flaws:
586
+ adjusted_persona["๋งค๋ ฅ์ ๊ฒฐํ•จ"] = new_flaws
587
+ if new_contradictions:
588
+ adjusted_persona["๋ชจ์ˆœ์ ํŠน์„ฑ"] = new_contradictions
589
+
590
+ print(f"๐ŸŽญ AI๊ฐ€ ์ƒˆ๋กœ์šด ์„ฑ๊ฒฉ์— ๋งž๋Š” ๊ฒฐํ•จ/๋ชจ์ˆœ ์ƒ์„ฑ: {len(new_flaws)}๊ฐœ ๊ฒฐํ•จ, {len(new_contradictions)}๊ฐœ ๋ชจ์ˆœ")
591
+
592
+ except Exception as ai_error:
593
+ print(f"โš ๏ธ AI ๊ฒฐํ•จ/๋ชจ์ˆœ ์ƒ์„ฑ ์‹คํŒจ: {ai_error}")
594
+ # ์‹คํŒจํ•ด๋„ ๊ธฐ๋ณธ ์กฐ์ •์€ ๊ณ„์† ์ง„ํ–‰
595
 
596
  # ์กฐ์ •๋œ ๋ณ€์ˆ˜๋“ค์„ DataFrame์œผ๋กœ ์ƒ์„ฑ
597
  variables_df = []
 
672
  # ๋ณ€ํ™”๋Ÿ‰ ๋ถ„์„ ์ƒ์„ฑ
673
  change_analysis = show_variable_changes(original_persona, adjusted_persona)
674
 
675
+ # ๋ณ€ํ™”๋œ ๋งค๋ ฅ์  ๊ฒฐํ•จ๊ณผ ๋ชจ์ˆœ์  ํŠน์„ฑ ๋ถ„์„
676
+ flaws_changed = len(adjusted_persona.get("๋งค๋ ฅ์ ๊ฒฐํ•จ", [])) != len(original_persona.get("๋งค๋ ฅ์ ๊ฒฐํ•จ", []))
677
+ contradictions_changed = len(adjusted_persona.get("๋ชจ์ˆœ์ ํŠน์„ฑ", [])) != len(original_persona.get("๋ชจ์ˆœ์ ํŠน์„ฑ", []))
678
+
679
+ additional_changes = ""
680
+ if flaws_changed or contradictions_changed:
681
+ additional_changes = "\n\n๐ŸŽญ **AI๊ฐ€ ์ƒˆ๋กœ ์ƒ์„ฑํ•œ ๋‚ด์šฉ:**\n"
682
+ if flaws_changed:
683
+ new_flaws = adjusted_persona.get("๋งค๋ ฅ์ ๊ฒฐํ•จ", [])
684
+ additional_changes += f"โ€ข ๋งค๋ ฅ์  ๊ฒฐํ•จ: {len(new_flaws)}๊ฐœ ์ƒˆ๋กœ ์ƒ์„ฑ๋จ\n"
685
+ for i, flaw in enumerate(new_flaws[:2], 1): # ์ฒ˜์Œ 2๊ฐœ๋งŒ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
686
+ additional_changes += f" {i}. {flaw}\n"
687
+ if len(new_flaws) > 2:
688
+ additional_changes += f" ... ์™ธ {len(new_flaws) - 2}๊ฐœ\n"
689
+
690
+ if contradictions_changed:
691
+ new_contradictions = adjusted_persona.get("๋ชจ์ˆœ์ ํŠน์„ฑ", [])
692
+ additional_changes += f"โ€ข ๋ชจ์ˆœ์  ํŠน์„ฑ: {len(new_contradictions)}๊ฐœ ์ƒˆ๋กœ ์ƒ์„ฑ๋จ\n"
693
+ for i, contradiction in enumerate(new_contradictions, 1):
694
+ additional_changes += f" {i}. {contradiction}\n"
695
+
696
  adjustment_message = f"""
697
  ### ๐ŸŽญ {persona_name}์˜ ์„ฑ๊ฒฉ์ด ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค!
698
 
 
705
 
706
  ๐Ÿงฌ **๋ฐฑ๊ทธ๋ผ์šด๋“œ**: 152๊ฐœ ์„ธ๋ถ€ ๋ณ€์ˆ˜๊ฐ€ ์ด ์„ค์ •์— ๋งž์ถฐ ์ž๋™ ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
707
 
708
+ {change_analysis}{additional_changes}
709
  """
710
 
711
+ # ์กฐ์ •๋œ ๋งค๋ ฅ์  ๊ฒฐํ•จ๊ณผ ๋ชจ์ˆœ์  ํŠน์„ฑ์„ DataFrame์œผ๋กœ ์ƒ์„ฑ
712
+ flaws_df = []
713
+ if "๋งค๋ ฅ์ ๊ฒฐํ•จ" in adjusted_persona:
714
+ flaws = adjusted_persona["๋งค๋ ฅ์ ๊ฒฐํ•จ"]
715
+ for i, flaw in enumerate(flaws, 1):
716
+ # ์‚ฌ๋ฌผ ํŠน์„ฑ vs ์„ฑ๊ฒฉ์  ํŠน์„ฑ ๊ตฌ๋ถ„
717
+ if any(keyword in flaw for keyword in ["๋จผ์ง€", "ํ–‡๋ณ•", "์ƒ‰์ด", "์ถฉ๊ฒฉ", "์Šต๋„", "๋ƒ„์ƒˆ", "๋ชจ์„œ๋ฆฌ", "๋ฌด๊ฒŒ", "ํฌ๊ธฐ"]):
718
+ flaw_type = "์‚ฌ๋ฌผ ํŠน์„ฑ ๊ธฐ๋ฐ˜"
719
+ else:
720
+ flaw_type = "์„ฑ๊ฒฉ์  ํŠน์„ฑ"
721
+ flaws_df.append([f"{i}. {flaw}", flaw_type])
722
+
723
+ contradictions_df = []
724
+ if "๋ชจ์ˆœ์ ํŠน์„ฑ" in adjusted_persona:
725
+ contradictions = adjusted_persona["๋ชจ์ˆœ์ ํŠน์„ฑ"]
726
+ for i, contradiction in enumerate(contradictions, 1):
727
+ contradictions_df.append([f"{i}. {contradiction}", "๋ณตํ•ฉ์  ๋งค๋ ฅ"])
728
+
729
+ return adjusted_persona, adjustment_message, adjusted_info, variables_df, flaws_df, contradictions_df
730
 
731
  except Exception as e:
732
  import traceback
733
  traceback.print_exc()
734
+ return persona, f"์กฐ์ • ์ค‘ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {str(e)}", {}, [], [], []
735
 
736
  def finalize_persona(persona):
737
  """ํŽ˜๋ฅด์†Œ๋‚˜ ์ตœ์ข… ํ™•์ • - ํ™˜๊ฒฝ๋ณ€์ˆ˜ API ์„ค์ • ์‚ฌ์šฉ"""
 
1818
  adjust_btn.click(
1819
  fn=adjust_persona_traits,
1820
  inputs=[current_persona, warmth_slider, competence_slider, extraversion_slider, humor_style_radio],
1821
+ outputs=[current_persona, adjustment_result, adjusted_info_output, personality_variables_output, attractive_flaws_output, contradictions_output]
1822
  ).then(
1823
  # ๋ฐ˜์˜ ํ›„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋„ ์—…๋ฐ์ดํŠธ
1824
  fn=generate_realtime_preview,