Spaces:
Running
Running
Restructure to allow clearing of the chat when switching models
Browse files
app.py
CHANGED
@@ -8,7 +8,7 @@ from utils import COMMUNITY_POSTFIX_URL, get_model_config, log_message, check_fo
|
|
8 |
print(f"Gradio version: {gr.__version__}")
|
9 |
|
10 |
DEFAULT_MODEL_NAME = "Apriel-Nemotron-15b-Thinker"
|
11 |
-
|
12 |
|
13 |
chat_start_count = 0
|
14 |
model_config = None
|
@@ -41,6 +41,11 @@ def chat_fn(message, history):
|
|
41 |
log_message(f"chat_fn() --> Message: {message}")
|
42 |
log_message(f"chat_fn() --> History: {history}")
|
43 |
|
|
|
|
|
|
|
|
|
|
|
44 |
global chat_start_count
|
45 |
chat_start_count = chat_start_count + 1
|
46 |
print(
|
@@ -146,6 +151,13 @@ description = None
|
|
146 |
with gr.Blocks(theme=gr.themes.Default(primary_hue="green")) as demo:
|
147 |
gr.HTML("""
|
148 |
<style>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
.model-message {
|
150 |
text-align: end;
|
151 |
}
|
@@ -194,7 +206,14 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue="green")) as demo:
|
|
194 |
max-height: 400px;
|
195 |
}
|
196 |
}
|
197 |
-
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
198 |
|
199 |
with gr.Row(variant="panel", elem_classes="responsive-row"):
|
200 |
with gr.Column(scale=1, min_width=400, elem_classes="model-dropdown-container"):
|
@@ -216,30 +235,56 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue="green")) as demo:
|
|
216 |
elem_classes="chatbot",
|
217 |
)
|
218 |
|
219 |
-
chat_interface = gr.ChatInterface(
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
)
|
|
|
226 |
|
227 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
228 |
demo.load(lambda: setup_model(DEFAULT_MODEL_NAME, intial=False), [], [description_html])
|
229 |
|
230 |
|
231 |
def update_model_and_clear(model_name):
|
232 |
-
# Remove the "Model: " prefix to get the actual model name
|
233 |
actual_model_name = model_name.replace("Model: ", "")
|
234 |
desc = setup_model(actual_model_name)
|
235 |
-
|
236 |
-
return desc
|
237 |
-
|
238 |
|
239 |
model_dropdown.change(
|
240 |
fn=update_model_and_clear,
|
241 |
inputs=[model_dropdown],
|
242 |
-
outputs=[description_html]
|
243 |
)
|
244 |
|
245 |
demo.launch(ssr_mode=False)
|
|
|
8 |
print(f"Gradio version: {gr.__version__}")
|
9 |
|
10 |
DEFAULT_MODEL_NAME = "Apriel-Nemotron-15b-Thinker"
|
11 |
+
BUTTON_WIDTH = 160
|
12 |
|
13 |
chat_start_count = 0
|
14 |
model_config = None
|
|
|
41 |
log_message(f"chat_fn() --> Message: {message}")
|
42 |
log_message(f"chat_fn() --> History: {history}")
|
43 |
|
44 |
+
# Check if the message is empty
|
45 |
+
if not message.strip():
|
46 |
+
gr.Warning("Please enter a message before sending.")
|
47 |
+
return history
|
48 |
+
|
49 |
global chat_start_count
|
50 |
chat_start_count = chat_start_count + 1
|
51 |
print(
|
|
|
151 |
with gr.Blocks(theme=gr.themes.Default(primary_hue="green")) as demo:
|
152 |
gr.HTML("""
|
153 |
<style>
|
154 |
+
.html-container:has(.css-styles) {
|
155 |
+
padding: 0;
|
156 |
+
margin: 0;
|
157 |
+
}
|
158 |
+
|
159 |
+
.css-styles { height: 0; }
|
160 |
+
|
161 |
.model-message {
|
162 |
text-align: end;
|
163 |
}
|
|
|
206 |
max-height: 400px;
|
207 |
}
|
208 |
}
|
209 |
+
""" + f"""
|
210 |
+
@media (min-width: 1024px) {{
|
211 |
+
.send-button-container, .clear-button-container {{
|
212 |
+
max-width: {BUTTON_WIDTH}px;
|
213 |
+
}}
|
214 |
+
}}
|
215 |
+
</style>
|
216 |
+
""", elem_classes="css-styles")
|
217 |
|
218 |
with gr.Row(variant="panel", elem_classes="responsive-row"):
|
219 |
with gr.Column(scale=1, min_width=400, elem_classes="model-dropdown-container"):
|
|
|
235 |
elem_classes="chatbot",
|
236 |
)
|
237 |
|
238 |
+
# chat_interface = gr.ChatInterface(
|
239 |
+
# chat_fn,
|
240 |
+
# description="",
|
241 |
+
# type="messages",
|
242 |
+
# chatbot=chatbot,
|
243 |
+
# fill_height=True,
|
244 |
+
# )
|
245 |
+
|
246 |
+
with gr.Row():
|
247 |
+
with gr.Column(scale=10, min_width=400, elem_classes="user-input-container"):
|
248 |
+
user_input = gr.Textbox(
|
249 |
+
show_label=False,
|
250 |
+
placeholder="Type your message here and press Enter",
|
251 |
+
container=False,
|
252 |
+
)
|
253 |
+
with gr.Column(scale=1, min_width=BUTTON_WIDTH * 2 + 20):
|
254 |
+
with gr.Row():
|
255 |
+
with gr.Column(scale=1, min_width=BUTTON_WIDTH, elem_classes="send-button-container"):
|
256 |
+
send_btn = gr.Button("Send", variant="primary")
|
257 |
+
with gr.Column(scale=1, min_width=BUTTON_WIDTH, elem_classes="clear-button-container"):
|
258 |
+
clear_btn = gr.ClearButton(chatbot, value="New Chat", variant="secondary")
|
259 |
+
|
260 |
+
# on Enter: stream into the chatbot, then clear the textbox
|
261 |
+
user_input.submit(
|
262 |
+
fn=chat_fn,
|
263 |
+
inputs=[user_input, chatbot],
|
264 |
+
outputs=[chatbot]
|
265 |
)
|
266 |
+
user_input.submit(lambda: "", None, user_input, queue=False)
|
267 |
|
268 |
+
send_btn.click(
|
269 |
+
fn=chat_fn,
|
270 |
+
inputs=[user_input, chatbot],
|
271 |
+
outputs=[chatbot]
|
272 |
+
)
|
273 |
+
send_btn.click(lambda: "", None, user_input, queue=False)
|
274 |
+
|
275 |
+
# Ensure the model is reset to default on page reload
|
276 |
demo.load(lambda: setup_model(DEFAULT_MODEL_NAME, intial=False), [], [description_html])
|
277 |
|
278 |
|
279 |
def update_model_and_clear(model_name):
|
|
|
280 |
actual_model_name = model_name.replace("Model: ", "")
|
281 |
desc = setup_model(actual_model_name)
|
282 |
+
return desc, []
|
|
|
|
|
283 |
|
284 |
model_dropdown.change(
|
285 |
fn=update_model_and_clear,
|
286 |
inputs=[model_dropdown],
|
287 |
+
outputs=[description_html, chatbot]
|
288 |
)
|
289 |
|
290 |
demo.launch(ssr_mode=False)
|