-
Notifications
You must be signed in to change notification settings - Fork 54
/
Copy pathapp.py
86 lines (68 loc) · 2.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))
os.environ['SERPAPI_API_KEY'] = ''
import streamlit as st
from streamlit import logger
from streamlit_chat import message
from components import get_response, side_bar, theme, upload_and_process_document
from docGPT import create_doc_gpt
OPENAI_API_KEY = ''
SERPAPI_API_KEY = ''
model = None
st.session_state.openai_api_key = None
st.session_state.serpapi_api_key = None
st.session_state.g4f_provider = None
st.session_state.button_clicked = None
if 'response' not in st.session_state:
st.session_state['response'] = ['How can I help you?']
if 'query' not in st.session_state:
st.session_state['query'] = ['Hi']
app_logger = logger.get_logger(__name__)
def main():
global model
theme()
side_bar()
doc_container = st.container()
with doc_container:
docs = upload_and_process_document()
if docs:
model = create_doc_gpt(
docs,
{k: v for k, v in docs[0].metadata.items() if k not in ['source', 'file_path']},
st.session_state.g4f_provider
)
app_logger.info(f'{__file__}: Created model: {model}')
del docs
st.write('---')
user_container = st.container()
response_container = st.container()
with user_container:
query = st.text_input(
"#### Question:",
placeholder='Enter your question'
)
if model and query and query != '' and not st.session_state.button_clicked:
response = get_response(query, model)
st.session_state.query.append(query)
st.session_state.response.append(response)
with response_container:
if st.session_state['response']:
for i in range(len(st.session_state['response'])-1, -1, -1):
message(
st.session_state["response"][i], key=str(i),
logo=(
'https://github.com/Lin-jun-xiang/docGPT-streamlit/'
'blob/main/static/img/chatbot_v2.png?raw=true'
)
)
message(
st.session_state['query'][i], is_user=True, key=str(i) + '_user',
logo=(
'https://api.dicebear.com/6.x/adventurer/svg?'
'hair=short16&hairColor=85c2c6&'
'eyes=variant12&size=100&'
'mouth=variant26&skinColor=f2d3b1'
)
)
if __name__ == "__main__":
main()