-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathapp.py
51 lines (37 loc) · 1.54 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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()