anvorja/preguntaDOC
0
1import streamlit as st2import os3 4from PyPDF2 import PdfReader5from langchain.text_splitter import RecursiveCharacterTextSplitter6from langchain.embeddings import HuggingFaceEmbeddings 7from langchain.vectorstores import FAISS8from langchain.chat_models import ChatOpenAI9from langchain.chains.question_answering import load_qa_chain10 11st.set_page_config('preguntaDOC')12st.header("Pregunta a tu PDF")13OPENAI_API_KEY = st.text_input('OpenAI API Key', type='password')14pdf_obj = st.file_uploader("Carga tu documento", type="pdf", on_change=st.cache_resource.clear)15 16@st.cache_resource 17def create_embeddings(pdf):18 pdf_reader = PdfReader(pdf)19 text = ""20 for page in pdf_reader.pages:21 text += page.extract_text()22 23 text_splitter = RecursiveCharacterTextSplitter(24 chunk_size=800,25 chunk_overlap=100,26 length_function=len27 ) 28 chunks = text_splitter.split_text(text)29 30 embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2")31 knowledge_base = FAISS.from_texts(chunks, embeddings)32 33 return knowledge_base34 35if pdf_obj:36 knowledge_base = create_embeddings(pdf_obj)37 user_question = st.text_input("Haz una pregunta sobre tu PDF:")38 39 if user_question:40 os.environ["OPENAI_API_KEY"] = OPENAI_API_KEY41 docs = knowledge_base.similarity_search(user_question, 3)42 llm = ChatOpenAI(model_name='gpt-3.5-turbo')43 chain = load_qa_chain(llm, chain_type="stuff")44 respuesta = chain.run(input_documents=docs, question=user_question)45 46 st.write(respuesta) 