You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 00:04:55