Spaces:
Build error
Build error
import numpy as np | |
import pandas as pd | |
import configparser | |
import streamlit as st | |
import chromadb | |
import langchain | |
from langchain.embeddings.openai import OpenAIEmbeddings | |
from langchain.vectorstores import Chroma | |
from langchain.chains import ConversationalRetrievalChain | |
from langchain.chat_models import ChatOpenAI | |
from langchain.document_loaders import PyPDFLoader | |
import tempfile | |
import shutil | |
import os | |
import openai | |
# Replace with your OpenAI API key | |
api_key = "your_openai_api_key_here" | |
if not api_key: | |
st.error("I can not find API key") | |
else: | |
openai.api_key = api_key | |
st.title('PDF Documents Q&A App') | |
uploaded_file = st.file_uploader("Please upload your PDF file", type=["pdf"]) | |
if uploaded_file is not None: | |
# Save as tempfile | |
with tempfile.NamedTemporaryFile(delete=False, suffix=".pdf") as tmpfile: | |
shutil.copyfileobj(uploaded_file, tmpfile) | |
file_path = tmpfile.name | |
# Load and split PDF using PyPDFLoader | |
loader = PyPDFLoader(file_path) | |
pages = loader.load_and_split() | |
# Initialize model and vectorstore | |
llm = ChatOpenAI(temperature=0, model_name="gpt-3.5-turbo") | |
embeddings = OpenAIEmbeddings() | |
vectorstore = Chroma.from_documents(pages, embedding=embeddings, persist_directory=".") | |
vectorstore.persist() | |
# Create Q&A chain | |
pdf_qa = ConversationalRetrievalChain.from_llm(llm, vectorstore.as_retriever(), return_source_documents=True) | |
# Get question from user | |
question = st.text_input("Please input your question:") | |
if st.button('Get Answer'): | |
result = pdf_qa({"question": question, "chat_history": []}) | |
answer = result["answer"] | |
st.write("Answer:", answer) | |
# Delete tempfile | |
if file_path: | |
os.unlink(file_path) | |