python-3.x 有没有办法在streamlit应用程序中将两个项目符号选项的会话状态分开?

fivyi3re  于 2023-10-21  发布在  Python
关注(0)|答案(1)|浏览(136)

我已经创建了一个streamlit应用程序,它有两个独立的聊天机器人利用llamaindex。对于聊天机器人,用于与用户交互的流照明会话代码是常见的。因此,当我在两个聊天机器人之间切换时,我可以看到另一个聊天机器人的聊天。
流光的代码是

chat_engine = index.as_chat_engine(verbose=True)

    if "messages" not in st.session_state.keys():  # Initialize the chat messages history
        st.session_state.messages = [
            {"role": "assistant", "content": "Hi, Welcome to KnowledgeGPT"},
            {"role": "assistant", "content": f"Ask me questions from {file_name}"}
        ]

    if prompt := st.chat_input("Your question"):  # Prompt for user input and save to chat history
        st.session_state.messages.append({"role": "user", "content": prompt})

    for message in st.session_state.messages:  # Display the prior chat messages
        with st.chat_message(message["role"]):
            st.write(message["content"])

    # If last message is not from assistant, generate a new response
    if st.session_state.messages[-1]["role"] != "assistant":
        with st.chat_message("assistant"):
            with st.spinner("Thinking..."):
                response = chat_engine.chat(prompt)
                st.write(response.response)
                message = {"role": "assistant", "content": response.response}
                st.session_state.messages.append(message)  # Add response to message history

我希望会话状态在聊天机器人中维护,而不是在两个聊天机器人之间切换时。

fhg3lkii

fhg3lkii1#

我重温了流光会议和理解。我只需要不断地将会话名称从st.session_state.messages更改为st.session_state。它解决了问题。

相关问题