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