Spaces:
Running
Running
File size: 1,427 Bytes
b5deaf1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
"""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']})
|