bradnow commited on
Commit
2d42f7a
·
1 Parent(s): d055fb3

Add some limits to uploaded files and a max to send to the model

Browse files
Files changed (1) hide show
  1. app.py +27 -1
app.py CHANGED
@@ -40,6 +40,9 @@ openai_client = None
40
  USE_RANDOM_ENDPOINT = False
41
  endpoint_rotation_count = 0
42
 
 
 
 
43
 
44
  def app_loaded(state, request: gr.Request):
45
  message_html = setup_model(DEFAULT_MODEL_NAME, intial=False)
@@ -160,6 +163,11 @@ def run_chat_inference(history, message, state):
160
  yield history, INPUT_ENABLED, SEND_BUTTON_ENABLED, STOP_BUTTON_DISABLED, BUTTON_ENABLED, state
161
  return history, INPUT_ENABLED, SEND_BUTTON_ENABLED, STOP_BUTTON_DISABLED, BUTTON_ENABLED, state
162
 
 
 
 
 
 
163
  try:
164
  # Check if the message is empty
165
  if not message.strip() and len(files) == 0:
@@ -343,6 +351,24 @@ def run_chat_inference(history, message, state):
343
 
344
  log_debug(f"sending api_messages to model {model_name}: {api_messages}")
345
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  stream = openai_client.chat.completions.create(
347
  model=model_name,
348
  messages=api_messages,
@@ -598,5 +624,5 @@ with gr.Blocks(theme=theme, css=custom_css) as demo:
598
  api_name=False
599
  )
600
 
601
- demo.queue(default_concurrency_limit=2).launch(ssr_mode=False, show_api=False)
602
  log_info("Gradio app launched")
 
40
  USE_RANDOM_ENDPOINT = False
41
  endpoint_rotation_count = 0
42
 
43
+ # Maximum number of image messages allowed per request
44
+ MAX_IMAGE_MESSAGES = 5
45
+
46
 
47
  def app_loaded(state, request: gr.Request):
48
  message_html = setup_model(DEFAULT_MODEL_NAME, intial=False)
 
163
  yield history, INPUT_ENABLED, SEND_BUTTON_ENABLED, STOP_BUTTON_DISABLED, BUTTON_ENABLED, state
164
  return history, INPUT_ENABLED, SEND_BUTTON_ENABLED, STOP_BUTTON_DISABLED, BUTTON_ENABLED, state
165
 
166
+ # Enforce maximum number of files/images per request
167
+ if len(files) > MAX_IMAGE_MESSAGES:
168
+ gr.Warning(f"Too many images provided; keeping only the first {MAX_IMAGE_MESSAGES} file(s).")
169
+ files = files[:MAX_IMAGE_MESSAGES]
170
+
171
  try:
172
  # Check if the message is empty
173
  if not message.strip() and len(files) == 0:
 
351
 
352
  log_debug(f"sending api_messages to model {model_name}: {api_messages}")
353
 
354
+ # Ensure we don't send too many images (count only messages whose content is a list of parts)
355
+ image_msg_indices = [
356
+ i for i, msg in enumerate(api_messages)
357
+ if isinstance(msg, dict) and isinstance(msg.get('content'), list)
358
+ ]
359
+ image_count = len(image_msg_indices)
360
+ if image_count > MAX_IMAGE_MESSAGES:
361
+ # Remove oldest image messages until we have MAX_IMAGE_MESSAGES or fewer
362
+ to_remove = image_count - MAX_IMAGE_MESSAGES
363
+ removed = 0
364
+ for idx in image_msg_indices:
365
+ if removed >= to_remove:
366
+ break
367
+ # Pop considering prior removals shift indices
368
+ api_messages.pop(idx - removed)
369
+ removed += 1
370
+ gr.Warning(f"Too many images provided; keeping the latest {MAX_IMAGE_MESSAGES} and dropped {removed} older image message(s).")
371
+
372
  stream = openai_client.chat.completions.create(
373
  model=model_name,
374
  messages=api_messages,
 
624
  api_name=False
625
  )
626
 
627
+ demo.queue(default_concurrency_limit=2).launch(ssr_mode=False, show_api=False, max_file_size="10mb")
628
  log_info("Gradio app launched")