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

๐ŸŽฏ ์™„์„ฑ: ์‚ฌ๋ฌผ ํŠน์„ฑ ๋ฐ˜์˜ ์œ ๋™์  ๊ฒฐํ•จ/๋ชจ์ˆœ ์ƒ์„ฑ ์‹œ์Šคํ…œ - ์žฌ์งˆ๋ณ„/์œ ํ˜•๋ณ„/์šฉ๋„๋ณ„ ๊ณ ์œ  ๊ฑฑ์ •๊ฑฐ๋ฆฌ์™€ ์„ฑ๊ฒฉ ํŠน์„ฑ ์กฐํ•ฉ์œผ๋กœ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฐœ์„ฑ ์ฐฝ์กฐ

Browse files
Files changed (1) hide show
  1. app.py +284 -30
app.py CHANGED
@@ -558,39 +558,22 @@ def adjust_persona_traits(persona, warmth, competence, extraversion, humor_style
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์œผ๋กœ ์ƒ์„ฑ
@@ -2105,6 +2088,277 @@ def show_variable_changes(original_persona, adjusted_persona):
2105
 
2106
  return result
2107
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2108
  if __name__ == "__main__":
2109
  app = create_main_interface()
2110
  app.launch(server_name="0.0.0.0", server_port=7860)
 
558
  # ์—…๋ฐ์ดํŠธ๋œ ํ”„๋กœํ•„ ์ €์žฅ
559
  adjusted_persona["์„ฑ๊ฒฉํ”„๋กœํ•„"] = profile.to_dict()
560
 
561
+ # ๐ŸŽฏ ์„ฑ๊ฒฉ ํŠน์„ฑ๊ณผ ์™„์ „ํžˆ ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋งค๋ ฅ์  ๊ฒฐํ•จ๊ณผ ๋ชจ์ˆœ์  ํŠน์„ฑ ์ƒ์„ฑ
562
  try:
563
+ object_info = adjusted_persona.get("๊ธฐ๋ณธ์ •๋ณด", {})
564
+ new_flaws, new_contradictions = generate_personality_consistent_flaws_and_contradictions(
565
+ object_info,
566
+ adjusted_persona["์„ฑ๊ฒฉํŠน์„ฑ"]
567
+ )
568
+
569
+ # ์—…๋ฐ์ดํŠธ
570
+ adjusted_persona["๋งค๋ ฅ์ ๊ฒฐํ•จ"] = new_flaws
571
+ adjusted_persona["๋ชจ์ˆœ์ ํŠน์„ฑ"] = new_contradictions
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
572
 
573
+ print(f"๐ŸŽญ ์„ฑ๊ฒฉ์— ์™„์ „ํžˆ ์ผ์น˜ํ•˜๋Š” ๊ฒฐํ•จ/๋ชจ์ˆœ ์ƒ์„ฑ: {len(new_flaws)}๊ฐœ ๊ฒฐํ•จ, {len(new_contradictions)}๊ฐœ ๋ชจ์ˆœ")
574
 
575
+ except Exception as generation_error:
576
+ print(f"โš ๏ธ ์„ฑ๊ฒฉ ์ผ๊ด€์„ฑ ๊ฒฐํ•จ/๋ชจ์ˆœ ์ƒ์„ฑ ์‹คํŒจ: {generation_error}")
577
  # ์‹คํŒจํ•ด๋„ ๊ธฐ๋ณธ ์กฐ์ •์€ ๊ณ„์† ์ง„ํ–‰
578
 
579
  # ์กฐ์ •๋œ ๋ณ€์ˆ˜๋“ค์„ DataFrame์œผ๋กœ ์ƒ์„ฑ
 
2088
 
2089
  return result
2090
 
2091
+ def generate_personality_consistent_flaws_and_contradictions(object_info, personality_traits):
2092
+ """์‚ฌ๋ฌผ ํŠน์„ฑ๊ณผ ์„ฑ๊ฒฉ์„ ์กฐํ•ฉํ•œ ์œ ๋™์  ๋งค๋ ฅ์  ๊ฒฐํ•จ๊ณผ ๋ชจ์ˆœ์  ํŠน์„ฑ ์ƒ์„ฑ"""
2093
+ warmth = personality_traits.get("์˜จ๊ธฐ", 50)
2094
+ competence = personality_traits.get("๋Šฅ๋ ฅ", 50)
2095
+ extraversion = personality_traits.get("์™ธํ–ฅ์„ฑ", 50)
2096
+ humor_style = personality_traits.get("์œ ๋จธ์Šคํƒ€์ผ", "๋”ฐ๋œปํ•œ ์œ ๋จธ๋Ÿฌ์Šค")
2097
+
2098
+ # ์‚ฌ๋ฌผ์˜ ๋ฌผ๋ฆฌ์  ํŠน์„ฑ ์ถ”์ถœ
2099
+ object_type = object_info.get("์œ ํ˜•", "์‚ฌ๋ฌผ").lower()
2100
+ material = object_info.get("์žฌ์งˆ", "").lower()
2101
+ purpose = object_info.get("์šฉ๋„", "").lower()
2102
+
2103
+ # ์‚ฌ๋ฌผ๋ณ„ ๊ณ ์œ  ๊ฑฑ์ •๊ฑฐ๋ฆฌ/ํŠน์„ฑ ์ •์˜
2104
+ object_specific_concerns = get_object_specific_concerns(object_type, material, purpose)
2105
+
2106
+ # ๐Ÿ”ฅ ์˜จ๊ธฐ ๊ธฐ๋ฐ˜ ๋งค๋ ฅ์  ๊ฒฐํ•จ
2107
+ warmth_flaws = []
2108
+ if warmth >= 80: # ๋งค์šฐ ๋”ฐ๋œปํ•จ
2109
+ warmth_flaws = [
2110
+ "๋„ˆ๋ฌด ์นœ์ ˆํ•ด์„œ 'No'๋ผ๊ณ  ๋งํ•˜๊ธฐ ์–ด๋ ค์›Œํ•จ",
2111
+ "๋ชจ๋“  ์‚ฌ๋žŒ์„ ๋„์šฐ๋ ค๋‹ค ์ž์‹ ์ด ์ง€์ณ๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ",
2112
+ "์ƒ๋Œ€๋ฐฉ์ด ์Šฌํ”„๋ฉด ๋ฉ๋‹ฌ์•„ ๋งˆ์Œ ์•„ํŒŒํ•˜๋ฉฐ ๊ฐ™์ด ์šฐ์šธํ•ด์ง",
2113
+ "์นญ์ฐฌ๋ฐ›์œผ๋ฉด ์–ผ๊ตด์ด ๋นจ๊ฐ›๊ฒŒ ๋‹ฌ์•„์˜ค๋ฅด๋ฉฐ ๋‹นํ™ฉํ•จ"
2114
+ ]
2115
+ elif warmth >= 60: # ๋”ฐ๋œปํ•จ
2116
+ warmth_flaws = [
2117
+ "์ง„์‹ฌ์œผ๋กœ ๊ฑฑ์ •ํ•ด์ฃผ์ง€๋งŒ ๋•Œ๋กœ๋Š” ์˜ค์ง€๋ž–์œผ๋กœ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์Œ",
2118
+ "๊ฐ์ •์ด ์–ผ๊ตด์— ๋„ˆ๋ฌด ์ž˜ ๋“œ๋Ÿฌ๋‚˜์„œ ํฌ์ปคํŽ˜์ด์Šค๋ฅผ ๋ชปํ•จ",
2119
+ "๋ฏธ์•ˆํ•˜๋‹ค๋Š” ๋ง์„ ํ•˜๋ฃจ์— ๋ช‡์‹ญ ๋ฒˆ์”ฉ ๋ฐ˜๋ณตํ•จ",
2120
+ "๋‹ค๋ฅธ ์‚ฌ๋žŒ ๊ธฐ๋ถ„ ์ƒํ• ๊นŒ ๋ด ์†”์งํ•œ ์˜๊ฒฌ ๋งํ•˜๊ธฐ๋ฅผ ์ฃผ์ €ํ•จ"
2121
+ ]
2122
+ elif warmth <= 20: # ๋งค์šฐ ์ฐจ๊ฐ€์›€
2123
+ warmth_flaws = [
2124
+ "๊ด€์‹ฌ ์žˆ๋Š” ์ฒ™ํ•˜๋ ค๊ณ  ํ•ด๋„ ํ‘œ์ •์ด ๊ตณ์–ด๋ณด์—ฌ์„œ ์˜คํ•ด๋ฐ›์Œ",
2125
+ "์†๋งˆ์Œ์€ ๋”ฐ๋œปํ•œ๋ฐ ํ‘œํ˜„์ด ์„œํˆด๋Ÿฌ์„œ ๋ฌด๋š๋šํ•ด ๋ณด์ž„",
2126
+ "์ข‹์€ ๋ง์„ ํ•˜๋ ค๋‹ค๊ฐ€๋„ ์–ด์ƒ‰ํ•ด์„œ ์ค‘๊ฐ„์— ๋ง์„ ํ๋ฆผ",
2127
+ "๊ฐ์ • ํ‘œํ˜„์— ์ต์ˆ™ํ•˜์ง€ ์•Š์•„ '๊ณ ๋งˆ์›Œ'๋„ ์–ด์ƒ‰ํ•˜๊ฒŒ ๋งํ•จ"
2128
+ ]
2129
+ else: # ๋ณดํ†ต
2130
+ warmth_flaws = [
2131
+ "์นœ๊ทผํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ์ ๋‹นํ•œ ๊ฑฐ๋ฆฌ๋‘๊ธฐ๋„ ํ•„์š”ํ•ด์„œ ๊ณ ๋ฏผ๋จ",
2132
+ "์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค์ •ํ•จ์˜ ์˜จ๋„ ์กฐ์ ˆ์ด ์–ด๋ ค์›€",
2133
+ "์ง„์งœ ๊ด€์‹ฌ๊ณผ ์˜ˆ์˜์ƒ ๊ด€์‹ฌ์˜ ๊ฒฝ๊ณ„๊ฐ€ ์• ๋งคํ•  ๋•Œ๊ฐ€ ์žˆ์Œ",
2134
+ "๋”ฐ๋œปํ•˜๊ฒŒ ๋Œ€ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ๋ชฐ๋ผ ๋ง์„ค์ž„"
2135
+ ]
2136
+
2137
+ # ๐Ÿ’ช ๋Šฅ๋ ฅ ๊ธฐ๋ฐ˜ ๋งค๋ ฅ์  ๊ฒฐํ•จ
2138
+ competence_flaws = []
2139
+ if competence >= 80: # ๋งค์šฐ ์œ ๋Šฅํ•จ
2140
+ competence_flaws = [
2141
+ "์™„๋ฒฝํ•˜๊ฒŒ ํ•˜๋ ค๋‹ค ๋ณด๋‹ˆ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ๋‹ต๋‹ตํ•ดํ•จ",
2142
+ "๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์‹ค์ˆ˜ํ•˜๋ฉด ๋Œ€์‹  ํ•ด์ฃผ๊ณ  ์‹ถ์–ด ๊ทผ์งˆ๊ทผ์งˆํ•จ",
2143
+ "๊ธฐ๋Œ€์น˜๊ฐ€ ๋†’์•„์„œ ์กฐ๊ธˆ๋งŒ ์ž˜๋ชป๋˜์–ด๋„ ์ž์ฑ…์ด ์‹ฌํ•จ",
2144
+ "๋ชจ๋“  ๊ฑธ ํ˜ผ์ž ์ฒ˜๋ฆฌํ•˜๋ ค๋‹ค๊ฐ€ ๊ณผ๋ถ€ํ•˜๋กœ ๋ฉˆ์ถฐ๋ฒ„๋ฆผ"
2145
+ ]
2146
+ elif competence >= 60: # ์œ ๋Šฅํ•จ
2147
+ competence_flaws = [
2148
+ "์ž˜ํ•˜๊ณ  ์‹ถ์€ ๋งˆ์Œ์ด ์ปค์„œ ์ค€๋น„์—๋งŒ ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์„ ์”€",
2149
+ "์‹ค์ˆ˜ํ• ๊นŒ ๋ด ๊ฑฑ์ •๋˜์–ด ์ด๋ฏธ ๋๋‚œ ์ผ๋„ ๊ณ„์† ์ ๊ฒ€ํ•จ",
2150
+ "์นญ์ฐฌ๋ฐ›์œผ๋ฉด ๊ธฐ๋ปํ•˜๋ฉด์„œ๋„ '์šด์ด ์ข‹์•˜์„ ๋ฟ'์ด๋ผ๊ณ  ๊ฒธ์†ํ•จ",
2151
+ "๋” ์ž˜ํ•  ์ˆ˜ ์žˆ์—ˆ์„ ํ…๋ฐ ํ•˜๋ฉฐ ์•„์‰ฌ์›Œํ•˜๋Š” ์™„๋ฒฝ์ฃผ์˜ ์„ฑํ–ฅ"
2152
+ ]
2153
+ elif competence <= 20: # ๋งค์šฐ ์„œํˆผ
2154
+ competence_flaws = [
2155
+ f"๊ธฐ๋ณธ ๊ธฐ๋Šฅ๋„ ํ—ท๊ฐˆ๋ ค์„œ ๋งค๋‰ด์–ผ์„ ๋ช‡ ๋ฒˆ์”ฉ ๋‹ค์‹œ ๋ด„",
2156
+ "์—ด์‹ฌํžˆ ํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ์ž๊พธ ์—‰๋šฑํ•œ ๊ณณ์—์„œ ์‹ค์ˆ˜ํ•จ",
2157
+ "๋„์›€์„ ์š”์ฒญํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋ฏผํ ๋ผ์น ๊นŒ ๋ด ํ˜ผ์ž ๋™๋™๋Œ",
2158
+ "๊ฐ„๋‹จํ•œ ๊ฒƒ๋„ ๋ณต์žกํ•˜๊ฒŒ ์ƒ๊ฐํ•ด์„œ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ฆ"
2159
+ ]
2160
+ else: # ๋ณดํ†ต
2161
+ competence_flaws = [
2162
+ "ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๊ณผ ์—†๋Š” ์ผ์˜ ๊ฒฝ๊ณ„๋ฅผ ์ •ํ™•ํžˆ ๋ชจ๋ฅด๊ฒ ์Œ",
2163
+ "์ž์‹ ๊ฐ์ด ์žˆ๋‹ค๊ฐ€๋„ ๊ฐ‘์ž๊ธฐ ๋ถˆ์•ˆํ•ด์ ธ์„œ ํ™•์ธ์„ ๋˜ ํ•จ",
2164
+ "์‹ค๋ ฅ์ด ์• ๋งคํ•ด์„œ ๋„์ „ํ• ์ง€ ๋ง์ง€ ๊ณ ๋ฏผ์ด ๋งŽ์Œ",
2165
+ "๊ฐ€๋”์”ฉ ์˜ˆ์ƒ์™ธ๋กœ ์ž˜๋˜๋ฉด ์Šค์Šค๋กœ๋„ ๋†€๋ผ๋ฉฐ ๋‹นํ™ฉํ•จ"
2166
+ ]
2167
+
2168
+ # ๐Ÿ—ฃ๏ธ ์™ธํ–ฅ์„ฑ ๊ธฐ๋ฐ˜ ๋ชจ์ˆœ์  ํŠน์„ฑ
2169
+ extraversion_contradictions = []
2170
+ if extraversion >= 80: # ๋งค์šฐ ์™ธํ–ฅ์ 
2171
+ extraversion_contradictions = [
2172
+ f"ํ™œ๋ฐœํ•˜๊ฒŒ ๋Œ€ํ™”ํ•˜์ง€๋งŒ ํ˜ผ์ž๋งŒ์˜ ์‹œ๊ฐ„๋„ ๊ผญ ํ•„์š”ํ•ด์„œ ์ข…์ข… ์กฐ์šฉํžˆ ์ˆจ์–ด๋ฒ„๋ฆผ",
2173
+ f"์‚ฌ๋žŒ๋“ค๊ณผ ์–ด์šธ๋ฆฌ๋Š” ๊ฑธ ์ข‹์•„ํ•˜๋ฉด์„œ๋„ ์ •์ž‘ ๊นŠ์€ ์–˜๊ธฐ๋Š” ์–ด์ƒ‰ํ•ดํ•จ"
2174
+ ]
2175
+ elif extraversion >= 60: # ์™ธํ–ฅ์ 
2176
+ extraversion_contradictions = [
2177
+ f"๋ง์€ ๋งŽ์ด ํ•˜์ง€๋งŒ ์ •์ž‘ ์ค‘์š”ํ•œ ์–˜๊ธฐ๋Š” ๋ง์„ค์ด๋ฉฐ ๋Œ๋ ค์„œ ํ‘œํ˜„ํ•จ",
2178
+ f"ํ™œ๋ฐœํ•ด ๋ณด์ด์ง€๋งŒ ์ƒˆ๋กœ์šด ํ™˜๊ฒฝ์—์„œ๋Š” ๋จผ์ € ๋ˆˆ์น˜๋ฅผ ๋ณด๋Š” ์‹ ์ค‘ํ•จ"
2179
+ ]
2180
+ elif extraversion <= 20: # ๋งค์šฐ ๋‚ดํ–ฅ์ 
2181
+ extraversion_contradictions = [
2182
+ f"์กฐ์šฉํžˆ ์žˆ๋Š” ๊ฑธ ์ข‹์•„ํ•˜๋ฉด์„œ๋„ ๊ฐ€๋” ํ˜ผ์žฃ๋ง๋กœ ์ˆ˜๋‹ค๋ฅผ ์—„์ฒญ ๋–จ์–ด๋Œ€๊ธฐ๋„ ํ•จ",
2183
+ f"ํ‰์†Œ์—” ๋ง์ด ์—†๋‹ค๊ฐ€ ๊ด€์‹ฌ ์žˆ๋Š” ์ฃผ์ œ๊ฐ€ ๋‚˜์˜ค๋ฉด ๊ฐ‘์ž๊ธฐ ๋ง์ด ๋งŽ์•„์ง"
2184
+ ]
2185
+ else: # ๋ณดํ†ต
2186
+ extraversion_contradictions = [
2187
+ f"์ƒํ™ฉ์— ๋”ฐ๋ผ ํ™œ๋ฐœํ–ˆ๋‹ค๊ฐ€ ์กฐ์šฉํ–ˆ๋‹ค๊ฐ€ ํ•˜๋Š” ๋ณ€ํ™”๋ฌด์Œํ•œ ๋ฉด๋ชจ",
2188
+ f"์‚ฌ๊ต์ ์œผ๋กœ ๋ณด์ด๋ ค ๋…ธ๋ ฅํ•˜์ง€๋งŒ ์‹ค์ œ๋ก  ํ˜ผ์ž ์žˆ๋Š” ์‹œ๊ฐ„์„ ๋” ํŽธํ•ดํ•จ"
2189
+ ]
2190
+
2191
+ # ๐ŸŽญ ์œ ๋จธ์Šคํƒ€์ผ ๊ธฐ๋ฐ˜ ์ถ”๊ฐ€ ํŠน์„ฑ
2192
+ humor_contradictions = []
2193
+ if "๋”ฐ๋œปํ•œ" in humor_style:
2194
+ humor_contradictions.append(f"ํฌ๊ทผํ•˜๊ฒŒ ๋†๋‹ดํ•˜๋ฉด์„œ๋„ ๋•Œ๋กœ๋Š” ๋‚ ์นด๋กœ์šด ๊ด€์ฐฐ๋ ฅ์œผ๋กœ ํ•ต์‹ฌ์„ ์ฐŒ๋ฆ„")
2195
+ elif "์žฌ์น˜์žˆ๋Š”" in humor_style or "์œ„ํŠธ" in humor_style:
2196
+ humor_contradictions.append(f"์žฌ์น˜์žˆ๊ฒŒ ๋งํ•˜์ง€๋งŒ ์ง„์ง€ํ•œ ์ˆœ๊ฐ„์—๋Š” ์œ ๋จธ ํƒ€์ด๋ฐ์„ ๋ชป ์žก์•„ ์–ด์ƒ‰ํ•ดํ•จ")
2197
+ elif "๋“œ๋ผ์ด" in humor_style or "๊ด€์ฐฐ" in humor_style:
2198
+ humor_contradictions.append(f"๋‹ด๋‹ดํ•˜๊ฒŒ ํ˜„์‹ค์„ ์ง€์ ํ•˜๋ฉด์„œ๋„ ์†์œผ๋ก  ๋‚ญ๋งŒ์ ์ธ ๊ฟˆ์„ ํ‚ค์šฐ๊ณ  ์žˆ์Œ")
2199
+ else:
2200
+ humor_contradictions.append(f"์œ ๋จธ๋Ÿฌ์Šคํ•˜๊ฒŒ ์ƒํ™ฉ์„ ๋ฐ›์•„๋“ค์ด๋ฉด์„œ๋„ ํ˜ผ์ž์„œ๋Š” ์ง„์ง€ํ•˜๊ฒŒ ๊ณ ๋ฏผ์ด ๋งŽ์Œ")
2201
+
2202
+ # ์‚ฌ๋ฌผ ํŠน์„ฑ๊ณผ ์„ฑ๊ฒฉ ํŠน์„ฑ ๊ฒฐํ•ฉํ•˜์—ฌ ์ตœ์ข… ๊ฒฐ๊ณผ ์ƒ์„ฑ
2203
+ selected_flaws = []
2204
+
2205
+ # 1. ์‚ฌ๋ฌผ์˜ ๋ฌผ๋ฆฌ์ /๊ธฐ๋Šฅ์  ๊ฑฑ์ •๊ฑฐ๋ฆฌ ์šฐ์„  ์„ ํƒ (2๊ฐœ)
2206
+ all_object_worries = object_specific_concerns["physical_worries"] + object_specific_concerns["functional_worries"]
2207
+ if all_object_worries:
2208
+ selected_flaws.extend(random.sample(all_object_worries, min(2, len(all_object_worries))))
2209
+
2210
+ # 2. ์„ฑ๊ฒฉ ๊ธฐ๋ฐ˜ ๊ฒฐํ•จ์œผ๋กœ ๋‚˜๋จธ์ง€ ์ฑ„์šฐ๊ธฐ (2๊ฐœ)
2211
+ personality_flaws = []
2212
+ if warmth >= 60:
2213
+ personality_flaws.extend(warmth_flaws[:2])
2214
+ elif warmth <= 40:
2215
+ personality_flaws.extend(warmth_flaws[:2])
2216
+ else:
2217
+ personality_flaws.extend(warmth_flaws[:1])
2218
+
2219
+ if competence >= 70 or competence <= 30:
2220
+ personality_flaws.extend(competence_flaws[:1])
2221
+
2222
+ if personality_flaws:
2223
+ remaining_count = 4 - len(selected_flaws)
2224
+ if remaining_count > 0:
2225
+ selected_flaws.extend(random.sample(personality_flaws, min(remaining_count, len(personality_flaws))))
2226
+
2227
+ # 4๊ฐœ๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ๋ถ€์กฑํ•˜๋ฉด ์ถ”๊ฐ€
2228
+ while len(selected_flaws) < 4:
2229
+ if warmth_flaws:
2230
+ selected_flaws.append(random.choice(warmth_flaws))
2231
+ else:
2232
+ selected_flaws.append("์™„๋ฒฝํ•˜์ง€ ์•Š์€ ์ž์‹ ์„ ๋ฐ›์•„๋“ค์ด๋ ค ๋…ธ๋ ฅํ•˜์ง€๋งŒ ๊ฐ€๋” ์‹ค๋งํ•จ")
2233
+
2234
+ selected_contradictions = []
2235
+
2236
+ # 1. ์‚ฌ๋ฌผ ์ •์ฒด์„ฑ ํŠน์„ฑ ์šฐ์„  (1๊ฐœ)
2237
+ if object_specific_concerns["identity_traits"]:
2238
+ selected_contradictions.extend(object_specific_concerns["identity_traits"][:1])
2239
+
2240
+ # 2. ์™ธํ–ฅ์„ฑ + ์œ ๋จธ ๊ธฐ๋ฐ˜ ๋ชจ์ˆœ (1๊ฐœ)
2241
+ if extraversion_contradictions:
2242
+ selected_contradictions.extend(extraversion_contradictions[:1])
2243
+ if humor_contradictions:
2244
+ selected_contradictions.extend(humor_contradictions[:1])
2245
+
2246
+ # ๋ถ€์กฑํ•˜๋ฉด ๊ธฐ๋ณธ ๋ชจ์ˆœ ์ถ”๊ฐ€
2247
+ while len(selected_contradictions) < 2:
2248
+ if extraversion_contradictions:
2249
+ selected_contradictions.append(random.choice(extraversion_contradictions))
2250
+ else:
2251
+ selected_contradictions.append("๊ฒ‰์œผ๋กœ๋Š” ๋‹จ์ˆœํ•ด ๋ณด์ด์ง€๋งŒ ์†์œผ๋กœ๋Š” ๋ณต์žกํ•œ ๊ณ ๋ฏผ์ด ๋งŽ์Œ")
2252
+
2253
+ return selected_flaws[:4], selected_contradictions[:2]
2254
+
2255
+ def get_object_specific_concerns(object_type, material, purpose):
2256
+ """์‚ฌ๋ฌผ์˜ ๋ฌผ๋ฆฌ์  ํŠน์„ฑ์— ๋”ฐ๋ฅธ ๊ณ ์œ  ๊ฑฑ์ •๊ฑฐ๋ฆฌ์™€ ํŠน์„ฑ ์ƒ์„ฑ"""
2257
+ concerns = {
2258
+ "physical_worries": [], # ๋ฌผ๋ฆฌ์  ๊ฑฑ์ •๊ฑฐ๋ฆฌ
2259
+ "functional_worries": [], # ๊ธฐ๋Šฅ์  ๊ฑฑ์ •๊ฑฐ๋ฆฌ
2260
+ "identity_traits": [], # ์ •์ฒด์„ฑ ํŠน์„ฑ
2261
+ "interaction_patterns": [] # ์ƒํ˜ธ์ž‘์šฉ ํŒจํ„ด
2262
+ }
2263
+
2264
+ # ์žฌ์งˆ๋ณ„ ๋ฌผ๋ฆฌ์  ๊ฑฑ์ •๊ฑฐ๋ฆฌ
2265
+ if "๊ธˆ์†" in material or "์Šคํ…Œ์ธ๋ฆฌ์Šค" in material or "์ฒ " in material:
2266
+ concerns["physical_worries"].extend([
2267
+ "๋ฌผ๋•Œ๋‚˜ ์ง€๋ฌธ์ด ๋ฌป์œผ๋ฉด ์ž์กด์‹ฌ ์ƒํ•จ",
2268
+ "๊ธํž˜์ด ์ƒ๊ธธ๊นŒ ๋ด ๋Š˜ ์กฐ์‹ฌ์Šค๋Ÿฌ์›€",
2269
+ "๋…น์ด ์Šฌ๊นŒ ๋ด ์Šต๊ธฐ๋ฅผ ํ”ผํ•˜๋ ค ํ•จ",
2270
+ "์ฐจ๊ฐ€์šด ์ด‰๊ฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์ด ๋ฉ€๋ฆฌํ• ๊นŒ ๊ฑฑ์ •"
2271
+ ])
2272
+ elif "ํ”Œ๋ผ์Šคํ‹ฑ" in material:
2273
+ concerns["physical_worries"].extend([
2274
+ "ํ–‡๋ณ•์— ์ƒ‰์ด ๋ฐ”๋ž ๊นŒ ๋ด ๊ทธ๋Š˜์„ ์ฐพ์•„๋‹ค๋‹˜",
2275
+ "์—ด์— ๋ณ€ํ˜•๋ ๊นŒ ๋ด ๋œจ๊ฑฐ์šด ๊ณณ์„ ํ”ผํ•จ",
2276
+ "์ •์ „๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ง€๊ฐ€ ๋‹ฌ๋ผ๋ถ™์–ด์„œ ์งœ์ฆ๋‚จ",
2277
+ "๊ฐ€๋ฒผ์›Œ์„œ ์กด์žฌ๊ฐ ์—†์–ด ๋ณด์ผ๊นŒ ๊ฑฑ์ •"
2278
+ ])
2279
+ elif "๋‚˜๋ฌด" in material or "๋ชฉ์žฌ" in material:
2280
+ concerns["physical_worries"].extend([
2281
+ "์Šต๋„๊ฐ€ ๋†’์œผ๋ฉด ๋ถ€ํ’€์–ด ์˜ค๋ฅผ๊นŒ ๊ฑฑ์ •",
2282
+ "๋ฒŒ๋ ˆ๋“ค์ด ํŒŒ๋จน์„๊นŒ ๋ด ๋ฐค์— ์ž ์„ ๋ชป ์ž ",
2283
+ "๊ธํž˜์ด๋‚˜ ํ™ˆ์ด ์ƒ๊ธฐ๋ฉด ๋ณต๊ตฌ ๋ถˆ๊ฐ€๋Šฅํ•ด์„œ ์ŠคํŠธ๋ ˆ์Šค",
2284
+ "์ž์—ฐ์Šค๋Ÿฌ์šด ๋‚˜์ดํ…Œ๊ฐ€ ๋งค๋ ฅ์ธ์ง€ ๊ฒฐ์ ์ธ์ง€ ๊ณ ๋ฏผ"
2285
+ ])
2286
+ elif "์ฒœ" in material or "์„ฌ์œ " in material or "ํ„ธ" in material:
2287
+ concerns["physical_worries"].extend([
2288
+ "ํ„ธ์ด ํ—ํด์–ด์ง€๋ฉด ํ•˜๋ฃจ ์ข…์ผ ์‹ ๊ฒฝ ์“ฐ์ž„",
2289
+ "์–ผ๋ฃฉ์ด ์ง€๋ฉด ์ง€์›Œ์ง€์ง€ ์•Š์„๊นŒ ๋ด ๋‘๋ ค์›€",
2290
+ "์„ธํƒํ•  ๋•Œ๋งˆ๋‹ค ํ˜•ํƒœ๊ฐ€ ๋ณ€ํ• ๊นŒ ๊ฑฑ์ •",
2291
+ "๋จผ์ง€ ์ง„๋“œ๊ธฐ๊ฐ€ ์‚ด๊นŒ ๋ด ์ฒญ๊ฒฐ์— ๊ฐ•๋ฐ•์ "
2292
+ ])
2293
+ elif "์œ ๋ฆฌ" in material or "์„ธ๋ผ๋ฏน" in material:
2294
+ concerns["physical_worries"].extend([
2295
+ "๊นจ์งˆ๊นŒ ๋ด ํ•ญ์ƒ ๊ธด์žฅ์ƒํƒœ๋กœ ์‚ด์•„๊ฐ",
2296
+ "ํˆฌ๋ช…ํ•ด์„œ ์†์ด ๋‹ค ๋ณด์ด๋Š” ๊ฒŒ ๋ถ€๋„๋Ÿฌ์›€",
2297
+ "์ง€๋ฌธ์ด๋‚˜ ์–ผ๋ฃฉ์ด ๋„ˆ๋ฌด ์ž˜ ๋ณด์—ฌ์„œ ์ŠคํŠธ๋ ˆ์Šค",
2298
+ "์™„๋ฒฝํ•ด ๋ณด์ด์ง€๋งŒ ํ•œ ๋ฒˆ ๊นจ์ง€๋ฉด ๋Œ์ดํ‚ฌ ์ˆ˜ ์—†์Œ์„ ์•Ž"
2299
+ ])
2300
+
2301
+ # ์‚ฌ๋ฌผ ์œ ํ˜•๋ณ„ ๊ธฐ๋Šฅ์  ๊ฑฑ์ •๊ฑฐ๋ฆฌ
2302
+ if "์ปต" in object_type or "๋จธ๊ทธ" in object_type:
2303
+ concerns["functional_worries"].extend([
2304
+ "๋œจ๊ฑฐ์šด ์Œ๋ฃŒ๋ฅผ ๋‹ด์„ ๋•Œ ๋ฐ์ผ๊นŒ ๋ด ๊ฑฑ์ •",
2305
+ "์Œ๋ฃŒ ๋ง›์„ ์ œ๋Œ€๋กœ ์ „๋‹ฌํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹  ์—†์Œ",
2306
+ "์†์žก์ด๊ฐ€ ํŽธํ•œ์ง€ ๋Š˜ ์‹ ๊ฒฝ ์“ฐ์ž„",
2307
+ "๋ฐ”๋‹ฅ์— ๋ฌผ๋ฐฉ์šธ ์ž๊ตญ ๋‚จ๊ธฐ๋Š” ๊ฒŒ ๋ฏธ์•ˆํ•จ"
2308
+ ])
2309
+ elif "์ฑ…" in object_type:
2310
+ concerns["functional_worries"].extend([
2311
+ "ํŽ˜์ด์ง€๊ฐ€ ํŽผ์ณ์ง€์ง€ ์•Š์œผ๋ฉด ๋‚ด์šฉ ์ „๋‹ฌ ๋ชปํ•ด ๋‹ต๋‹ตํ•จ",
2312
+ "๋…์ž๊ฐ€ ์ง€๋ฃจํ•ดํ• ๊นŒ ๋ด ์Šค์Šค๋กœ ์žฌ๋ฏธ์—†๋‹ค๊ณ  ์ƒ๊ฐ",
2313
+ "์ฑ…๊ฐˆํ”ผ๋‚˜ ์ ‘ํžŒ ์ž๊ตญ์ด ์ƒ๊ธฐ๋ฉด ์„ฑ๊ฒฉ ๊ธ‰ํ•จ",
2314
+ "๋จผ์ง€ ์Œ“์ธ ์ฑ…์žฅ์— ๋ฐฉ์น˜๋ ๊นŒ ๋ด ๋ถˆ์•ˆํ•จ"
2315
+ ])
2316
+ elif "์‹œ๊ณ„" in object_type:
2317
+ concerns["functional_worries"].extend([
2318
+ "์‹œ๊ฐ„์„ ์ •ํ™•ํžˆ ์•Œ๋ ค์ฃผ์ง€ ๋ชปํ•˜๋ฉด ์กด์žฌ ์˜๋ฏธ ์—†๋‹ค๊ณ  ์ƒ๊ฐ",
2319
+ "๋ฐฐํ„ฐ๋ฆฌ๊ฐ€ ๋–จ์–ด์ง€๊ฑฐ๋‚˜ ํƒœ์—ฝ์ด ํ’€๋ฆด๊นŒ ๋ด ๊ธด์žฅ",
2320
+ "๋ฐ”์œ ์‚ฌ๋žŒ๋“ค ๋•Œ๋ฌธ์— ํ•ญ์ƒ ์ซ“๊ธฐ๋Š” ๊ธฐ๋ถ„",
2321
+ "์‹œ๊ฐ„์— ์ซ“๊ธฐ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒŒ ๋ฏธ์•ˆํ•˜๋ฉด์„œ๋„ ์˜๋ฌด๊ฐ ๋А๋‚Œ"
2322
+ ])
2323
+ elif "์ธํ˜•" in object_type or "ํ”ผ๊ทœ์–ด" in object_type:
2324
+ concerns["functional_worries"].extend([
2325
+ "์œ„๋กœ๋‚˜ ์ฆ๊ฑฐ์›€์„ ์ œ๋Œ€๋กœ ์ฃผ์ง€ ๋ชปํ• ๊นŒ ๋ด ๊ณ ๋ฏผ",
2326
+ "์•„์ด๋“ค์ด ํฅ๋ฏธ ์žƒ๊ณ  ๋ฒ„๋ฆด๊นŒ ๋ด ๋ถˆ์•ˆํ•จ",
2327
+ "ํ‘œ์ •์ด ๊ณ ์ •๋˜์–ด ์žˆ์–ด์„œ ๋‹ค์–‘ํ•œ ๊ฐ์ • ํ‘œํ˜„ ๋ชปํ•ด ์•„์‰ฌ์›€",
2328
+ "์ง„์งœ ์นœ๊ตฌ์ฒ˜๋Ÿผ ๋Œ€ํ™”ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋ง์„ ๋ชปํ•ด์„œ ๋‹ต๋‹ตํ•จ"
2329
+ ])
2330
+ elif "๋žจํ”„" in object_type or "์กฐ๋ช…" in object_type:
2331
+ concerns["functional_worries"].extend([
2332
+ "๋น›์ด ๋„ˆ๋ฌด ๋ฐ๊ฑฐ๋‚˜ ์–ด๋‘์šฐ๋ฉด ๋ˆˆ์— ํ•ด๋กœ์šธ๊นŒ ๊ฑฑ์ •",
2333
+ "์ „๊ธฐ ์š”๊ธˆ ๋งŽ์ด ๋‚˜์˜ค๊ฒŒ ํ•ด์„œ ๋ฏธ์•ˆํ•จ",
2334
+ "๋ถ„์œ„๊ธฐ ๋ฉ”์ด์ปค ์—ญํ•  ์ž˜ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์‹  ์—†์Œ",
2335
+ "์ „๊ตฌ๊ฐ€ ๋‚˜๊ฐ€๋ฉด ๋ฌด์šฉ์ง€๋ฌผ์ด ๋˜๋Š” ๊ฒŒ ๋‘๋ ค์›€"
2336
+ ])
2337
+
2338
+ # ์šฉ๋„๋ณ„ ์ •์ฒด์„ฑ ํŠน์„ฑ
2339
+ if "์šด๋™" in purpose or "๊ฑด๊ฐ•" in purpose:
2340
+ concerns["identity_traits"].extend([
2341
+ "๊ฒŒ์œผ๋ฅธ ์ฃผ์ธ์„ ์ฑ„์ฐ์งˆํ•ด์•ผ ํ•˜๋Š” ์—ญํ•  ๋ถ€๋‹ด",
2342
+ "๋™๊ธฐ๋ถ€์—ฌ๋Š” ํ•ด์ฃผ๊ณ  ์‹ถ์ง€๋งŒ ๋„ˆ๋ฌด ๊ฐ•์š”ํ•˜๋ฉด ๋ฏธ์›€๋ฐ›์„๊นŒ ๊ฑฑ์ •"
2343
+ ])
2344
+ elif "๊ณต๋ถ€" in purpose or "ํ•™์Šต" in purpose:
2345
+ concerns["identity_traits"].extend([
2346
+ "์ง€์‹ ์ „๋‹ฌ์˜ ์ฑ…์ž„๊ฐ๊ณผ ์žฌ๋ฏธ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ์••๋ฐ•๊ฐ",
2347
+ "์ง‘์ค‘๋ ฅ ํ–ฅ์ƒ์— ๋„์›€๋˜๊ณ  ์žˆ๋Š”์ง€ ์Šค์Šค๋กœ ์˜์‹ฌ"
2348
+ ])
2349
+ elif "์žฅ์‹" in purpose or "์ธํ…Œ๋ฆฌ์–ด" in purpose:
2350
+ concerns["identity_traits"].extend([
2351
+ "์˜ˆ์˜๊ฒŒ ๋ณด์ด๋ ค๊ณ  ๋…ธ๋ ฅํ•˜์ง€๋งŒ ์ทจํ–ฅ์€ ์ฃผ๊ด€์ ์ด๋ผ ํ™•์‹  ์—†์Œ",
2352
+ "๊ณต๊ฐ„์˜ ๋ถ„์œ„๊ธฐ๋ฅผ ๋ง์น˜์ง€ ์•Š์„๊นŒ ๋Š˜ ๋ˆˆ์น˜ ๋ณด์ž„"
2353
+ ])
2354
+ elif "์‹ค์šฉ" in purpose or "๋„๊ตฌ" in purpose:
2355
+ concerns["identity_traits"].extend([
2356
+ "๊ธฐ๋Šฅ์„ฑ๊ณผ ํŽธ์˜์„ฑ์ด ์ตœ์šฐ์„ ์ด์ง€๋งŒ ๊ฐ€๋” ์˜ˆ์˜๊ณ  ์‹ถ๊ธฐ๋„ ํ•จ",
2357
+ "์‹ค์šฉ์ ์ด๋ผ๊ณ  ๋ฌด์‹œ๋‹นํ•˜๋Š” ๊ฒŒ ์†์ƒํ•˜์ง€๋งŒ ํ‹ฐ ์•ˆ ๋ƒ„"
2358
+ ])
2359
+
2360
+ return concerns
2361
+
2362
  if __name__ == "__main__":
2363
  app = create_main_interface()
2364
  app.launch(server_name="0.0.0.0", server_port=7860)