talk2docs / app.py
olegperegudov's picture
add hf token
484b4e0
raw
history blame contribute delete
No virus
1.79 kB
import os
import streamlit as st
# load environment variables
from dotenv import load_dotenv
from huggingface_hub import login
import utils
from build_model import load_model
load_dotenv()
login(token=os.getenv("HUGGINGFACE_TOKEN"))
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})