chatwithfiles / app.py
Unterwexi's picture
first files
c0eb7b0
import os
import streamlit as st
from gui.history import ChatHistory
from gui.layout import Layout
from gui.sidebar import Sidebar, Utilities
if __name__ == '__main__':
st.set_page_config(layout="wide", page_icon="πŸ’¬", page_title="ChatPDF")
layout, sidebar, utils = Layout(), Sidebar(), Utilities()
layout.show_header()
user_api_key = utils.load_api_key()
if not user_api_key:
layout.show_api_key_missing()
else:
os.environ["OPENAI_API_KEY"] = user_api_key
pdf = utils.handle_upload()
if pdf:
sidebar.show_options()
try:
history = ChatHistory()
chatbot = utils.setup_chatbot(
pdf, st.session_state["model"], st.session_state["temperature"]
)
st.session_state["chatbot"] = chatbot
if st.session_state["ready"]:
history.initialize(pdf.name)
response_container, prompt_container = st.container(), st.container()
with prompt_container:
is_ready, user_input = layout.prompt_form()
if st.session_state["reset_chat"]:
history.reset()
if is_ready:
output = st.session_state["chatbot"].conversational_chat(user_input)
history.generate_messages(response_container)
except Exception as e:
st.error(f"{e}")
st.stop()
sidebar.about()