Daemontatox commited on
Commit
8e69089
·
verified ·
1 Parent(s): af3be11

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -24
app.py CHANGED
@@ -194,7 +194,7 @@ def process_example(example: str) -> tuple:
194
 
195
  def main():
196
  """Main function to set up and launch the Gradio interface"""
197
- with gr.Blocks(css=CSS, theme="JohnSmith9982/small_and_pretty") as demo:
198
  gr.HTML(TITLE)
199
  gr.DuplicateButton(
200
  value="",
@@ -211,29 +211,76 @@ def main():
211
  elem_classes=["chat-area"],
212
  )
213
 
214
- # Wrap message input and submit button in a form
215
- with gr.Form(elem_id="chat-form"):
216
- message = gr.TextArea(
217
- placeholder=PLACEHOLDER,
218
- label="Your message",
219
- lines=3,
220
- elem_classes=["message-input"],
221
- autofocus=True
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  )
223
-
224
- with gr.Row():
225
- submit = gr.Button("Send", elem_id="submit-btn")
226
- clear = gr.Button("Clear")
227
 
228
- # [Rest of the UI components remain the same]
 
 
 
 
 
 
229
 
230
- # Updated JavaScript handler for Enter key and RTL support
231
  js_handler = """
232
  function setupKeyboardHandler() {
233
- const textArea = document.querySelector('.message-input textarea');
234
- const form = document.getElementById('chat-form');
235
 
236
- if (textArea && form) {
237
  textArea.addEventListener('keydown', function(e) {
238
  // Check for Arabic characters
239
  const containsArabic = /[\u0600-\u06FF]/.test(this.value);
@@ -248,19 +295,19 @@ def main():
248
  // Submit on Enter without Shift
249
  if (e.key === 'Enter' && !e.shiftKey) {
250
  e.preventDefault();
251
- const submitBtn = document.getElementById('submit-btn');
252
- if (submitBtn) {
253
- submitBtn.click();
254
- }
255
  }
256
  });
 
 
 
257
  }
258
  }
259
 
260
  // Run setup when the page loads
261
  document.addEventListener('DOMContentLoaded', setupKeyboardHandler);
262
- // Also run setup after Gradio refreshes the UI
263
- document.addEventListener('gradio-loaded', setupKeyboardHandler);
264
  """
265
 
266
  # Set up event handlers
 
194
 
195
  def main():
196
  """Main function to set up and launch the Gradio interface"""
197
+ with gr.Blocks(css=CSS) as demo: # Removed invalid theme
198
  gr.HTML(TITLE)
199
  gr.DuplicateButton(
200
  value="",
 
211
  elem_classes=["chat-area"],
212
  )
213
 
214
+ # Removed Form wrapper and simplified structure
215
+ message = gr.TextArea(
216
+ placeholder=PLACEHOLDER,
217
+ label="Your message",
218
+ lines=3,
219
+ elem_classes=["message-input"],
220
+ elem_id="message-input" # Added elem_id for JavaScript
221
+ )
222
+
223
+ with gr.Row():
224
+ submit = gr.Button("Send", elem_id="submit-btn")
225
+ clear = gr.Button("Clear")
226
+
227
+ with gr.Accordion("⚙️ Advanced Settings", open=False):
228
+ system_prompt = gr.TextArea(
229
+ value=DEFAULT_SYSTEM_PROMPT,
230
+ label="System Prompt",
231
+ lines=7,
232
+ )
233
+ temperature = gr.Slider(
234
+ minimum=0,
235
+ maximum=1,
236
+ step=0.1,
237
+ value=0,
238
+ label="Temperature",
239
+ )
240
+ max_tokens = gr.Slider(
241
+ minimum=128,
242
+ maximum=32000,
243
+ step=128,
244
+ value=8192,
245
+ label="Max Tokens",
246
+ )
247
+ top_p = gr.Slider(
248
+ minimum=0.1,
249
+ maximum=1.0,
250
+ step=0.1,
251
+ value=0.8,
252
+ label="Top-p",
253
+ )
254
+ top_k = gr.Slider(
255
+ minimum=1,
256
+ maximum=100,
257
+ step=1,
258
+ value=40,
259
+ label="Top-k",
260
+ )
261
+ penalty = gr.Slider(
262
+ minimum=1.0,
263
+ maximum=2.0,
264
+ step=0.1,
265
+ value=1.2,
266
+ label="Repetition Penalty",
267
  )
 
 
 
 
268
 
269
+ examples = gr.Examples(
270
+ examples=create_examples(),
271
+ inputs=[message],
272
+ outputs=[chat_history, chat_display],
273
+ fn=process_example,
274
+ cache_examples=False,
275
+ )
276
 
277
+ # Updated JavaScript handler
278
  js_handler = """
279
  function setupKeyboardHandler() {
280
+ const textArea = document.getElementById('message-input').querySelector('textarea');
281
+ const submitBtn = document.getElementById('submit-btn');
282
 
283
+ if (textArea && submitBtn) {
284
  textArea.addEventListener('keydown', function(e) {
285
  // Check for Arabic characters
286
  const containsArabic = /[\u0600-\u06FF]/.test(this.value);
 
295
  // Submit on Enter without Shift
296
  if (e.key === 'Enter' && !e.shiftKey) {
297
  e.preventDefault();
298
+ submitBtn.click();
 
 
 
299
  }
300
  });
301
+
302
+ // Focus the textarea on load
303
+ textArea.focus();
304
  }
305
  }
306
 
307
  // Run setup when the page loads
308
  document.addEventListener('DOMContentLoaded', setupKeyboardHandler);
309
+ // Also run setup after any Gradio refreshes
310
+ document.addEventListener('change', setupKeyboardHandler);
311
  """
312
 
313
  # Set up event handlers