Spaces:
Sleeping
Sleeping
File size: 1,712 Bytes
0d061c3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
import gradio as gr
import requests
from config import backend_url
file_id = None
def upload_file(file):
global file_id
if not file:
return "No file selected"
with open(file.name, "rb") as f:
files ={
"file": (file.name,f, "application/pdf")
}
res= requests.post(f"{backend_url}/api/gemini/upload-pdf", files=files)
if res.status_code == 200:
file_id = res.json().get("file_id")
return "File uploaded."
else:
return "Upload failed!"
def query_pdf(question):
if not file_id:
return "Please upload a PDF first!"
payload = {
"file_id": file_id,
"question" : question
}
with requests.post(
f"{backend_url}/api/gemini/query-pdf",
json=payload,
stream=True
) as res:
if res.status_code != 200:
yield f"Something's not right: {res.status_code} - {res.text}"
return
reply = ""
for chunk in res.iter_content(chunk_size=None, decode_unicode=True):
reply += chunk
yield reply
def create_pdf_tab():
with gr.Tab("PDF"):
pdf_file = gr.File(label="Upload PDF", file_types=[".pdf"])
upload_status = gr.Textbox(label="Upload Status")
question = gr.Textbox(label="Your question")
answer = gr.Textbox(label="Reply of Chatbot")
btn = gr.Button("Upload PDF")
query_btn = gr.Button("Ask")
btn.click(upload_file, [pdf_file], [upload_status])
query_btn.click(query_pdf, [question], [answer])
question.submit(query_pdf, [question], [answer])
|