Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from llama_index import SimpleDirectoryReader, GPTSimpleVectorIndex, ServiceContext | |
| from transformers import AutoTokenizer, AutoModelForCausalLM | |
| from PyPDF2 import PdfReader | |
| # Load tokenizer and model from HuggingFace (StableLM) | |
| tokenizer = AutoTokenizer.from_pretrained("StabilityAI/stablelm-tuned-alpha-3b") | |
| model = AutoModelForCausalLM.from_pretrained("StabilityAI/stablelm-tuned-alpha-3b") | |
| # Create service context for the LLM | |
| service_context = ServiceContext.from_defaults( | |
| llm_predictor=(model, tokenizer), # Attach the model and tokenizer | |
| chunk_size=1024 | |
| ) | |
| # Function to load PDF | |
| def load_pdf(file): | |
| reader = PdfReader(file.name) | |
| text = "" | |
| for page in reader.pages: | |
| text += page.extract_text() | |
| return text | |
| # Function to create an index and query it | |
| def chat_with_pdf(pdf, query): | |
| # Read the PDF content | |
| pdf_text = load_pdf(pdf) | |
| # Use llama-index to create a document index | |
| documents = [pdf_text] | |
| index = GPTSimpleVectorIndex.from_documents(documents, service_context=service_context) | |
| # Query the index | |
| response = index.query(query) | |
| return response.response | |
| # Gradio interface | |
| def chatbot(pdf, query): | |
| if not pdf or not query: | |
| return "Please upload a PDF and enter a query." | |
| response = chat_with_pdf(pdf, query) | |
| return response | |
| # Define Gradio inputs and interface | |
| pdf_input = gr.inputs.File(label="Upload your PDF") | |
| query_input = gr.inputs.Textbox(label="Ask a question about the PDF") | |
| output = gr.outputs.Textbox(label="Chatbot Response") | |
| gr.Interface(fn=chatbot, inputs=[pdf_input, query_input], outputs=output, title="PDF Chatbot").launch() | |