|
import streamlit as st |
|
import requests |
|
from Ressources.Config import URL |
|
from Ressources.Translations import translations |
|
from Services.Service_File import Service_File |
|
|
|
def view_chatbot(): |
|
chatbot = translations[st.session_state['languages']]['chatbotPage'] |
|
|
|
view_history() |
|
|
|
st.title(chatbot['selectedModel'] + " : " + st.session_state['model_selected']) |
|
if st.session_state['chat_id'] is None : |
|
view_select_model() |
|
view_file_upload() |
|
|
|
if st.session_state['chat_id'] is not None : |
|
for message in st.session_state['selected_chat']: |
|
if message['chat_message_is_ia'] == 1: |
|
with st.chat_message("assistant"): |
|
st.write(message['chat_message']) |
|
else: |
|
with st.chat_message("user"): |
|
st.write(message['chat_message']) |
|
view_chat() |
|
|
|
|
|
def view_select_model(): |
|
st.selectbox( |
|
translations[st.session_state['languages']]['chatbotPage']['chooseModel'], |
|
("Bert", "BigBird", "Splinter", "Squeeze"), |
|
index=0, |
|
key="model", |
|
on_change=function_select_model |
|
) |
|
|
|
|
|
def view_history(): |
|
Global = translations[st.session_state['languages']] |
|
|
|
function_initialize_history() |
|
|
|
col1, col2, col3 = st.sidebar.columns([3, 1, 1]) |
|
col1.write(Global['language']) |
|
col2.button('EN ', on_click=function_set_language, args=('en',)) |
|
col3.button('FR ', on_click=function_set_language, args=('fr',)) |
|
|
|
col1, col2, col3 = st.sidebar.columns([3, 1, 3]) |
|
col1.write(st.session_state['user_name'].capitalize()) |
|
col3.button(translations[st.session_state['languages']]['logout'], on_click=function_logout_user) |
|
|
|
st.sidebar.title('') |
|
|
|
col1, col2, col3 = st.sidebar.columns([3, 1, 1]) |
|
col1.write(Global['home']) |
|
col3.button('β', on_click=function_new_chat) |
|
|
|
for option in st.session_state.chat_history.values(): |
|
col1, col2, col3 = st.sidebar.columns([3, 1, 1]) |
|
col1.write(option['chat_title'], key=f"chat_title_{option['chat_id']}") |
|
col2.button('π', key=f"show_{option['chat_id']}", on_click=function_show_chat, args=(option['chat_id'],)) |
|
col3.button('ποΈ', key=f"del_{option['chat_id']}", on_click=function_delete_chat, args=(option['chat_id'],)) |
|
|
|
|
|
def view_chat(): |
|
chatbot = translations[st.session_state['languages']]['chatbotPage'] |
|
st.chat_input(chatbot['enterQuestion'], key='prompt', on_submit=function_send_message) |
|
|
|
|
|
def view_file_upload(): |
|
file = st.file_uploader('Upload a file', type=['.docx', '.pdf', '.xlsx', '.csv']) |
|
st.write('') |
|
|
|
if st.session_state['is_chat_show'] == False: |
|
st.session_state['have_file'] = False |
|
st.session_state['file_content'] = '' |
|
|
|
serviceFile = Service_File() |
|
string = '' |
|
|
|
if file is not None: |
|
|
|
string += serviceFile.file_for_string(file) |
|
st.session_state['have_file'] = True |
|
|
|
st.session_state['file_content'] = string |
|
|
|
|
|
def function_initialize_history(): |
|
try: |
|
response = requests.get(URL + "/chatHistory", json={ |
|
'user_id': st.session_state['user_id'], |
|
'user_is_connected': st.session_state['user_is_connected'], |
|
}) |
|
|
|
st.session_state.chat_history = dict(sorted(response.json().items(), key=lambda item: item[1]['chat_date'], reverse=True)) |
|
|
|
except Exception as e: |
|
st.error(translations[st.session_state['languages']]['generalError']) |
|
|
|
|
|
def function_send_message(): |
|
st.session_state['user_question'] = st.session_state['prompt'] |
|
|
|
try: |
|
response = requests.post(URL + "/predict", json={ |
|
'user_id': st.session_state['user_id'], |
|
'chat_id': st.session_state['chat_id'], |
|
'user_is_connected': st.session_state['user_is_connected'], |
|
'user_question': st.session_state['user_question'], |
|
'file_content': st.session_state['file_content'], |
|
'have_file': st.session_state['have_file'], |
|
'model_selected': st.session_state['model_selected'] |
|
}) |
|
|
|
content = response.json() |
|
|
|
if st.session_state['chat_id'] == None: |
|
st.session_state['chat_id'] = int(content['chat_id']) |
|
function_initialize_history() |
|
|
|
st.session_state['user_question'] = '' |
|
|
|
function_show_chat(int(content['chat_id'])) |
|
|
|
except Exception as e: |
|
st.error(translations[st.session_state['languages']]['generalError']) |
|
|
|
|
|
def function_new_chat(): |
|
st.session_state['chat_id'] = None |
|
st.session_state['selected_chat'] = None |
|
st.session_state['user_question'] = '' |
|
st.session_state['file_content'] = None |
|
st.session_state['have_file'] = False |
|
st.session_state['is_chat_show'] = False |
|
st.session_state['model_selected'] = "Bert" |
|
|
|
|
|
def function_show_chat(chat_id): |
|
st.session_state['file_content'] = None |
|
st.session_state['have_file'] = False |
|
|
|
try: |
|
st.session_state['chat_id'] = int(chat_id) |
|
|
|
chat_message_response = requests.get(URL + "/chatMessage", json={ |
|
'user_id': st.session_state['user_id'], |
|
'user_is_connected': st.session_state['user_is_connected'], |
|
'chat_id': chat_id |
|
}) |
|
|
|
chat_message_content = chat_message_response.json() |
|
|
|
chat_reponse = requests.get(URL + "/getChat", json={ |
|
'user_id': st.session_state['user_id'], |
|
'user_is_connected': st.session_state['user_is_connected'], |
|
'chat_id': chat_id |
|
}) |
|
|
|
chat_content = chat_reponse.json() |
|
|
|
if chat_content[3] is not None: |
|
st.session_state['have_file'] = True |
|
st.session_state['file_content'] = chat_content[3] |
|
|
|
st.session_state['is_chat_show'] = True |
|
st.session_state['selected_chat'] = chat_message_content |
|
st.session_state['model_selected'] = st.session_state['chat_history'][str(chat_id)]['chat_model'] |
|
|
|
except Exception as e: |
|
st.error(translations[st.session_state['languages']]['generalError']) |
|
|
|
|
|
def function_delete_chat(chat_id): |
|
try: |
|
requests.post(URL + "/deleteChat", json={ |
|
'user_id': st.session_state['user_id'], |
|
'chat_id': chat_id, |
|
'user_is_connected': st.session_state['user_is_connected'], |
|
}) |
|
|
|
del st.session_state.chat_history[str(chat_id)] |
|
|
|
if st.session_state['chat_id'] == chat_id: |
|
st.session_state['model_selected'] = "Bert" |
|
st.session_state['chat_id'] = None |
|
st.session_state['selected_chat'] = None |
|
st.session_state['have_file'] = False |
|
st.session_state['file_content'] = None |
|
st.session_state['is_chat_show'] = False |
|
|
|
except Exception as e: |
|
st.error(translations[st.session_state['languages']]['generalError']) |
|
|
|
|
|
def function_set_language(locale): |
|
st.session_state['languages'] = locale |
|
|
|
|
|
def function_select_model(): |
|
st.session_state['model_selected'] = st.session_state['model'] |
|
|
|
|
|
def function_logout_user(): |
|
st.session_state['user_id'] = None |
|
st.session_state['user_name'] = None |
|
st.session_state['user_is_connected'] = False |
|
st.session_state['chat_history'] = {} |
|
st.session_state['selected_chat'] = {} |
|
st.session_state['user_question'] = '' |
|
st.session_state['chat_id'] = None |
|
st.session_state['current_page'] = 'Login' |
|
st.session_state['login_pressed'] = False |
|
st.session_state['signup_pressed'] = False |
|
st.session_state['model_selected'] = "Bert" |
|
st.session_state['file_content'] = None |
|
st.session_state['is_chat_show'] = False |
|
|
|
|