Spaces:
Runtime error
Runtime error
| import sqlite3 | |
| import json | |
| from typing import List, Dict | |
| class MemoryManager: | |
| def __init__(self, db_path: str = "memory.db"): | |
| self.db_path = db_path | |
| self._init_db() | |
| def _init_db(self): | |
| with sqlite3.connect(self.db_path) as conn: | |
| conn.execute(""" | |
| CREATE TABLE IF NOT EXISTS sessions ( | |
| session_id TEXT PRIMARY KEY, | |
| history TEXT | |
| ) | |
| """) | |
| conn.commit() | |
| def get_history(self, session_id: str) -> List[Dict[str, str]]: | |
| with sqlite3.connect(self.db_path) as conn: | |
| cursor = conn.execute("SELECT history FROM sessions WHERE session_id = ?", (session_id,)) | |
| row = cursor.fetchone() | |
| if row: | |
| return json.loads(row[0]) | |
| return [] | |
| def save_message(self, session_id: str, role: str, content: str): | |
| history = self.get_history(session_id) | |
| history.append({"role": role, "content": content}) | |
| # Keep only last 10 messages for context window management if needed, | |
| # but the prompt says persistent history. | |
| with sqlite3.connect(self.db_path) as conn: | |
| conn.execute(""" | |
| INSERT OR REPLACE INTO sessions (session_id, history) | |
| VALUES (?, ?) | |
| """, (session_id, json.dumps(history))) | |
| conn.commit() | |
| def clear_session(self, session_id: str): | |
| with sqlite3.connect(self.db_path) as conn: | |
| conn.execute("DELETE FROM sessions WHERE session_id = ?", (session_id,)) | |
| conn.commit() | |
| memory_manager = MemoryManager() | |