Serg4451D commited on
Commit
ddd74f4
·
verified ·
1 Parent(s): ce3af93

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -2
app.py CHANGED
@@ -300,5 +300,36 @@ with gr.Blocks(css=css, analytics_enabled=False) as demo:
300
  caption_cache = gr.State(value={"image_path": None, "caption": None})
301
 
302
  # обработчик клика по галерее: сразу подставляет картинку, генерирует подпись и обновляет кеш
303
- def on_gallery_select(elem, cach
304
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
300
  caption_cache = gr.State(value={"image_path": None, "caption": None})
301
 
302
  # обработчик клика по галерее: сразу подставляет картинку, генерирует подпись и обновляет кеш
303
+ def on_gallery_select(elem, cache):
304
+ # elem может быть строкой (URL) или список/tuple в некоторых версиях
305
+ img = None
306
+ if isinstance(elem, (list, tuple)):
307
+ img = elem[0] if elem else None
308
+ else:
309
+ img = elem
310
+ caption, new_cache = generate_and_cache_caption(img, cache)
311
+ # возвращаем (image_input value, raw_caption, new_cache)
312
+ return img, caption, new_cache
313
+
314
+ gallery.select(on_gallery_select, inputs=[gallery, caption_cache], outputs=[image_input, raw_caption, caption_cache])
315
+
316
+ # обработчик изменения image_input (загрузка своей картинки)
317
+ def on_image_change(image, cache):
318
+ caption, new_cache = generate_and_cache_caption(image, cache)
319
+ return caption, new_cache
320
+
321
+ image_input.change(on_image_change, inputs=[image_input, caption_cache], outputs=[raw_caption, caption_cache])
322
+
323
+ # отправка (кнопка или Enter) — стриминг LLM, outputs: (chatbot, raw_caption)
324
+ send_btn.click(chat_stream, inputs=[image_input, user_input, chatbot, caption_cache], outputs=[chatbot, raw_caption])
325
+ user_input.submit(chat_stream, inputs=[image_input, user_input, chatbot, caption_cache], outputs=[chatbot, raw_caption])
326
+
327
+ # очистка: сбрасываем чат и кеш
328
+ def clear_all():
329
+ return [], {"image_path": None, "caption": None}, ""
330
+
331
+ clear_btn.click(clear_all, inputs=None, outputs=[chatbot, caption_cache, raw_caption])
332
+
333
+ # Запуск (в HF Spaces не указывать share=True)
334
+ if __name__ == "__main__":
335
+ demo.launch(server_name="0.0.0.0", server_port=int(os.environ.get("PORT", 7860)))