Spaces:
Running
Running
| from typing import List, Dict | |
| import time | |
| class SessionMemory: | |
| def __init__(self): | |
| # session_id -> list of messages | |
| self.sessions: Dict[str, List[Dict[str, str]]] = {} | |
| # session_id -> last update timestamp | |
| self.last_update: Dict[str, float] = {} | |
| def get_history(self, session_id: str) -> List[Dict[str, str]]: | |
| if session_id not in self.sessions: | |
| self.sessions[session_id] = [] | |
| return self.sessions[session_id] | |
| def add_message(self, session_id: str, role: str, content: str): | |
| if session_id not in self.sessions: | |
| self.sessions[session_id] = [] | |
| self.sessions[session_id].append({"role": role, "content": content}) | |
| self.last_update[session_id] = time.time() | |
| # Limit history to last 10 messages to keep context size manageable | |
| if len(self.sessions[session_id]) > 10: | |
| self.sessions[session_id] = self.sessions[session_id][-10:] | |
| def clear_session(self, session_id: str): | |
| if session_id in self.sessions: | |
| del self.sessions[session_id] | |
| if session_id in self.last_update: | |
| del self.last_update[session_id] | |
| # Singleton instance | |
| memory_system = SessionMemory() | |