Spaces:
Runtime error
Runtime error
| 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 ) |