JamanKH's picture
Upload app.py
9c1cfb6
Raw
History Blame Contribute Delete
2.66 kB
import os
import streamlit as st
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI
from langchain.document_loaders import TextLoader
from langchain.document_loaders import PyPDFLoader
from langchain.indexes import VectorstoreIndexCreator
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.document_loaders import PyPDFDirectoryLoader
import streamlit as st
import os
import openai
from langchain.chains.question_answering import load_qa_chain
# Create a title for the app
st.title("ChromaDB Multiple PDFs")
st.markdown("**OpenAI API key**")
key = st.text_input("Paste Your API key here")
st.write(key)
if key:
os.environ["OPENAI_API_KEY"] = key
# Create a sidebar for selecting the number of files to upload
st.sidebar.header("Number of files")
num_files = st.sidebar.number_input("How many PDF files do you want to upload?", min_value=1, max_value=5, value=1)
# Create a list to store the uploaded files
uploaded_files = []
# Loop through the number of files and create file uploaders
for i in range(num_files):
uploaded_file = st.file_uploader(f"Choose a PDF file {i+1}", type="pdf")
# If a file is uploaded, append it to the list
if uploaded_file is not None:
uploaded_files.append(uploaded_file)
# Check if any file is uploaded
if len(uploaded_files) > 0:
# Check if the books folder exists, if not create it
if not os.path.exists("books"):
os.mkdir("books")
# Loop through the uploaded files and save them to the books folder
for i, file in enumerate(uploaded_files):
# Create a file name with the index and the original name
file_name = f"{i}_{file.name}"
# Open the file in binary mode and write its contents
with open(os.path.join("books", file_name), "wb") as f:
f.write(file.getbuffer())
# Display a success message
st.success(f"Successfully uploaded {len(uploaded_files)} PDF files to the books folder.")
# load document
loader = PyPDFDirectoryLoader("books/")
documents = loader.load()
### For multiple documents
# loaders = [....]
# documents = []
# for loader in loaders:
# documents.extend(loader.load())
chain = load_qa_chain(llm=OpenAI(), chain_type="map_reduce")
query = st.text_input("Write your query")
if query:
lang_agent_run = chain.run(input_documents=documents, question=query)
st.write("Lang chain agent answer: ",lang_agent_run )