humanda5 commited on
Commit
d505821
·
1 Parent(s): c08ff6f

코드 리팩토링

Browse files
npc_social_network/data/saves/simulation_state.pkl CHANGED
Binary files a/npc_social_network/data/saves/simulation_state.pkl and b/npc_social_network/data/saves/simulation_state.pkl differ
 
npc_social_network/data/vectorstores/bob.faiss CHANGED
Binary files a/npc_social_network/data/vectorstores/bob.faiss and b/npc_social_network/data/vectorstores/bob.faiss differ
 
npc_social_network/data/vectorstores/charlie.faiss CHANGED
Binary files a/npc_social_network/data/vectorstores/charlie.faiss and b/npc_social_network/data/vectorstores/charlie.faiss differ
 
npc_social_network/models/llm_helper.py CHANGED
@@ -240,7 +240,7 @@ def generate_dialogue_action(speaker: "NPC", target: "NPC", conversation: "Conve
240
  당신의 성격과 상대방과의 관계, 관련된 과거 기억, 그리고 지금까지의 대화 흐름을 모두 고려하여 가장 현실적이고 깊이 있는 다음 대사를 만드세요.
241
 
242
  # Inner State
243
- - 당신의 성격: {speaker.personality.get_personality_summary()}
244
  - "{target.korean_name}"와의 관계: {speaker.relationships.get_relationship_summary(target.name)}
245
 
246
  # Reputation Information
@@ -299,10 +299,10 @@ def evaluate_social_action_outcome(initiator: "NPC", target: "NPC", action_type:
299
  """두 NPC의 성격과 관계를 바탕으로 사회적 행동의 결과를 추론합니다."""
300
  prompt = f"""
301
  # Context
302
- - 행동자: "{initiator.korean_name}" (성격: {initiator.personality.get_personality_summary()})
303
- - 대상자: "{target.korean_name}" (성격: {target.personality.get_personality_summary()})
304
  - 둘의 관계: {initiator.relationships.get_relationship_summary(target.name)}
305
- - 행동: 행동자는 대상자를 도와주려고 합니다. (Action: {action_type})
306
 
307
  # Your Task
308
  위 상황을 바탕으로, 이 행동의 결과를 현실적으로 추론해주세요.
 
240
  당신의 성격과 상대방과의 관계, 관련된 과거 기억, 그리고 지금까지의 대화 흐름을 모두 고려하여 가장 현실적이고 깊이 있는 다음 대사를 만드세요.
241
 
242
  # Inner State
243
+ - 당신의 성격: {speaker.personality.get_narrative_summary()}
244
  - "{target.korean_name}"와의 관계: {speaker.relationships.get_relationship_summary(target.name)}
245
 
246
  # Reputation Information
 
299
  """두 NPC의 성격과 관계를 바탕으로 사회적 행동의 결과를 추론합니다."""
300
  prompt = f"""
301
  # Context
302
+ - 행동자: "{initiator.korean_name}" (성격: {initiator.personality.get_narrative_summary()})
303
+ - 대상자: "{target.korean_name}" (성격: {target.personality.get_narrative_summary()})
304
  - 둘의 관계: {initiator.relationships.get_relationship_summary(target.name)}
305
+ - 행동: 행동자('{initiator.korean_name}')는 대상자('{target.korean_name}')를 도와주려고 합니다. (Action: {action_type})
306
 
307
  # Your Task
308
  위 상황을 바탕으로, 이 행동의 결과를 현실적으로 추론해주세요.
npc_social_network/npc/npc_base.py CHANGED
@@ -46,36 +46,31 @@ class PersonalityManager:
46
  def keys(self):
47
  return self.traits.keys()
48
 
49
- def get_personality_summary(self) -> str:
50
- """
51
- 현재 성격 특성을 바탕으로 자연어 요약을 생성합니다.
52
- """
53
  sensitive = self.traits.get("sensitive", 0.5)
54
  stoic = self.traits.get("stoic", 0.5)
55
- cognitive_bias = self.traits.get("cognitive_bias", 0.5)
56
 
57
- summary_parts = []
58
- if sensitive > 0.7:
59
- summary_parts.append("매우 민감하고 감정적인 편입니다.")
60
- elif sensitive < 0.3:
61
- summary_parts.append("상당히 무던하고 감정 표현이 적습니다.")
62
  else:
63
- summary_parts.append("보통 수준의 감수성을 지녔습니다.")
64
-
65
- if stoic > 0.7:
66
- summary_parts.append("역경에 내성이 강하고 감정을 드러내지 않습니다.")
67
- elif stoic < 0.3:
68
- summary_parts.append("감정의 영향을 쉽게 받는 편입니다.")
69
-
70
- if cognitive_bias > 0.7:
71
- summary_parts.append("이성적이고 논리적인 사고를 선호합니다.")
72
- elif cognitive_bias < 0.3:
73
- summary_parts.append("직관과 감정에 따라 판단하는 경향이 있습니다.")
74
 
75
- if not summary_parts:
76
  return "평범하고 균형 잡힌 성격입니다."
77
 
78
- return " ".join(summary_parts)
79
 
80
  # NPC 클래스 정의
81
  class NPC:
 
46
  def keys(self):
47
  return self.traits.keys()
48
 
49
+ def get_narrative_summary(self) -> str:
50
+ """현재 성격 수치를 바탕으로 서술적인 묘사를 동적으로 생성"""
51
+ narratives = []
52
+
53
  sensitive = self.traits.get("sensitive", 0.5)
54
  stoic = self.traits.get("stoic", 0.5)
55
+ congitive_bias = self.traits.get("cognitive_bias", 0.5)
56
 
57
+ # 성격 축에 대한 서술적 묘사 생성
58
+ if sensitive > 0.7 and stoic < 0.3:
59
+ narratives.append("감수성이 매우 풍부하고 감정의 영향을 쉽게 받는 편입니다.")
60
+ elif stoic > 0.7 and sensitive < 0.3:
61
+ narratives.append("감정을 거의 드러내지 않는 과묵하고 무던한 성향입니다.")
62
  else:
63
+ narratives.append("상황에 따라 감정을 표현할 줄 아는 균형 잡힌 모습을 보입니다.")
64
+
65
+ if congitive_bias > 0.7:
66
+ narratives.append("대화를 논리적이고 사실에 기반하여 판단하려는 경향이 강합니다.")
67
+ elif congitive_bias < 0.3:
68
+ narratives.append("직관과 감정에 따라 상황을 판단하는 경향이 있습니다.")
 
 
 
 
 
69
 
70
+ if not narratives:
71
  return "평범하고 균형 잡힌 성격입니다."
72
 
73
+ return "".join(narratives)
74
 
75
  # NPC 클래스 정의
76
  class NPC:
npc_social_network/npc/npc_planner.py CHANGED
@@ -115,7 +115,7 @@ class PlannerManager:
115
  print(f"[{self.npc.korean_name}] 계획 생성에 최종 실패했습니다.")
116
 
117
  def complete_step(self):
118
- """현재 단꼐를 완료하고 다음 단계로 진행. 계획이 모두 끝나면 모표를 완료 처리"""
119
  if not self.has_active_plan():
120
  return
121
 
 
115
  print(f"[{self.npc.korean_name}] 계획 생성에 최종 실패했습니다.")
116
 
117
  def complete_step(self):
118
+ """현재 단계를 완료하고 다음 단계로 진행. 계획이 모두 끝나면 모표를 완료 처리"""
119
  if not self.has_active_plan():
120
  return
121
 
npc_social_network/routes/npc_route.py CHANGED
@@ -108,7 +108,7 @@ def get_npc_details(npc_name):
108
 
109
  details = {
110
  "name": npc.korean_name, "age": npc.age, "job": npc.job,
111
- "personality_summary": npc.personality.get_personality_summary(),
112
  "emotions": npc.get_composite_emotion_state(top_n=5),
113
  "goals": npc.planner.current_goal.description if npc.planner.has_active_plan() else "특별한 목표 없음",
114
  "memories": [mem.content for mem in npc.memory_store.get_recent_memories(limit=10)]
 
108
 
109
  details = {
110
  "name": npc.korean_name, "age": npc.age, "job": npc.job,
111
+ "personality_summary": npc.personality.get_narrative_summary(),
112
  "emotions": npc.get_composite_emotion_state(top_n=5),
113
  "goals": npc.planner.current_goal.description if npc.planner.has_active_plan() else "특별한 목표 없음",
114
  "memories": [mem.content for mem in npc.memory_store.get_recent_memories(limit=10)]