Spaces:
Build error
Build error
| import gradio as gr | |
| from utils.pdf_parser import extract_text_from_pdf | |
| from summarizer import Summarizer | |
| from qa_engine import QABot | |
| from chatbot import ask_model | |
| from suggestions import suggest_questions | |
| # Initialize summarizer and global variables | |
| summarizer = Summarizer() | |
| qa_bot = None | |
| summary = "" | |
| text_chunks = [] | |
| # Gradio chat history | |
| chat_history = [] | |
| def process_pdf(file): | |
| global summary, qa_bot, text_chunks, chat_history | |
| text = extract_text_from_pdf(file.name) | |
| summary = summarizer.summarize(text) | |
| text_chunks = text.split("\n\n") | |
| qa_bot = QABot(text_chunks) | |
| chat_history.clear() | |
| return summary, "PDF processed. You can now ask questions." | |
| def chat_with_doc(question): | |
| if not qa_bot: | |
| return chat_history, "Please upload and summarize a document first." | |
| context = qa_bot.retrieve_context(question) | |
| response = ask_model(context, question) | |
| chat_history.append((question, response)) | |
| suggestions = suggest_questions(summary) | |
| suggestions_block = "π‘ You can also ask:\n" + "\n".join([f"β’ {q}" for q in suggestions]) | |
| return chat_history, suggestions_block | |
| # UI layout | |
| with gr.Blocks(title="BioSummarize.ai") as iface: | |
| gr.Markdown("# 𧬠BioSummarize.ai") | |
| gr.Markdown("Upload a biotech research paper, generate its summary, and chat with it using an AI-powered assistant.") | |
| with gr.Row(): | |
| file_input = gr.File(label="Upload Biotech Research PDF") | |
| summarize_btn = gr.Button("Summarize + Start Chat") | |
| summary_box = gr.Textbox(label="π Summary", lines=6) | |
| summary_status = gr.Textbox(label="Status / Info", lines=2) | |
| chat_input = gr.Textbox(label="π¬ Ask a Question", placeholder="What is the main finding?") | |
| chatbot = gr.Chatbot(label="π§ BioResearch Chatbot") | |
| suggestions_box = gr.Textbox(label="π‘ Follow-up Suggestions", interactive=False) | |
| # Bind actions | |
| summarize_btn.click(fn=process_pdf, inputs=file_input, outputs=[summary_box, summary_status]) | |
| chat_input.submit(fn=chat_with_doc, inputs=chat_input, outputs=[chatbot, suggestions_box]) | |
| # Launch the app | |
| if __name__ == "__main__": | |
| iface.launch() | |