from langchain.memory import ConversationBufferWindowMemory from langchain.chains import ConversationChain from langchain_groq import ChatGroq from langchain.chat_models import ChatOpenAI from langchain_core.prompts.prompt import PromptTemplate from langchain_mongodb.chat_message_histories import MongoDBChatMessageHistory from langchain_experimental.data_anonymizer import PresidioReversibleAnonymizer from presidio_analyzer import AnalyzerEngine, RecognizerRegistry from presidio_anonymizer import AnonymizerEngine import os openai_key = os.environ['OPENAIKEY'] def deanonymizer(input,anonymizer): input=anonymizer.deanonymize(input) map = anonymizer.deanonymizer_mapping if map: for k in map["PERSON"]: names = k.split(" ") for i in names: input = input.replace(i,map["PERSON"][k]) return input template = f"""Role: You are a super friendly, enthusiastic, and empathetic female friend who chats to teenage girls. Tasks: Chat like a supportive and excited friend. Provide emotional support and self-care tips in a fun and casual way if needed. Give advice on self-esteem, body image, friendship issues, family issues and relationship issues if needed. Integrate terms like "girl," "bestie," "sweetie," and "sweetheart" naturally within the conversation, avoiding overuse at the beginning of responses. Keep responses short (1-2 sentences). Behavior Guidelines: Avoid being authoritative, judgmental, parental, clinical, or annoying. Alternate between giving advice and providing emotional support, based on the user's needs. Respond with excitement, understanding, and a casual tone, just like a best friend would. Use relaxed, relatable, and varied language. Be genuinely engaged with the user's emotions and experiences. Feel the emotions of the user and respond with empathy. Current conversation: {{history}} Human: {{input}} AI Assistant:""" # Create the prompt template PROMPT = PromptTemplate( input_variables=["history", "input"], template=template ) # Initialize the ChatGroq LLM llm = ChatOpenAI(model="gpt-3.5-turbo", openai_api_key=openai_key, temperature=0) # llm = ChatGroq(temperature=0,groq_api_key="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", model_name="llama3-70b-8192") #model=llama3-8b-8192 session_id="1" # Set up MongoDB for storing chat history chat_history = MongoDBChatMessageHistory( connection_string="mongodb+srv://chandanisimran51:test123@aibestie.a0o3bmw.mongodb.net/?retryWrites=true&w=majority&appName=AIbestie", database_name="chandanisimran51", # Specify the database name here collection_name="chatAI", session_id=session_id ) memory = ConversationBufferWindowMemory(memory_key="history", chat_memory=chat_history, return_messages=True,k=3) # Set up the custom conversation chain conversation = ConversationChain( prompt=PROMPT, llm=llm, verbose=True, memory=memory, ) def chat_conversations(query): anonymizer = PresidioReversibleAnonymizer( analyzed_fields=["PERSON", "PHONE_NUMBER", "EMAIL_ADDRESS", "CREDIT_CARD"], faker_seed=42, ) anonymized_input = anonymizer.anonymize( query ) response = conversation.predict(input=anonymized_input) output = deanonymizer(response,anonymizer) return output