snehakingrani commited on
Commit
77fa265
·
verified ·
1 Parent(s): bc821fb

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -0
app.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import PyPDF2
3
+ from langchain.document_loaders import PyPDFLoader
4
+ from langchain.text_splitter import CharacterTextSplitter
5
+ from langchain.embeddings import HuggingFaceEmbeddings
6
+ from langchain.vectorstores import FAISS
7
+ from langchain.chains import RetrievalQA
8
+ from langchain.llms import Groq
9
+ from dotenv import load_dotenv
10
+ import os
11
+
12
+ # Load environment variables
13
+ load_dotenv()
14
+ GROQ_API_KEY = os.getenv("GROQ_API_KEY")
15
+
16
+ # Streamlit UI
17
+ st.title("📄 PDF Q&A Assistant")
18
+ st.write("Upload a PDF and ask questions about its content!")
19
+
20
+ # Upload PDF
21
+ uploaded_file = st.file_uploader("Choose a PDF file", type=["pdf"])
22
+
23
+ if uploaded_file:
24
+ # Extract text from PDF
25
+ pdf_loader = PyPDFLoader(uploaded_file)
26
+ documents = pdf_loader.load()
27
+
28
+ # Split text into chunks for processing
29
+ text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50)
30
+ docs = text_splitter.split_documents(documents)
31
+
32
+ # Create embeddings and store in FAISS vector database
33
+ embeddings = HuggingFaceEmbeddings()
34
+ vector_db = FAISS.from_documents(docs, embeddings)
35
+ retriever = vector_db.as_retriever()
36
+
37
+ # Load Groq API model for Q&A
38
+ llm = Groq(api_key=GROQ_API_KEY, model_name="mixtral-8x7b") # Change model as needed
39
+ qa_chain = RetrievalQA(llm=llm, retriever=retriever)
40
+
41
+ # User input for questions
42
+ query = st.text_input("Ask a question about the PDF:")
43
+ if query:
44
+ answer = qa_chain.run(query)
45
+ st.write("**Answer:**", answer)