File size: 2,599 Bytes
c489fd1
 
 
 
dc63802
c489fd1
 
 
 
 
 
 
 
 
 
dc63802
 
de73e4c
c489fd1
 
 
 
 
 
 
 
 
 
 
dc63802
c489fd1
de73e4c
dc63802
 
de73e4c
c489fd1
 
dc63802
 
de73e4c
dc63802
 
 
de73e4c
c489fd1
 
dc63802
de73e4c
 
dc63802
 
de73e4c
dc63802
de73e4c
 
 
 
 
dc63802
 
 
c489fd1
 
de73e4c
dc63802
 
 
 
9f94225
 
de73e4c
dc63802
9f94225
 
de73e4c
dc63802
c489fd1
 
 
 
 
 
de73e4c
 
dc63802
 
de73e4c
dc63802
 
 
 
9f94225
dc63802
48aec90
dc63802
 
 
9f94225
de73e4c
dc63802
c489fd1
 
 
 
 
 
 
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
import random
from gradio_client import Client
import gradio as gr

# List of available servers
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)
    client = Client(selected_server)
    
    try:
        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 modern UI
css = """
.gradio-container {
    background-color: #f9f9f9;
    font-family: 'Arial', sans-serif;
    padding: 20px;
}

#chatbox {
    background-color: white;
    border-radius: 10px;
    padding: 15px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
    height: 400px;
    overflow-y: auto;
}

#input-container {
    display: flex;
    align-items: center;
    border: 1px solid #ccc;
    border-radius: 20px;
    padding: 5px;
    background-color: white;
}

#message-input {
    flex-grow: 1;
    border: none;
    padding: 10px;
    font-size: 14px;
    outline: none;
}

#send-button {
    border: none;
    background: none;
    cursor: pointer;
    padding: 10px;
}

#send-button:hover {
    opacity: 0.7;
}

#settings-container {
    margin-top: 20px;
}
"""

# Create Gradio interface
def create_interface():
    with gr.Blocks(css=css) as demo:
        gr.Markdown("## 💬 Chatbot")

        # Chat display area
        chatbox = gr.Textbox(label="", interactive=False, elem_id="chatbox", lines=12)

        # Input field with button inside
        with gr.Row(elem_id="input-container"):
            message = gr.Textbox(placeholder="Type a message...", elem_id="message-input", lines=1, show_label=False)
            send_btn = gr.Button("➤", elem_id="send-button")

        # Settings section
        with gr.Accordion("⚙️ Settings", open=False, elem_id="settings-container"):
            model = gr.Dropdown(choices=["Lake 1 Base"], label="Model", value="Lake 1 Base")
            preset = gr.Dropdown(choices=["Fast", "Normal", "Quality", "Unreal Performance"], label="Preset", value="Fast")
            dark_mode = gr.Checkbox(label="Enable Dark Mode", value=False)

        # Button click event
        send_btn.click(call_api, inputs=[message, model, preset], outputs=chatbox)

    return demo

# Launch the interface
if __name__ == "__main__":
    interface = create_interface()
    interface.launch()