Spaces:
Paused
Paused
File size: 1,829 Bytes
5c4b237 fe472d7 04b984b cc20725 5c4b237 fe472d7 5c4b237 cc20725 04b984b cc20725 fe472d7 cc20725 04b984b fe472d7 04b984b cc20725 fe472d7 cc20725 5c4b237 fe472d7 21f8ab5 fe472d7 21f8ab5 04b984b fe472d7 cc20725 fe472d7 cc20725 fe472d7 21f8ab5 16412fc fe472d7 21f8ab5 |
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 |
import gradio as gr
from datetime import datetime
import random
import uuid
# Shared state to store messages
messages = []
# Dictionary to store user colors
user_colors = {}
def get_user_color(user_id):
if user_id not in user_colors:
user_colors[user_id] = f"#{random.randint(0, 0xFFFFFF):06x}"
return user_colors[user_id]
def chat(message, history, user_id):
global messages
if not user_id:
# Generate a new user ID if one doesn't exist
user_id = str(uuid.uuid4())
# Add the new message to the shared state
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
user_color = get_user_color(user_id)
messages.append([None, f"<span style='color: {user_color};'>User_{user_id[:4]}</span>: {message}<br><small>{timestamp}</small>"])
# Return the updated chat history and user_id
return "", messages, user_id
def get_updates(history):
global messages
# Check if there are new messages
if len(messages) > len(history):
return messages
# If no new messages, return the current history
return history
# Custom CSS to hide the loading animation
custom_css = """
#chatbot .loading {
display: none !important;
}
"""
# Create the Gradio interface
with gr.Blocks(css=custom_css) as demo:
chatbot = gr.Chatbot(elem_id="chatbot")
msg = gr.Textbox(label="Type your message here")
clear = gr.Button("Clear")
user_id = gr.State(value='') # Add a state component to store the user ID
msg.submit(chat, [msg, chatbot, user_id], [msg, chatbot, user_id])
clear.click(lambda: [], outputs=[chatbot])
# Add an update function that runs every 0.05 seconds
demo.load(get_updates, inputs=chatbot, outputs=chatbot, every=0.2)
# Launch the app
if __name__ == "__main__":
demo.launch()
|