Mailbox / app.py
gavinzli's picture
Add initial binary files and update environment loading in main.py
c529966
raw
history blame
1.43 kB
"""Streamlit app example."""
import logging
import uuid
import streamlit as st
from chain import RAGChain
from retriever import DocRetriever
from controllers import mail
logging.basicConfig(
format='%(asctime)s - %(levelname)s - %(funcName)s - %(message)s')
logging.getLogger().setLevel(logging.ERROR)
with st.sidebar:
st.header("Controls")
if st.button("Collect Data"):
result = mail.collect()
with st.chat_message("assistant"):
response_content = st.markdown(result)
if 'chat_id' not in st.session_state:
st.session_state.chat_id = str(uuid.uuid4())
st.session_state.user_id = str(uuid.uuid4())
if "messages" not in st.session_state:
st.session_state.messages = []
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
if prompt := st.chat_input("What is up?"):
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
req = {"query": prompt}
chain = RAGChain(DocRetriever(req=req))
result = chain.invoke({"input": req['query']},
config={"configurable": {"session_id": st.session_state.chat_id}})
with st.chat_message("assistant"):
response_content = st.markdown(result['answer'])
st.session_state.messages.append({"role": "assistant", "content": result['answer']})