Spaces:
Running
Running
dynamic references gradio
Browse files
app.py
CHANGED
@@ -35,7 +35,7 @@ def image_to_bytes(image):
|
|
35 |
return base64.b64encode(img_byte_arr.getvalue()).decode("utf-8")
|
36 |
|
37 |
|
38 |
-
@spaces.GPU
|
39 |
def get_image_descriptions(images):
|
40 |
torch.cuda.empty_cache()
|
41 |
gc.collect()
|
@@ -244,8 +244,9 @@ def conversation(vectordb_client, msg, num_context, img_context, history):
|
|
244 |
"""
|
245 |
prompt = PromptTemplate(template=template, input_variables=["context", "question"])
|
246 |
context = "\n\n".join(results)
|
|
|
247 |
response = llm(prompt.format(context=context, question=msg, images=img_desc))
|
248 |
-
return history + [(msg, response)],
|
249 |
|
250 |
|
251 |
def check_validity_and_llm(session_states):
|
@@ -272,6 +273,8 @@ with gr.Blocks(css=CSS) as demo:
|
|
272 |
vectordb = gr.State()
|
273 |
doc_collection = gr.State(value=[])
|
274 |
session_states = gr.State(value={})
|
|
|
|
|
275 |
gr.Markdown(
|
276 |
"""<h2><center>Multimodal PDF Chatbot</center></h2>
|
277 |
<h3><center><b>Interact With Your PDF Documents</b></center></h3>"""
|
@@ -330,27 +333,7 @@ with gr.Blocks(css=CSS) as demo:
|
|
330 |
label="Sample Extracted Images", columns=1, rows=2
|
331 |
)
|
332 |
|
333 |
-
|
334 |
-
# image_desc = gr.Textbox(label="Image Descriptions", interactive=False)
|
335 |
-
# with gr.Row(variant="panel"):
|
336 |
-
# ext_tables = gr.HTML("<h3>Sample Tables</h3>", label="Extracted Tables")
|
337 |
-
|
338 |
-
# with gr.TabItem("Embeddings", id=3) as embed_tab:
|
339 |
-
# with gr.Row():
|
340 |
-
# with gr.Column():
|
341 |
-
# back_p2 = gr.Button(value="Back")
|
342 |
-
# with gr.Column():
|
343 |
-
# view_stats = gr.Button(value="View Stats")
|
344 |
-
# with gr.Column():
|
345 |
-
# next_p2 = gr.Button(value="Next")
|
346 |
-
|
347 |
-
# with gr.Row():
|
348 |
-
# with gr.Column():
|
349 |
-
# text_stats = gr.Textbox(label="Text Stats", interactive=False)
|
350 |
-
# with gr.Column():
|
351 |
-
# table_stats = gr.Textbox(label="Table Stats", interactive=False)
|
352 |
-
# with gr.Column():
|
353 |
-
# image_stats = gr.Textbox(label="Image Stats", interactive=False)
|
354 |
|
355 |
with gr.TabItem("Chat", id=2) as chat_tab:
|
356 |
with gr.Column():
|
@@ -382,8 +365,14 @@ with gr.Blocks(css=CSS) as demo:
|
|
382 |
with gr.Column():
|
383 |
chatbot = gr.Chatbot(height=400)
|
384 |
with gr.Accordion("Text References", open=False):
|
385 |
-
|
386 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
387 |
|
388 |
with gr.Row():
|
389 |
msg = gr.Textbox(
|
@@ -408,27 +397,20 @@ with gr.Blocks(css=CSS) as demo:
|
|
408 |
session_states,
|
409 |
sample_data,
|
410 |
ext_text,
|
411 |
-
# ext_tables,
|
412 |
images,
|
413 |
prog,
|
414 |
-
# image_desc
|
415 |
],
|
416 |
)
|
417 |
|
418 |
submit_btn.click(
|
419 |
conversation,
|
420 |
[vectordb, msg, num_context, img_context, chatbot],
|
421 |
-
[chatbot,
|
422 |
)
|
423 |
|
424 |
-
# view_stats.click(
|
425 |
-
# get_stats, [vectordb], outputs=[text_stats, table_stats, image_stats]
|
426 |
-
# )
|
427 |
-
|
428 |
-
# Page Navigation
|
429 |
|
430 |
back_p1.click(lambda: gr.Tabs(selected=0), None, tabs)
|
431 |
|
432 |
next_p1.click(check_validity_and_llm, session_states, tabs)
|
433 |
if __name__ == "__main__":
|
434 |
-
demo.launch(share=True)
|
|
|
35 |
return base64.b64encode(img_byte_arr.getvalue()).decode("utf-8")
|
36 |
|
37 |
|
38 |
+
@spaces.GPU(duration=60*4)
|
39 |
def get_image_descriptions(images):
|
40 |
torch.cuda.empty_cache()
|
41 |
gc.collect()
|
|
|
244 |
"""
|
245 |
prompt = PromptTemplate(template=template, input_variables=["context", "question"])
|
246 |
context = "\n\n".join(results)
|
247 |
+
# references = [gr.Textbox(i, visible=True, interactive=False) for i in results]
|
248 |
response = llm(prompt.format(context=context, question=msg, images=img_desc))
|
249 |
+
return history + [(msg, response)], results, images_and_locs
|
250 |
|
251 |
|
252 |
def check_validity_and_llm(session_states):
|
|
|
273 |
vectordb = gr.State()
|
274 |
doc_collection = gr.State(value=[])
|
275 |
session_states = gr.State(value={})
|
276 |
+
references = gr.State(value=[])
|
277 |
+
|
278 |
gr.Markdown(
|
279 |
"""<h2><center>Multimodal PDF Chatbot</center></h2>
|
280 |
<h3><center><b>Interact With Your PDF Documents</b></center></h3>"""
|
|
|
333 |
label="Sample Extracted Images", columns=1, rows=2
|
334 |
)
|
335 |
|
336 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
337 |
|
338 |
with gr.TabItem("Chat", id=2) as chat_tab:
|
339 |
with gr.Column():
|
|
|
365 |
with gr.Column():
|
366 |
chatbot = gr.Chatbot(height=400)
|
367 |
with gr.Accordion("Text References", open=False):
|
368 |
+
# text_context = gr.Row()
|
369 |
+
|
370 |
+
@gr.render(inputs=[references])
|
371 |
+
def gen_refs(refs):
|
372 |
+
n = len(refs)
|
373 |
+
for i in range(n):
|
374 |
+
gr.Textbox(label=f"Ref-{i+1}", value=refs[i], lines=3)
|
375 |
+
|
376 |
|
377 |
with gr.Row():
|
378 |
msg = gr.Textbox(
|
|
|
397 |
session_states,
|
398 |
sample_data,
|
399 |
ext_text,
|
|
|
400 |
images,
|
401 |
prog,
|
|
|
402 |
],
|
403 |
)
|
404 |
|
405 |
submit_btn.click(
|
406 |
conversation,
|
407 |
[vectordb, msg, num_context, img_context, chatbot],
|
408 |
+
[chatbot, references, ret_images],
|
409 |
)
|
410 |
|
|
|
|
|
|
|
|
|
|
|
411 |
|
412 |
back_p1.click(lambda: gr.Tabs(selected=0), None, tabs)
|
413 |
|
414 |
next_p1.click(check_validity_and_llm, session_states, tabs)
|
415 |
if __name__ == "__main__":
|
416 |
+
demo.launch(share=True)
|