Reality123b commited on
Commit
5d8a4d4
·
verified ·
1 Parent(s): 84efced

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +78 -0
app.py CHANGED
@@ -9,6 +9,7 @@ from PIL import Image
9
  from sentence_transformers import SentenceTransformer, util
10
  import torch
11
  import numpy as np
 
12
 
13
  @dataclass
14
  class ChatMessage:
@@ -37,6 +38,15 @@ class XylariaChat:
37
  self.memory_embeddings = None
38
  self.embedding_model = SentenceTransformer('all-mpnet-base-v2')
39
 
 
 
 
 
 
 
 
 
 
40
  self.internal_state = {
41
  "emotions": {
42
  "valence": 0.5,
@@ -62,6 +72,41 @@ class XylariaChat:
62
  self.internal_state["memory_load"] = np.clip(self.internal_state["memory_load"] + memory_load_delta, 0.0, 1.0)
63
  self.internal_state["introspection_level"] = np.clip(self.internal_state["introspection_level"] + introspection_delta, 0.0, 1.0)
64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  def introspect(self):
66
  introspection_report = "Introspection Report:\n"
67
  introspection_report += f" Current Emotional State (VAD): {self.internal_state['emotions']}\n"
@@ -70,6 +115,11 @@ class XylariaChat:
70
  introspection_report += " Current Goals:\n"
71
  for goal in self.goals:
72
  introspection_report += f" - {goal['goal']} (Priority: {goal['priority']:.2f}, Status: {goal['status']})\n"
 
 
 
 
 
73
  return introspection_report
74
 
75
  def adjust_response_based_on_state(self, response):
@@ -150,6 +200,15 @@ class XylariaChat:
150
  {"goal": "Maintain a coherent and engaging conversation", "priority": 0.7, "status": "active"}
151
  ]
152
 
 
 
 
 
 
 
 
 
 
153
  try:
154
  self.client = InferenceClient(
155
  model="Qwen/QwQ-32B-Preview",
@@ -223,6 +282,19 @@ class XylariaChat:
223
  role="user",
224
  content=user_input
225
  ).to_dict())
 
 
 
 
 
 
 
 
 
 
 
 
 
226
 
227
  input_tokens = sum(len(msg['content'].split()) for msg in messages)
228
  max_new_tokens = 16384 - input_tokens - 50
@@ -244,6 +316,12 @@ class XylariaChat:
244
  print(f"Detailed error in get_response: {e}")
245
  return f"Error generating response: {str(e)}"
246
 
 
 
 
 
 
 
247
  def messages_to_prompt(self, messages):
248
  prompt = ""
249
  for msg in messages:
 
9
  from sentence_transformers import SentenceTransformer, util
10
  import torch
11
  import numpy as np
12
+ import networkx as nx
13
 
14
  @dataclass
15
  class ChatMessage:
 
38
  self.memory_embeddings = None
39
  self.embedding_model = SentenceTransformer('all-mpnet-base-v2')
40
 
41
+ self.knowledge_graph = nx.DiGraph()
42
+ self.belief_system = {}
43
+ self.metacognitive_layer = {
44
+ "coherence_score": 0.0,
45
+ "relevance_score": 0.0,
46
+ "bias_detection": 0.0,
47
+ "strategy_adjustment": ""
48
+ }
49
+
50
  self.internal_state = {
51
  "emotions": {
52
  "valence": 0.5,
 
72
  self.internal_state["memory_load"] = np.clip(self.internal_state["memory_load"] + memory_load_delta, 0.0, 1.0)
73
  self.internal_state["introspection_level"] = np.clip(self.internal_state["introspection_level"] + introspection_delta, 0.0, 1.0)
74
 
75
+ def update_knowledge_graph(self, entities, relationships):
76
+ for entity in entities:
77
+ self.knowledge_graph.add_node(entity)
78
+ for relationship in relationships:
79
+ subject, predicate, object_ = relationship
80
+ self.knowledge_graph.add_edge(subject, object_, relation=predicate)
81
+
82
+ def update_belief_system(self, statement, belief_score):
83
+ self.belief_system[statement] = belief_score
84
+
85
+ def run_metacognitive_layer(self):
86
+ coherence_score = self.calculate_coherence()
87
+ relevance_score = self.calculate_relevance()
88
+ bias_score = self.detect_bias()
89
+ strategy_adjustment = self.suggest_strategy_adjustment()
90
+
91
+ self.metacognitive_layer = {
92
+ "coherence_score": coherence_score,
93
+ "relevance_score": relevance_score,
94
+ "bias_detection": bias_score,
95
+ "strategy_adjustment": strategy_adjustment
96
+ }
97
+
98
+ def calculate_coherence(self):
99
+ return 0.9
100
+
101
+ def calculate_relevance(self):
102
+ return 0.85
103
+
104
+ def detect_bias(self):
105
+ return 0.1
106
+
107
+ def suggest_strategy_adjustment(self):
108
+ return "Focus on providing more concise answers."
109
+
110
  def introspect(self):
111
  introspection_report = "Introspection Report:\n"
112
  introspection_report += f" Current Emotional State (VAD): {self.internal_state['emotions']}\n"
 
115
  introspection_report += " Current Goals:\n"
116
  for goal in self.goals:
117
  introspection_report += f" - {goal['goal']} (Priority: {goal['priority']:.2f}, Status: {goal['status']})\n"
118
+ introspection_report += "Metacognitive Layer Report\n"
119
+ introspection_report += f"Coherence Score: {self.metacognitive_layer['coherence_score']}\n"
120
+ introspection_report += f"Relevance Score: {self.metacognitive_layer['relevance_score']}\n"
121
+ introspection_report += f"Bias Detection: {self.metacognitive_layer['bias_detection']}\n"
122
+ introspection_report += f"Strategy Adjustment: {self.metacognitive_layer['strategy_adjustment']}\n"
123
  return introspection_report
124
 
125
  def adjust_response_based_on_state(self, response):
 
200
  {"goal": "Maintain a coherent and engaging conversation", "priority": 0.7, "status": "active"}
201
  ]
202
 
203
+ self.knowledge_graph = nx.DiGraph()
204
+ self.belief_system = {}
205
+ self.metacognitive_layer = {
206
+ "coherence_score": 0.0,
207
+ "relevance_score": 0.0,
208
+ "bias_detection": 0.0,
209
+ "strategy_adjustment": ""
210
+ }
211
+
212
  try:
213
  self.client = InferenceClient(
214
  model="Qwen/QwQ-32B-Preview",
 
282
  role="user",
283
  content=user_input
284
  ).to_dict())
285
+
286
+ entities = []
287
+ relationships = []
288
+
289
+ for message in messages:
290
+ if message['role'] == 'user':
291
+ extracted_entities = self.extract_entities(message['content'])
292
+ extracted_relationships = self.extract_relationships(message['content'])
293
+ entities.extend(extracted_entities)
294
+ relationships.extend(extracted_relationships)
295
+
296
+ self.update_knowledge_graph(entities, relationships)
297
+ self.run_metacognitive_layer()
298
 
299
  input_tokens = sum(len(msg['content'].split()) for msg in messages)
300
  max_new_tokens = 16384 - input_tokens - 50
 
316
  print(f"Detailed error in get_response: {e}")
317
  return f"Error generating response: {str(e)}"
318
 
319
+ def extract_entities(self, text):
320
+ return []
321
+
322
+ def extract_relationships(self, text):
323
+ return []
324
+
325
  def messages_to_prompt(self, messages):
326
  prompt = ""
327
  for msg in messages: