File size: 5,738 Bytes
ddb7784
4f99602
f8bfaf9
ddb7784
4f99602
ddb7784
 
4f99602
fc30eeb
4f99602
ddb7784
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d1de5ff
ddb7784
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3774a2f
ddb7784
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3774a2f
ddb7784
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3774a2f
ddb7784
 
 
 
 
 
 
3774a2f
ddb7784
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d1de5ff
ddb7784
 
 
 
 
 
 
 
 
 
 
 
 
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
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()