Lake-Chatbot / app.py
BICORP's picture
Update app.py
48aec90 verified
raw
history blame
3.58 kB
import random
from gradio_client import Client
import gradio as gr
# List of available servers (replace with actual server endpoints)
servers = [
"BICORP/GOGOGOGO",
"BICORP/server-2",
"BICORP/server-3",
"BICORP/server-4",
"BICORP/server-5"
]
# Function to call the API with error handling
def call_api(message, model, preset):
selected_server = random.choice(servers) # Randomly select a server
client = Client(selected_server) # Create a client for the selected server
try:
# Call the /chat endpoint with the provided parameters
result = client.predict(
message=message,
param_2=model,
param_3=preset,
api_name="/chat"
)
return result
except Exception as e:
return f"Error: {str(e)}"
# Custom CSS for styling
css = """
.gradio-container {
background-color: #121212;
font-family: 'Inter', sans-serif;
padding: 25px;
border-radius: 12px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
color: #FFFFFF;
}
h2 {
color: #E0E0E0;
text-align: center;
margin-bottom: 15px;
}
.input-container {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
}
.gr-button {
background-color: #1E88E5;
color: white;
font-weight: bold;
border: none;
border-radius: 8px;
padding: 8px 16px;
transition: background-color 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
}
.gr-button:hover {
background-color: #1565C0;
box-shadow: 0 4px 8px rgba(21, 101, 192, 0.3);
}
.response-box {
background-color: #1E1E1E;
border: 1px solid #333;
border-radius: 8px;
padding: 15px;
margin-top: 15px;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);
height: 250px; /* Fixed height for response area */
overflow-y: auto; /* Scroll if content exceeds height */
}
.settings-container {
margin-top: 25px;
background-color: #1E1E1E;
border: 1px solid #333;
border-radius: 8px;
padding: 15px;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);
}
"""
# Create Gradio interface
def create_interface():
with gr.Blocks(css=css) as demo:
gr.Markdown("## Chat with Random Server")
# Input container for message and send button
with gr.Row(elem_id="input-container"):
message = gr.Textbox(
label="Message",
placeholder="Type your message here...",
elem_id="message-input",
lines=1
)
submit_btn = gr.Button("Send", elem_id="send-button")
output = gr.Textbox(
label="Response",
interactive=False,
elem_id="response-box",
lines=10,
show_label=False
)
# Settings section
with gr.Accordion("⚙️ Settings", open=False, elem_id="settings-container"):
model = gr.Dropdown(
choices=["Lake 1 Base"],
label="Select Model",
value="Lake 1 Base"
)
preset = gr.Dropdown(
choices=["Fast", "Normal", "Quality", "Unreal Performance"],
label="Select Preset",
value="Fast"
)
# Button click event with loading indicator
submit_btn.click(call_api, inputs=[message, model, preset], outputs=output)
return demo
# Launch the interface
if __name__ == "__main__":
interface = create_interface()
interface.launch()