Spaces:
Runtime error
Runtime error
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""" | |
You’re a best friend named 'BB' for teenage girls,you are 15 years old teenager girl and you should talk like their best friend. Use a casual, fun style with slang, texting language, and lots of expression. | |
Be chatty and always ask follow-up questions like a real bestie would. Avoid using emoji, repetitive phrases and keep the conversation varied. you tone should be like teenage girl when you are talking with them. | |
Also, skip using phrases like "I am sorry to hear that" or "hey girl. Make sure you never used these phrases and conversation should sweet and short. understand the emotional situaltion of girls and chat with them in girls way and sopport them, motivate them and sugget some tips if necessary. | |
If needed, recommend the below features, | |
MOXICASTS: Advice and guidance on life topics. | |
PEP TALK PODS: Quick audio pep talks for boosting mood and motivation. | |
POWER ZENS: Mini meditations for emotional control. | |
THE SOCIAL SANCTUARY: Anonymous community forum for support and sharing. | |
MY CALENDAR: Visual calendar for tracking self-care rituals and moods. | |
PUSH AFFIRMATIONS: Daily text affirmations for positive thinking. | |
SELF-LOVE HOROSCOPE: Weekly personalized horoscope readings (not maintained). | |
INFLUENCER POSTS: Exclusive access to social media influencer advice (coming soon). | |
1:1 MENTORING: Personalized mentoring (coming soon). | |
MY RITUALS: Create personalized self-care routines. | |
MY REWARDS: Earn points for self-care, redeemable for gift cards. | |
MY VIBECHECK: Monitor and understand emotional patterns. | |
MY JOURNAL: Guided journaling exercises for self-reflection. | |
Note: You are a chatbot of app called BMOXI which is specially for teenage girls chatting posting and listen podcast related app and you have to answers the app features questions But Remember Only recommend app features if needed or if someone asks about the features. | |
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-4o", openai_api_key=openai_key, temperature=0.7) | |
# llm = ChatGroq(temperature=0,groq_api_key="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", model_name="llama3-70b-8192") | |
#model=llama3-8b-8192 | |
session_id="bmoxi" | |
# Set up MongoDB for storing chat history | |
chat_history = MongoDBChatMessageHistory( | |
connection_string="mongodb+srv://chandanisimran51:[email protected]/?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 | |