suda_code 发表于 2024-11-16 14:50:57

[Streamlit] 求助, Streamlit流式输出后刷新就不再输出了

是这样的 我用Python简单的写了一个调用本地Ollama的函数
用Streamlit简单搓了一个框架
但是我用stream_write输出之后 输入框回车刷新了代码
然后之前的流式输出就不见了
想了半天也没想到到底怎么把Streamlit流式输出后的结果留下来

FishC 发表于 2024-11-16 14:51:08

在使用 Streamlit 时,每次用户交互(比如输入框中按回车)都会导致页面刷新,从而导致之前的输出消失。要解决这个问题,可以利用 Streamlit 的状态管理功能来保存流式输出的结果,这样刷新页面时可以重新显示。

以下是一个简单的步骤来实现这一点:

1. **使用 `st.session_state`**:这个对象可以保存数据,在页面刷新时仍然保留。需要将流式输出结果保存到 `session_state` 中。

2. **更新代码示例**:

   import streamlit as st

   # 初始化 session_state,如果没有,设置为空列表
   if 'streamed_data' not in st.session_state:
       st.session_state['streamed_data'] = []

   # 模拟流式输出的函数
   def simulate_stream_output():
       # 这里可以是你的流式输出逻辑
       st.session_state['streamed_data'].append("新流数据")

   # 定义输入框
   user_input = st.text_input("输入后按回车进行刷新:")

   # 每当输入框更新时调用流式输出逻辑
   if st.button("流式输出"):
       simulate_stream_output()

   # 显示保存的流式输出
   for data in st.session_state['streamed_data']:
       st.write(data)

3. **要点解释**:
   - `st.session_state` 用于在刷新中保持状态。
   - 每次用户点击“流式输出”按钮时,新的流数据会被添加到 `session_state` 中。
   - 每次刷新页面时,都会从 `session_state` 中重新读取并显示所有流式输出。

通过这种方式,你可以在刷新页面后保持流式输出的持久化显示。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

isdkz 发表于 2024-11-16 14:51:55

{:10_277:}

suda_code 发表于 2024-11-16 14:59:29

懂了 下次有问题问AI{:10_277:}

OKMY 发表于 2024-11-17 11:22:34

6

菜菜大大^_^ 发表于 2024-11-17 13:31:58

我是人,我赞同最佳答案

很cool的阳 发表于 2024-11-18 10:14:00

{:5_109:}

baimups 发表于 2024-11-18 16:33:26

{:10_257:}

XiaoMengXin-1 发表于 2024-11-19 08:22:15

大气

尹玄睿 发表于 2024-11-19 17:16:50

{:10_243:}

baimups 发表于 2024-11-19 20:52:52

{:10_254:}

sunshine_8205 发表于 2024-11-22 16:32:16

{:5_108:}

6bingame 发表于 2024-11-25 20:27:50

还是ai哥厉害

XiaoMengXin-1 发表于 2024-11-26 08:40:39

66

kerln888 发表于 2024-11-26 09:09:23

{:10_279:}{:10_279:}{:10_279:}
页: [1]
查看完整版本: [Streamlit] 求助, Streamlit流式输出后刷新就不再输出了