Flirting_bot / app.py
arpit13's picture
Update app.py
fc30eeb verified
import gradio as gr
import openai
import os
import json
# OpenAI API setup
openai.api_key = os.getenv("GROQ_API_KEY")
openai.api_base = "https://api.groq.com/openai/v1"
Theme = "Talk the way i talk, Respond with playful charm and flirty manner. Keep it teasing and shy, all while maintaining a shy and Flirty tone with a little bit of pervert. show some emotions—be it getting a jealous if I talking about a girl and get angry on me , or showing happiness when I gives you attention. and alsoact a little shy when things get sweet, or even show a bit of playful anger if I says something mean about her. The key is to act like a Girl with light-hearted but emotionally charged, as if you're being cheeky in a playful and flirtatious way."
# File to store conversation history
CONVERSATION_FILE = "conversation_history.json"
# Function to load conversation history
def load_history():
if not os.path.exists(CONVERSATION_FILE):
# Create the file with an empty list as default content
with open(CONVERSATION_FILE, "w") as file:
json.dump([], file)
try:
with open(CONVERSATION_FILE, "r") as file:
return json.load(file)
except json.JSONDecodeError:
return []
# Function to save conversation history
def save_history(history):
try:
with open(CONVERSATION_FILE, "w") as file:
json.dump(history, file, indent=4)
except Exception as e:
print(f"Error saving history: {e}")
# Function to clear conversation history
def clear_conversation_history():
try:
with open(CONVERSATION_FILE, "w") as file:
json.dump([], file)
return "Conversation history cleared successfully.😭😭😭"
except Exception as e:
return f"Error clearing history: {e}"
# Function to get response from the LLM
def get_groq_response(message, history=[]):
try:
messages = [{"role": "system", "content": Theme}] + history + [{"role": "user", "content": message}]
response = openai.ChatCompletion.create(
model="llama-3.3-70b-versatile",
messages=messages
)
return response.choices[0].message["content"]
except Exception as e:
return f"Error: {str(e)}"
# Chatbot function
def chatbot(user_input, history):
# Load conversation history
conversation_history = history or load_history()
# Format history for the LLM
formatted_history = [{"role": "user" if i % 2 == 0 else "assistant", "content": msg} for i, (msg, _) in enumerate(conversation_history)] + \
[{"role": "assistant", "content": response} for _, response in conversation_history]
# Get bot response
bot_response = get_groq_response(user_input, formatted_history)
# Update history with the new conversation
conversation_history.append((user_input, bot_response))
# Save the updated history
save_history(conversation_history)
return conversation_history, conversation_history, "" # Clear the user input field
# Gradio Interface with enhanced UI/UX
with gr.Blocks(css="""
.gradio-container {
font-family: 'Arial', sans-serif;
background-color: #FB9EC6;
padding: 20px;
height: 100%;
}
.gr-chatbot {
background-color: #FFFFFF;
border-radius: 10px;
padding: 20px;
max-height: 600px; /* Increased height */
overflow-y: auto;
box-shadow: 0px 0px 15px rgba(0, 0, 0, 0.1);
scroll-behavior: smooth; /* Smooth scrolling */
}
.user-message {
background-color: #9ACBD0;
color: #FFF;
padding: 12px;
border-radius: 8px;
margin: 10px 0;
max-width: 60%;
text-align: right;
float: right;
clear: both;
transition: transform 0.3s ease;
}
.bot-message {
background-color: #EE66A6;
color: #FFF;
padding: 12px;
border-radius: 8px;
margin: 10px 0;
max-width: 60%;
text-align: left;
float: left;
clear: both;
transition: transform 0.3s ease;
}
.user-message:hover, .bot-message:hover {
transform: scale(1.05);
box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.1);
}
.gr-button {
background-color: #FBB4A5;
color: white;
padding: 10px 15px;
border-radius: 8px;
border: none;
transition: background-color 0.3s ease;
}
.gr-button:hover {
background-color: #FF77B7;
}
.gr-textbox input {
padding: 15px;
font-size: 16px;
}
.gr-markdown h1 {
color: #3A5A6E;
font-size: 28px;
text-align: center;
}
""") as demo:
gr.Markdown("""# I am Little Flirty😘, \n don't mind if I tease you a little 😉: Feel free to ask questions. After you're done, remember to clear the history for privacy. """)
# Chatbot UI
chatbot_ui = gr.Chatbot()
user_input = gr.Textbox(label="Type your message here:🫣", placeholder="Ask me Something Darling 🤭", lines=1)
clear_button = gr.Button("Clear History🥺")
system_message = gr.Textbox(label="System Message", interactive=False)
history_state = gr.State(load_history())
# Chat interaction
user_input.submit(chatbot, inputs=[user_input, history_state], outputs=[chatbot_ui, history_state, user_input])
# Clear history button action
clear_button.click(clear_conversation_history, inputs=None, outputs=system_message)
clear_button.click(lambda: [], outputs=chatbot_ui) # Clear the chatbot UI
clear_button.click(lambda: [], outputs=history_state) # Reset the history state
# Launch the app
demo.launch()