veda_bot_2.0 / cache.py
samlonka
Add new files for Veda Bot 2.0
9a19c9e
raw
history blame
2.13 kB
from langchain_openai import OpenAI
import os
import time
from langchain.cache import SQLAlchemyCache
from sqlalchemy import Column, Computed, Index, Integer, Sequence, String, create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
from datetime import datetime
#load postgres engine
engine = create_engine("postgresql://postgres:sampath@localhost:5432/postgres")
Base = declarative_base()
class FeedBackCache(Base):
"""Postgres table for fulltext-indexed LLM Cache"""
__tablename__ = "veda_bot_feedback"
id = Column(Integer, Sequence("cache_id"), primary_key=True)
user_message = Column(String, nullable=True)
assistant_message = Column(String, nullable=True)
feedback_score = Column(String, nullable=True)
feedback_text = Column(String, nullable=True)
# Create the table in the database
Base.metadata.create_all(engine)
def write_to_db(u_message, a_message, f_score, f_text):
try:
# Create a sessionmaker bound to the engine
Session = sessionmaker(bind=engine)
# Create a session
session = Session()
message = FeedBackCache(
user_message=u_message["content"],
assistant_message=a_message["content"],
feedback_score=f_score,
feedback_text=f_text
)
# Add the instance to the session
session.add(message)
# Commit the session to persist the changes to the database
session.commit()
print("Feedback written to DB successfully!")
except Exception as e:
# If an error occurs, rollback the session and print the error message
session.rollback()
print("Error occurred while writing feedback to DB:", e)
finally:
# Close the session
session.close()
def current_time() -> str:
"""Return the current time as a string. Used as part of the session UUID."""
# Get current date and time
current_datetime = datetime.now()
# Convert to a long number format
datetime_string = current_datetime.strftime("%Y%m%d%H%M%S")
return datetime_string