Alimustoofaa/PDF_QuestionAnswer
0
1import os2 3# Import langchain lib4from langchain.llms import OpenAI5from langchain.chains import RetrievalQA6from langchain.vectorstores import Chroma7from langchain.embeddings.openai import OpenAIEmbeddings8from langchain.text_splitter import CharacterTextSplitter9from langchain.document_loaders import UnstructuredPDFLoader10from langchain.chains.question_answering import load_qa_chain11 12def load_pdf(pdf_path):13 loader = UnstructuredPDFLoader(pdf_path)14 pages = loader.load()15 return pages16 17def update_openai_key(openai_key):18 os.environ['OPENAI_API_KEY'] = openai_key19 20def texts_splitter(pages):21 text_splitter = CharacterTextSplitter(chunk_size=3000, chunk_overlap=20)22 texts = text_splitter.split_documents(pages)23 return texts24 25def qa_langchain(docsearch):26 qa_chain = load_qa_chain(OpenAI(temperature=0), chain_type="stuff")27 qa = RetrievalQA(combine_documents_chain=qa_chain, retriever=docsearch.as_retriever())28 return qa29 30def main_process(pdf_path, question, openai_key):31 # Update OpenAI key32 update_openai_key(openai_key)33 # load PDF34 pages = load_pdf(pdf_path)35 # Text splitter36 texts = texts_splitter(pages)37 38 # define embeddings39 embeddings = OpenAIEmbeddings()40 # print(embeddings)41 docsearch = Chroma.from_documents(texts, embeddings)42 43 qa = qa_langchain(docsearch)44 answer = qa.run(question)45 return answer46 