bmoxi / chat.py
pritmanvar-bacancy's picture
Update chat.py
a0a6fc7 verified
from langchain.memory import ConversationBufferWindowMemory
from langchain_community.chat_models import ChatOpenAI
from langchain_mongodb.chat_message_histories import MongoDBChatMessageHistory
from langchain_experimental.data_anonymizer import PresidioReversibleAnonymizer
from langchain.agents import AgentExecutor
from langchain.agents.format_scratchpad import format_to_openai_functions
from langchain.agents.output_parsers import OpenAIFunctionsAgentOutputParser
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.schema.runnable import RunnablePassthrough
from langchain_core.utils.function_calling import convert_to_openai_function
from config import settings
from utils import deanonymizer, create_agent, set_chat_bot_name
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 chat_conversations(query,user_id):
anonymizer = PresidioReversibleAnonymizer(
analyzed_fields=["PHONE_NUMBER",
"EMAIL_ADDRESS", "CREDIT_CARD"],
faker_seed=42,
)
anonymized_input = anonymizer.anonymize(
query
)
agent = create_agent(user_id)
response = agent({"input": query})['output']
if "Okay, from now my name will be " in response:
set_chat_bot_name(response.split("Okay, from now my name will be ")[-1], "user_1")
return response
output = deanonymizer(response, anonymizer)
return response