如何在Marimo笔记本的ui.chat中实现Ollama对话流式传输?
在Marimo的
ui.chat中实现流式传输的简便方案 Marimo的ui.chat组件目前不直接支持接收生成器作为响应函数,不过可以借助Marimo的状态管理功能实现流式输出效果,以下是具体解决代码:
import marimo as mo from ollama import chat model = 'llama3.2' # 用状态变量存储流式累积的响应内容 streamed_content = mo.state("") def stream_response(mess, config): # 新提问时重置流式内容 streamed_content.set("") stream = chat( messages=[{'role':'user', 'content':mess}], model=model, stream=True ) for chunk in stream: # 追加新的chunk内容到状态变量 streamed_content.set(streamed_content.value + chunk['message']['content']) # 返回当前完整的累积内容,让chat组件实时更新显示 yield streamed_content.value # 渲染聊天界面 mo.ui.chat(stream_response, prompts=[''])
原理说明
- 利用
mo.state创建可追踪的状态变量,逐步累积流式返回的内容 - 每次获取到Ollama返回的chunk时,更新状态变量的内容
- 通过
yield返回当前累积的完整内容,让ui.chat组件实时更新显示响应文本,模拟流式输出的效果
内容的提问来源于stack exchange,提问作者acortis
相关产品推荐
相关产品推荐

