import streamlit as st import utils from build_model import load_model st.title("Buzzbot") # Initialize retriever and model if "retriever" not in st.session_state: st.session_state["retriever"] = utils.build_retriever() if "model" not in st.session_state: st.session_state["model"] = load_model() if "conversation" not in st.session_state: st.session_state["conversation"] = utils.Conversation() # Initialize chat history if "messages" not in st.session_state: st.session_state.messages = [] # Display chat messages from history on app rerun for message in st.session_state.messages: with st.chat_message(message["role"]): st.markdown(message["content"]) if message['role']=="assistant": st.caption(message["source_docs"]) # Accept user input if user_input := st.chat_input("What is up?"): # Add user message to chat history st.session_state.messages.append({"role": "user", "content": user_input, "source_docs": None}) # Display user message in chat message container with st.chat_message("user"): st.markdown(user_input) # Display assistant response in chat message container with st.chat_message("assistant"): with st.spinner(""): answer, source_docs = utils.ask_question( user_input, st.session_state.conversation, st.session_state.model, st.session_state.retriever ) st.write(answer) # for source_doc in source_docs: st.caption(source_docs) st.session_state.messages.append({"role": "assistant", "content": answer, "source_docs": source_docs})