from hmac import new import streamlit as st from streamlit_feedback import streamlit_feedback import uuid from utils import retrieve_filtered_documents, answer,index, unique_combinations_list, unique_combinations from db import insert_score, update_score if 'question_state' not in st.session_state: st.session_state.question_state = False if 'fbk' not in st.session_state: st.session_state.fbk = str(uuid.uuid4()) if "chat_history" not in st.session_state: st.session_state.chat_history = [] def display_answer(): for entry in st.session_state.chat_history: with st.chat_message("human"): st.write(entry["question"]) with st.chat_message("ai"): st.write(entry["answer"]) if 'feedback' not in entry: continue if "feedback" in entry: st.write(f"Feedback: {entry['feedback']}") else: st.write("Feedback: N/A") def create_answer(question): if question is None: return docs = retrieve_filtered_documents(question, index, unique_combinations_list, unique_combinations) response = answer(question, docs) id = str(uuid.uuid4()) st.session_state.fbk = id st.toast(insert_score(id, question, response)) message_id = len(st.session_state.chat_history) st.session_state.chat_history.clear() st.session_state.chat_history.append({ "question": question, "answer": f"{response}", "message_id": message_id, }) def fbcb(response): st.toast(update_score(st.session_state.fbk, '1' if response['score'] == '👍' else '0', response['text'])) st.session_state.fbk = str(uuid.uuid4()) # st.title('QUI SIGNE ?') st.html('

QUI SIGNE ?

') st.html('
') question = st.chat_input(placeholder="Posez votre question ici .... !!!!") if question: st.session_state.question_state = True if st.session_state.question_state: create_answer(question) display_answer() # Pressing a button in feedback reruns the code. streamlit_feedback( feedback_type="thumbs", optional_text_label="Ajouter un commentaire [Optionnel]", align="flex-start", key=st.session_state.fbk, on_submit=fbcb )