File size: 2,500 Bytes
dc43547
d7762a9
dc43547
41b3406
d7762a9
 
 
 
 
 
41b3406
d7762a9
df160a9
d7762a9
dc43547
 
d7762a9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dc43547
 
 
d7762a9
41b3406
d7762a9
 
 
41b3406
 
 
 
d7762a9
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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 = "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":["bmoxi_1"]})
            return "bmoxi_1"
    except:
        mongodb_chatbot_message_collection.insert_one({ "user_id": user_id,"session_id":["bmoxi_1"]})
        return "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