bmoxi_single_user / database_functions.py
HarshSanghavi's picture
improved tone and system prompt
8b79aed verified
raw
history blame
6.84 kB
from config import settings
from langchain_mongodb.chat_message_histories import MongoDBChatMessageHistory
import json
import random
def create_new_session(user_id):
mongodb_chatbot_message_collection = settings.mongodb_db.get_collection(settings.MONGODB_DB_USER_SESSIONS_COLLECTION_NAME)
# print("********************************************************** NEW SESSION *******************************************************************")
try:
user_sessions = mongodb_chatbot_message_collection.find_one({"user_id": user_id})
# print(user_sessions, "LAST")
if user_sessions:
session_ids = user_sessions['session_id']
session_id = user_id + "_bmoxi_" + str(int(session_ids[-1].split("_")[-1])+1)
# print("session_id:", session_id)
mongodb_chatbot_message_collection.update_one({ "user_id": user_id },{"$push": {"session_id":session_id}})
return session_id
else:
mongodb_chatbot_message_collection.insert_one({ "user_id": user_id,"session_id":[user_id + "_bmoxi_1"]})
return user_id + "_bmoxi_1"
except:
mongodb_chatbot_message_collection.insert_one({ "user_id": user_id,"session_id":[user_id + "_bmoxi_1"]})
return user_id + "_bmoxi_1"
def get_last_session(user_id="user_1"):
mongodb_chatbot_message_collection = settings.mongodb_db.get_collection(
settings.MONGODB_DB_USER_SESSIONS_COLLECTION_NAME)
sessions_cursor = mongodb_chatbot_message_collection.find_one(
{"user_id": user_id})
# print(sessions_cursor)
sessions_list = sessions_cursor['session_id']
second_last_session_id = None
if len(sessions_list) >= 2:
second_last_session_id = sessions_list[-2]
change_use_tool_status(sessions_list[-1])
return {"last_session_id": sessions_list[-1], "second_last_session_id": second_last_session_id if second_last_session_id else None}
def get_chat_history(session_id="bmoxinew"):
# Set up MongoDB for storing chat history
chat_history = MongoDBChatMessageHistory(
connection_string=settings.MONGODB_CONNECTION_STRING,
database_name=settings.MONGODB_DB_NAME, # Specify the database name here
collection_name=settings.MONGODB_DB_CHAT_COLLECTION_NAME,
session_id=session_id,
)
return chat_history
def get_chat_bot_name(user_id="user_1"):
# print(settings.MONGODB_CONNECTION_STRING)
# print(settings.mongodb_chatbot_name_collection)
result = settings.mongodb_chatbot_name_collection.find_one(
{"user_id": user_id})
# print("CHATBOT RESULT", result, type(result))
if result:
# print(result)
return result['chat_bot_name']
return settings.CHATBOT_NAME
def get_last_conversion(last_session_id, second_last_session_id):
mongodb_chatbot_message_collection = settings.mongodb_db.get_collection(
settings.MONGODB_DB_CHAT_COLLECTION_NAME)
collection_count = mongodb_chatbot_message_collection.count_documents({"SessionId": last_session_id})
# print("******************************** data********************888")
# print(collection_count)
# print(last_session_id)
# print("*********************************")
if collection_count <=2:
sessions_cursor = mongodb_chatbot_message_collection.find({"SessionId": second_last_session_id}) # Sort by timestamp descending and limit to 2 results
# print(sessions_cursor)
sessions_list = list(sessions_cursor)
# print(sessions_list)
conversation = """"""
for document in sessions_list:
# print("MY document")
# print(document)
if "History" in document:
history = json.loads(document['History'])
# print(history)
# print(history['type'])
# print(history['data'])
# print(history['data']['content'])
conversation += f"""{history['type']}: {history['data']['content']}\n"""
return conversation
else:
return None
def set_chat_bot_name(name, user_id):
# Insert document into collection
insert_result = settings.mongodb_chatbot_name_collection.update_one({"user_id": user_id}, { "$set": { "chat_bot_name": name } }, upsert=True)
# print("done successfully...")
return name
def save_mood_summary(data,user_id):
mongodb_chatbot_mood_collection = settings.mongodb_db.get_collection(
settings.MONGODB_DB_CHAT_BOT_MOOD_COLLECTION_NAME)
mongodb_chatbot_mood_collection.insert_one(({"user_id": user_id, "mood_summary": data }))
def get_mood_data(user_id):
mongodb_chatbot_mood_collection = settings.mongodb_db.get_collection(settings.MONGODB_DB_CHAT_BOT_MOOD_COLLECTION_NAME)
data = mongodb_chatbot_mood_collection.find_one({"user_id":user_id})
if data:
return data['mood_summary']
else:
return ""
def use_tools(last_session_id):
mongodb_chatbot_tools_collection = settings.mongodb_db.get_collection(settings.MONGODB_DB_CHAT_BOT_TOOLS_COLLECTION_NAME)
data = mongodb_chatbot_tools_collection.find_one({"session_id": last_session_id})
if data and data['set_tools']==True:
return True
# print("*********************")
# print(last_session_id)
mongodb_chatbot_message_collection = settings.mongodb_db.get_collection(settings.MONGODB_DB_CHAT_COLLECTION_NAME)
collection_count = mongodb_chatbot_message_collection.count_documents({"SessionId": last_session_id})
if collection_count > random.randint(30,50):
mongodb_chatbot_tools_collection = settings.mongodb_db.get_collection(
settings.MONGODB_DB_CHAT_BOT_TOOLS_COLLECTION_NAME)
mongodb_chatbot_tools_collection.update_one({"session_id": last_session_id}, { "$set": { "set_tools": True} }, upsert=True)
return True
else:
return False
def change_use_tool_status(last_session_id):
mongodb_chatbot_tools_collection = settings.mongodb_db.get_collection(settings.MONGODB_DB_CHAT_BOT_TOOLS_COLLECTION_NAME)
if mongodb_chatbot_tools_collection.count_documents({"session_id": last_session_id})==0:
mongodb_chatbot_tools_collection.insert_one({"session_id": last_session_id,"set_tools": False} )
def isFirstSession(user_id):
mongodb_chatbot_message_collection = settings.mongodb_db.get_collection(settings.MONGODB_DB_USER_SESSIONS_COLLECTION_NAME)
user_sessions = mongodb_chatbot_message_collection.find_one({"user_id": user_id})
if user_sessions:
return len(user_sessions['session_id'])==1
else:
return False