import streamlit as st from PyPDF2 import PdfReader from langchain.embeddings.openai import OpenAIEmbeddings from langchain.text_splitter import CharacterTextSplitter from langchain.vectorstores import FAISS from langchain.chains.question_answering import load_qa_chain from langchain.llms import OpenAI import os # Set API keys os.environ["OPENAI_API_KEY"] = "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" os.environ["SERPAPI_API_KEY"] = "28c2445d1bfe7530595be6fbc858b1968d776af69c6034aa5feda50deab4b990" # PDF processing pdfreader = PdfReader('XYZ_contract_pdf_Sumit Yenugwar.pdf') raw_text = '' for i, page in enumerate(pdfreader.pages): content = page.extract_text() if content: raw_text += content # Text splitting text_splitter = CharacterTextSplitter( separator="\n", chunk_size=800, chunk_overlap=200, length_function=len, ) texts = text_splitter.split_text(raw_text) # Download embeddings from OpenAI embeddings = OpenAIEmbeddings() # Create document search #->document_search = FAISS.from_texts(texts, embeddings) ######################################################### #->document_search.save_local("faiss_index") #below lines loads the vectorized data that was saved in previous code line new_document_search = FAISS.load_local("faiss_index", embeddings) ################################## # Load QA chain chain = load_qa_chain(OpenAI(), chain_type="stuff") with st.sidebar: st.title('🤗💬 LLM Chat APP') st.markdown(''' ## About This app is an LLM-powered chatbot built using: - [Streamlit](https://streamlit.io/) - [LangChain](https://python.langchain.com/) - [OpenAI](https://platform.openai.com/docs/models) LLM model ''') st.markdown("
", unsafe_allow_html=True) # Add vertical space st.write('Made with ❤️ by [Prompt Engineer](https://www.youtube.com/watch?v=M4mc-z_K1NU&list=PLUTApKyNO6MwrOioHGaFCeXtZpchoGv6W)') # Streamlit app def main(): st.title("DAMA-Data Management body of knowledge") # Text input area user_input = st.text_area("Enter your MCQ question ",height=150) # Button to trigger model inference if st.button("Get Answer"): # Combine user input with the prompt and query prompt_query = f"you have provided with MCQ question and its option as a chatbot model: {user_input}" text_query = prompt_query + user_input # Perform similarity search docs = new_document_search.similarity_search(text_query, k=1, fetch_k=3) # Run the model with the combined text and query model_answer = chain.run(input_documents=docs, question=user_input) # Display the model's answer st.text_area("Model Answer:", value=model_answer) # Run the Streamlit app if __name__ == "__main__": main()