Mailbox / app.py
OxbridgeEconomics
commit
b5deaf1
raw
history blame
1.52 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)
# st.session_state.messages.append({"role": "assistant", "content": 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']})