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()