helloparthshah commited on
Commit
2155e91
·
2 Parent(s): bf722a2 82fe65b

Merge branch 'main' of github.com:kunpai/HASHIRU

Browse files
src/manager/manager.py CHANGED
@@ -23,7 +23,8 @@ class GeminiManager:
23
  system_prompt_file="./src/models/system4.prompt",
24
  gemini_model="gemini-2.5-pro-exp-03-25",
25
  local_only=False, allow_tool_creation=True,
26
- cloud_only=False, use_economy=True):
 
27
  load_dotenv()
28
  self.toolsLoader: ToolManager = toolsLoader
29
  if not toolsLoader:
@@ -33,12 +34,13 @@ class GeminiManager:
33
  self.allow_tool_creation = allow_tool_creation
34
  self.cloud_only = cloud_only
35
  self.use_economy = use_economy
 
36
 
37
  self.API_KEY = os.getenv("GEMINI_KEY")
38
  self.client = genai.Client(api_key=self.API_KEY)
39
  self.toolsLoader.load_tools()
40
  self.model_name = gemini_model
41
- self.memory_manager = MemoryManager()
42
  with open(system_prompt_file, 'r', encoding="utf8") as f:
43
  self.system_prompt = f.read()
44
  self.messages = []
@@ -158,6 +160,8 @@ class GeminiManager:
158
  return formatted_history
159
 
160
  def get_k_memories(self, query, k=5, threshold=0.0):
 
 
161
  memories = MemoryManager().get_memories()
162
  for i in range(len(memories)):
163
  memories[i] = memories[i]['memory']
@@ -165,7 +169,12 @@ class GeminiManager:
165
  return []
166
  top_k = min(k, len(memories))
167
  # Semantic Retrieval with GPU
168
- device = 'cuda' if torch.cuda.is_available() else 'cpu'
 
 
 
 
 
169
  print(f"Using device: {device}")
170
  model = SentenceTransformer('all-MiniLM-L6-v2', device=device)
171
  doc_embeddings = model.encode(memories, convert_to_tensor=True, device=device)
@@ -180,18 +189,19 @@ class GeminiManager:
180
  return results
181
 
182
  def run(self, messages):
183
- memories = self.get_k_memories(messages[-1]['content'], k=5, threshold=0.1)
184
- if len(memories) > 0:
185
- messages.append({
186
- "role": "memories",
187
- "content": f"{memories}",
188
- })
189
- messages.append({
190
- "role": "assistant",
191
- "content": f"Memories: {memories}",
192
- "metadata": {"title": "Memories"}
193
- })
194
- yield messages
 
195
  yield from self.invoke_manager(messages)
196
 
197
  def invoke_manager(self, messages):
 
23
  system_prompt_file="./src/models/system4.prompt",
24
  gemini_model="gemini-2.5-pro-exp-03-25",
25
  local_only=False, allow_tool_creation=True,
26
+ cloud_only=False, use_economy=True,
27
+ use_memory=True):
28
  load_dotenv()
29
  self.toolsLoader: ToolManager = toolsLoader
30
  if not toolsLoader:
 
34
  self.allow_tool_creation = allow_tool_creation
35
  self.cloud_only = cloud_only
36
  self.use_economy = use_economy
37
+ self.use_memory = use_memory
38
 
39
  self.API_KEY = os.getenv("GEMINI_KEY")
40
  self.client = genai.Client(api_key=self.API_KEY)
41
  self.toolsLoader.load_tools()
42
  self.model_name = gemini_model
43
+ self.memory_manager = MemoryManager() if use_memory else None
44
  with open(system_prompt_file, 'r', encoding="utf8") as f:
45
  self.system_prompt = f.read()
46
  self.messages = []
 
160
  return formatted_history
161
 
162
  def get_k_memories(self, query, k=5, threshold=0.0):
163
+ if not self.use_memory:
164
+ return []
165
  memories = MemoryManager().get_memories()
166
  for i in range(len(memories)):
167
  memories[i] = memories[i]['memory']
 
169
  return []
170
  top_k = min(k, len(memories))
171
  # Semantic Retrieval with GPU
172
+ if torch.cuda.is_available():
173
+ device = 'cuda'
174
+ elif torch.backends.mps.is_available() and torch.backends.mps.is_built():
175
+ device = 'mps'
176
+ else:
177
+ device = 'cpu'
178
  print(f"Using device: {device}")
179
  model = SentenceTransformer('all-MiniLM-L6-v2', device=device)
180
  doc_embeddings = model.encode(memories, convert_to_tensor=True, device=device)
 
189
  return results
190
 
191
  def run(self, messages):
192
+ if self.use_memory:
193
+ memories = self.get_k_memories(messages[-1]['content'], k=5, threshold=0.1)
194
+ if len(memories) > 0:
195
+ messages.append({
196
+ "role": "memories",
197
+ "content": f"{memories}",
198
+ })
199
+ messages.append({
200
+ "role": "assistant",
201
+ "content": f"Memories: {memories}",
202
+ "metadata": {"title": "Memories"}
203
+ })
204
+ yield messages
205
  yield from self.invoke_manager(messages)
206
 
207
  def invoke_manager(self, messages):
src/tools/default_tools/memory_manager.py CHANGED
@@ -2,6 +2,7 @@
2
  __all__ = ['MemoryManager']
3
 
4
  import json
 
5
 
6
 
7
  class MemoryManager():
@@ -43,11 +44,13 @@ class MemoryManager():
43
  return memory_list
44
 
45
  def update_memories(self, memories):
46
- # save the memory to src/data/memory.json
 
47
  with open("src/data/memory.json", "w") as f:
48
  json.dump(memories, f, indent=4)
49
 
50
 
 
51
  def run(self, **kwargs):
52
  # save it to src/data/memory.json
53
  action = kwargs.get("action")
 
2
  __all__ = ['MemoryManager']
3
 
4
  import json
5
+ import os
6
 
7
 
8
  class MemoryManager():
 
44
  return memory_list
45
 
46
  def update_memories(self, memories):
47
+ os.makedirs("src/data", exist_ok=True)
48
+ # Save the memory to src/data/memory.json
49
  with open("src/data/memory.json", "w") as f:
50
  json.dump(memories, f, indent=4)
51
 
52
 
53
+
54
  def run(self, **kwargs):
55
  # save it to src/data/memory.json
56
  action = kwargs.get("action")