viboognesh's picture
Upload 2 files
44dcf43 verified
import streamlit as st
import os
import tempfile
from dotenv import load_dotenv
load_dotenv()
from streamlit_functions import RAGChain
def main():
st.title("RAG Application")
if "openai_api_key" not in st.session_state:
st.session_state.openai_api_key = os.getenv("OPENAI_API_KEY")
if "RAGChatbot" not in st.session_state:
st.session_state.RAGChatbot = None
if st.session_state.openai_api_key is None:
st.session_state.openai_api_key = st.text_input("OPENAI_API Key", type="password")
else:
with st.sidebar:
if uploaded_file := st.file_uploader("Choose a file", type=["pdf"]):
with tempfile.TemporaryDirectory() as tmpdirname:
with open(os.path.join(tmpdirname, uploaded_file.name), "wb") as f:
f.write(uploaded_file.getbuffer())
st.session_state.RAGChatbot = RAGChain(pdf_file_path=os.path.join(tmpdirname, uploaded_file.name), api_key=st.session_state.openai_api_key)
if st.session_state.RAGChatbot is not None:
for chat_message in st.session_state.RAGChatbot.get_chat_history():
with st.chat_message("user"):
st.write(chat_message["user"])
with st.chat_message("assistant"):
st.write(chat_message["assistant"])
if user_query := st.chat_input("Ask a question:"):
with st.chat_message("user"):
st.write(user_query)
with st.spinner("Waiting for response..."):
answer, context_list = st.session_state.RAGChatbot.ask_question(user_query)
with st.chat_message("assistant"):
st.write(answer)
with st.sidebar:
st.subheader("Context")
for context in context_list:
st.write(context)
st.write("-"*25)
if __name__ == "__main__":
main()