coach-gph / src /database.py
jntak's picture
Upload folder using huggingface_hub
40050e3 verified
Raw
History Blame Contribute Delete
1.88 kB
import sqlite3
import json
from langchain.memory import ConversationBufferMemory
DB_FILE = ".conversation_memory.db"
class Memory:
def __init__(self, memory_key="chat_history"):
self.memory_key = memory_key
self.memory = ConversationBufferMemory(memory_key=memory_key, return_messages=True)
self._init_db()
self._load_history()
def _init_db(self):
conn = sqlite3.connect(DB_FILE)
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS conversations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
question TEXT,
answer TEXT
)
""")
conn.commit()
conn.close()
def _load_history(self):
conn = sqlite3.connect(DB_FILE)
cursor = conn.cursor()
cursor.execute("SELECT question, answer FROM conversations")
rows = cursor.fetchall()
conn.close()
for question, answer in rows:
self.memory.chat_memory.add_user_message(question)
self.memory.chat_memory.add_ai_message(answer)
def save_context(self, inputs, outputs):
"""Save both to memory and to SQLite"""
question = inputs.get("question")
answer = outputs.get("output")
if question and answer:
# Save to in-memory buffer
self.memory.save_context(inputs, outputs)
# Save to SQLite
conn = sqlite3.connect(DB_FILE)
cursor = conn.cursor()
cursor.execute(
"INSERT INTO conversations (question, answer) VALUES (?, ?)",
(question, answer)
)
conn.commit()
conn.close()
def load_memory_variables(self, inputs=None):
return self.memory.load_memory_variables(inputs)