Spaces:
Running
Running
"""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']}) | |