DataAIDemo / pages /AI_Chatbot.py
themeetjani's picture
Update pages/AI_Chatbot.py
f501a4f verified
import openai
import os
import streamlit as st
from streamlit import session_state
import base64
import tempfile
from pathlib import Path
from langchain.document_loaders import WebBaseLoader, PyPDFLoader, TextLoader
from langchain.indexes import VectorstoreIndexCreator
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.docstore.document import Document
os.environ['OPENAI_API_KEY'] = "sk-proj-ZbejHdD4ZgJ5FFJ6LjMNT3BlbkFJ1WHLrJMFL03D8cMWSoFY"
openai.api_key = os.environ['OPENAI_API_KEY']
from langchain.document_loaders import PyPDFLoader
from langchain.chat_models import ChatOpenAI
st.title("Chat with data")
model = ChatOpenAI(model = 'gpt-4', max_tokens = 100,temperature=0)
uploaded_file = st.file_uploader("Choose a file")
if uploaded_file is not None:
# Make temp file path from uploaded file
with tempfile.NamedTemporaryFile(delete=False) as tmp_file:
fp = Path(tmp_file.name)
fp.write_bytes(uploaded_file.getvalue())
print(tmp_file.name,"path")
def extract(uploaded_file):
res = []
loader = PyPDFLoader(uploaded_file)
pages = loader.load()
for i in pages:
res.append(i.page_content.replace('\n',''))
a = " ".join(res)
return a
def lang(ques):
context = extract(tmp_file.name)
docs = Document(page_content=context)
index2 = VectorstoreIndexCreator().from_documents([docs])
answer = index2.query(llm = model, question = ques)
index2.vectorstore.delete()
return answer
def qna(ques):
session_state['answer']= lang(ques)
if 'answer' not in session_state:
session_state['answer']= ""
ques= st.text_area(label= "Please enter the Question that you wanna ask.",
placeholder="Question")
st.text_area("result", value=session_state['answer'])
st.button("Submit", on_click=qna, args=[ques])