Summary
The last status container will disappear when input a new query. Each time the status container is updated. But I want to hold all the status container on my web.
Steps to reproduce
Code snippet:
class RetrievalHandler(BaseCallbackHandler):
def __init__(self, container: st.delta_generator.DeltaGenerator):
self.status = container.status("**正在检索**")
def on_retriever_start(self, serialized: dict, query: str, **kwargs):
self.status.update(label=f"**正在检索:** {query}")
def on_retriever_end(self, documents: List[Document], **kwargs):
for idx, doc in enumerate(documents):
source = doc.metadata["研报题目"]
docid = doc.metadata["研报id"]
self.status.write(f"**[{idx + 1}]来自研报: “{source}”,研报ID:“{docid}”**")
self.status.markdown(doc.page_content)
self.status.update(state="complete")
if user_query := st.chat_input(placeholder="Ask me anything!"):
st.chat_message("user").write(user_query)
with st.chat_message("assistant"):
retrieval_handler = RetrievalHandler(st.empty())
stream_handler = StreamHandler(st.empty())
response = convR_qa(user_query, callbacks=[retrieval_handler, stream_handler])
Expected behavior:
I know session_state can be used to store each variable. But I don’t know how to do that. Thanks for your attention.