Spaces:
Runtime error
Runtime error
| 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 streamlit as st | |
| def get_response_from_OpenAI_LangChain(uploaded_file, prompt): | |
| try: | |
| reader = PdfReader(uploaded_file) | |
| raw_text = "" | |
| for page in reader.pages: | |
| text = page.extract_text() | |
| if text: | |
| raw_text += text | |
| text_splitter = CharacterTextSplitter(separator = "\n", | |
| chunk_size = 1000, | |
| chunk_overlap = 200, | |
| length_function = len) | |
| texts = text_splitter.split_text(raw_text) | |
| with st.spinner('Processing Embeddings...'): | |
| embeddings = OpenAIEmbeddings() | |
| doc_search = FAISS.from_texts(texts, embeddings) | |
| chain = load_qa_chain(OpenAI(), chain_type='map_reduce') | |
| query = prompt | |
| docs = doc_search.similarity_search(query) | |
| with st.spinner('Generating Answer...'): | |
| response = chain.run(input_documents=docs, question=query) # response | |
| from components.sidebar.Auth import upload_data | |
| data = {"prompt": prompt, | |
| "response": response} | |
| st.session_state['response'] = response | |
| upload_data(st.session_state['uuid'], data, uploaded_file.name[:-4]) | |
| return response | |
| except Exception as e: | |
| if "You exceeded your current quota" in str(e): | |
| st.error('Oops! You may have exceeded your API rate limit.\nPlease check you OpenAI API key usage at https://platform.openai.com/account/usage') | |
| else: | |
| st.error("Oops! Something went wrong. Please try again. Please check your OpenAI API key in the sidebar.") | |
| st.stop() | |
| return |