bmoxi / chat.py
jarvisx17's picture
Update chat.py
41b3406 verified
raw
history blame
3.28 kB
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