Spaces:
Runtime error
Runtime error
| 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 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 | |
| def set_recommendation_count(last_session_id): | |
| mongodb_chat_recommendation_collection = settings.mongodb_db.get_collection(settings.MONGODB_DB_CHAT_RECOMEDATION_COLLECTION_NAME) | |
| if mongodb_chat_recommendation_collection.count_documents({"session_id": last_session_id})==0: | |
| mongodb_chat_recommendation_collection.insert_one({"session_id": last_session_id,"give_recommendation": True} ) | |
| def get_recommendation_count(last_session_id): | |
| mongodb_chat_recommendation_collection = settings.mongodb_db.get_collection(settings.MONGODB_DB_CHAT_RECOMEDATION_COLLECTION_NAME) | |
| data = mongodb_chat_recommendation_collection.find_one({"session_id":last_session_id}) | |
| if data: | |
| return data['give_recommendation'] | |
| else: | |
| return False | |
| def save_message(query,user_id): | |
| mongodb_chat_history_collection = settings.mongodb_db.get_collection(settings.MONGODB_DB_CHAT_COLLECTION_NAME) | |
| previous_session_id = get_last_session(user_id)['last_session_id'] | |
| history = { | |
| "type": "ai", | |
| "data": { | |
| "content": query, | |
| "additional_kwargs": {}, | |
| "response_metadata": {}, | |
| "type": "ai", | |
| "name": None, | |
| "id": None, | |
| "example": False, | |
| "tool_calls": [], | |
| "invalid_tool_calls": [], | |
| "usage_metadata": None} | |
| } | |
| document = { | |
| "SessionId": previous_session_id, | |
| "History": json.dumps(history) | |
| } | |
| mongodb_chat_history_collection.insert_one(document) | |
| return True | |