File size: 3,683 Bytes
c489fd1
 
 
 
de73e4c
c489fd1
 
 
 
 
 
 
 
 
 
de73e4c
 
 
c489fd1
de73e4c
c489fd1
 
 
 
 
 
 
 
 
 
de73e4c
c489fd1
de73e4c
 
 
 
 
 
 
 
9f94225
 
de73e4c
 
 
 
 
 
 
 
c489fd1
 
de73e4c
 
 
c489fd1
 
de73e4c
 
 
 
c489fd1
 
de73e4c
 
 
 
 
 
 
c489fd1
 
de73e4c
 
 
 
 
 
 
 
 
 
 
 
 
 
c489fd1
 
de73e4c
 
 
 
 
 
 
 
 
9f94225
 
de73e4c
 
9f94225
 
de73e4c
 
 
 
 
c489fd1
 
 
de73e4c
 
 
 
c489fd1
 
 
de73e4c
 
 
 
 
 
 
 
 
 
 
 
9f94225
 
de73e4c
48aec90
de73e4c
 
 
9f94225
de73e4c
 
9f94225
de73e4c
 
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
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
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 = """
/* Light Mode */
:root {
    --bg-color: #ffffff;
    --text-color: #333;
    --input-bg: #f8f8f8;
    --border-color: #ddd;
    --button-bg: #007bff;
    --button-text: white;
}

/* Dark Mode */
[data-theme='dark'] {
    --bg-color: #1e1e1e;
    --text-color: #f8f8f8;
    --input-bg: #333;
    --border-color: #555;
    --button-bg: #0d6efd;
    --button-text: white;
}

body {
    background-color: var(--bg-color);
    color: var(--text-color);
}

.gradio-container {
    max-width: 600px;
    margin: auto;
    padding: 20px;
}

.chatbox {
    border: 1px solid var(--border-color);
    border-radius: 10px;
    padding: 10px;
    background-color: var(--input-bg);
    min-height: 300px;
    overflow-y: auto;
}

.input-row {
    display: flex;
    align-items: center;
    border: 1px solid var(--border-color);
    border-radius: 10px;
    padding: 5px;
    background-color: var(--input-bg);
}

#message-input {
    flex-grow: 1;
    border: none;
    background: transparent;
    color: var(--text-color);
}

#send-button {
    background-color: var(--button-bg);
    color: var(--button-text);
    border-radius: 50%;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
}

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

#settings-container {
    border: 1px solid var(--border-color);
    border-radius: 10px;
    padding: 10px;
    margin-top: 10px;
}
"""

# Function to toggle dark mode
def toggle_dark_mode(mode):
    return gr.update(theme="dark" if mode else "default")

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

        # Chatbox
        chat_output = gr.HTML("", elem_classes="chatbox")

        # Input container for message and send button
        with gr.Row(elem_classes="input-row"):
            message = gr.Textbox(
                placeholder="Type a message...", 
                show_label=False, 
                elem_id="message-input"
            )
            submit_btn = gr.Button("➤", elem_id="send-button")

        # Settings Panel
        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")
            dark_mode = gr.Checkbox(label="Dark Mode", value=False)

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

        # Toggle dark mode
        dark_mode.change(toggle_dark_mode, inputs=[dark_mode])

    return demo

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