Spaces:
Sleeping
Sleeping
import gradio as gr | |
from advanced_rag import ElevatedRagChain | |
rag_chain = ElevatedRagChain() | |
def load_pdfs(pdf_links): | |
if not pdf_links: | |
gr.Warning("Please enter non-empty URLs") | |
return "Please enter non-empty URLs" | |
try: | |
pdf_links = pdf_links.split("\n") # get individual PDF links | |
rag_chain.add_pdfs_to_vectore_store(pdf_links) | |
gr.Info("PDFs loaded successfully into a new vector store. If you had an old one, it was overwritten.") | |
return "PDFs loaded successfully into a new vector store. If you had an old one, it was overwritten." | |
except Exception as e: | |
gr.Warning("Could not load PDFs. Are URLs valid?") | |
print(e) | |
return "Could not load PDFs. Are URLs valid?" | |
def submit_query(query): | |
if not query: | |
gr.Warning("Please enter a non-empty query") | |
return "Please enter a non-empty query" | |
if hasattr(rag_chain, 'elevated_rag_chain'): | |
try: | |
response = rag_chain.elevated_rag_chain.invoke(query) | |
return response | |
except Exception as e: | |
gr.Warning("LLM error. Please re-submit your query") | |
print(e) | |
return "LLM error. Please re-submit your query" | |
else: | |
gr.Warning("Please load PDFs before submitting a query") | |
return "Please load PDFs before submitting a query" | |
def reset_app(): | |
global rag_chain | |
rag_chain = ElevatedRagChain() # Re-initialize the ElevatedRagChain object | |
gr.Info("App reset successfully. You can now load new PDFs") | |
return "App reset successfully. You can now load new PDFs" | |
# custom css for different age elements | |
custom_css = """ | |
// customize button | |
button { | |
background-color: grey !important; | |
font-family: Arial !important; | |
font-weight: bold !important; | |
color: blue !important; | |
} | |
// customize background color and use it as "app = gr.Blocks(css=custom_css)" | |
//.gradio-container {background-color: #E0F7FA} | |
""" | |
# Define the Gradio app using Blocks for a flexible layout | |
app = gr.Blocks(css=custom_css) # theme=gr.themes.Base(), Soft(), Default(), Glass(), Monochrome(): https://www.gradio.app/guides/theming-guide | |
with app: | |
gr.Markdown('''# Query your own data | |
## Llama 2 RAG | |
- Type in one or more URLs for PDF files - one per line and click on Load PDFs. Wait until the RAG system is built. | |
- Type your query and click on Submit Query. Once the LLM sends back a reponse, it will be displayed in the Reponse field. | |
- The system "remembers" the source documents, but has no memory of past user queries. | |
- Click on Reset App to clear / reset the RAG system | |
''') | |
with gr.Row(): | |
with gr.Column(): | |
pdf_input = gr.Textbox(label="Enter your PDF URLs (one per line)", placeholder="Enter one URL per line", lines=4) | |
load_button = gr.Button("Load PDF") | |
with gr.Column(): | |
query_input = gr.Textbox(label="Enter your query here", placeholder="Type your query", lines=4) | |
submit_button = gr.Button("Submit") | |
response_output = gr.Textbox(label="Response", placeholder="Response will appear here", lines=4) | |
reset_button = gr.Button("Reset App") | |
load_button.click(load_pdfs, inputs=pdf_input, outputs=response_output) | |
submit_button.click(submit_query, inputs=query_input, outputs=response_output) | |
reset_button.click(reset_app, inputs=None, outputs=response_output) | |
# Run the app | |
app.launch() | |