File size: 2,810 Bytes
c489fd1
 
 
 
7b6c2ba
c489fd1
 
 
 
 
 
 
 
7b6c2ba
c489fd1
dc63802
 
de73e4c
c489fd1
7b6c2ba
c489fd1
8814186
 
 
c489fd1
 
 
 
 
 
7b6c2ba
c489fd1
de73e4c
dc63802
 
de73e4c
c489fd1
 
dc63802
 
de73e4c
dc63802
 
 
de73e4c
c489fd1
 
dc63802
de73e4c
 
dc63802
 
de73e4c
dc63802
de73e4c
 
 
 
 
dc63802
 
 
c489fd1
 
de73e4c
dc63802
 
 
7b6c2ba
9f94225
 
de73e4c
dc63802
9f94225
 
de73e4c
dc63802
c489fd1
 
 
7b6c2ba
c489fd1
 
de73e4c
 
7b6c2ba
dc63802
de73e4c
7b6c2ba
dc63802
 
 
9f94225
7b6c2ba
48aec90
dc63802
 
 
9f94225
7b6c2ba
dc63802
c489fd1
 
 
7b6c2ba
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
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 correct parameters**
def call_api(message, model, preset):
    selected_server = random.choice(servers)
    client = Client(selected_server)
    
    try:
        # **Get API parameter names (replace with actual API parameter names from "View API")**
        result = client.predict(
            message,  # First input
            model,    # Second input (correct parameter name)
            preset,   # Third input (correct parameter name)
            api_name="/chat"
        )
        return result
    except Exception as e:
        return f"Error: {str(e)}"

# **Custom CSS for clean 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()