ams-core-api / services /memory_manager.py
Amssou's picture
Update services/memory_manager.py
0a61f20 verified
Raw
History Blame Contribute Delete
3.13 kB
import json
import os
MEMORY_FILE = "database/memory.json"
MAX_HISTORY = 10
class MemoryManager:
def __init__(self):
self._ensure_memory_file()
# =========================
# INIT MEMORY FILE
# =========================
def _ensure_memory_file(self):
if not os.path.exists("database"):
os.makedirs("database")
if not os.path.exists(MEMORY_FILE):
memory_structure = {
"history": [],
"preferences": {},
"projects": {},
"knowledge": []
}
with open(MEMORY_FILE, "w", encoding="utf-8") as f:
json.dump(memory_structure, f, indent=2, ensure_ascii=False)
# =========================
# LOAD MEMORY
# =========================
def load_memory(self):
with open(MEMORY_FILE, "r", encoding="utf-8") as f:
return json.load(f)
# =========================
# SAVE MEMORY
# =========================
def save_memory(self, memory):
with open(MEMORY_FILE, "w", encoding="utf-8") as f:
json.dump(memory, f, indent=2, ensure_ascii=False)
# =========================
# ADD CONVERSATION
# =========================
def add_exchange(self, user_message, assistant_response):
memory = self.load_memory()
history = memory.get("history", [])
history.append({
"user": user_message,
"assistant": assistant_response
})
history = history[-MAX_HISTORY:]
memory["history"] = history
self.save_memory(memory)
# =========================
# BUILD CONTEXT
# =========================
def build_context(self):
memory = self.load_memory()
history = memory.get("history", [])
if not history:
return ""
context = "\n\n## Conversation Context\n"
for exchange in history:
context += f"User: {exchange['user']}\n"
context += f"Assistant: {exchange['assistant']}\n"
return context
# =========================
# STORE PREFERENCE
# =========================
def store_preference(self, key, value):
memory = self.load_memory()
memory["preferences"][key] = value
self.save_memory(memory)
# =========================
# STORE PROJECT
# =========================
def store_project(self, name, data):
memory = self.load_memory()
memory["projects"][name] = data
self.save_memory(memory)
# =========================
# ADD KNOWLEDGE
# =========================
def add_knowledge(self, info):
memory = self.load_memory()
memory["knowledge"].append(info)
self.save_memory(memory)
# =========================
# CLEAR MEMORY
# =========================
def clear(self):
memory_structure = {
"history": [],
"preferences": {},
"projects": {},
"knowledge": []
}
self.save_memory(memory_structure)