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

如何用get_ipython().payload_manager.write_payload创建Markdown单元格?

在Jupyter Notebook中编程创建Markdown单元格的解决方案

问题原因

你使用的set_next_input payload本身是用于设置下一个代码单元格的输入内容,因此无论添加什么metadata都无法将其转为Markdown单元格。

可行解决方案

方案1:直接操作Notebook的单元格实例

通过获取Jupyter内核的Notebook对象,直接插入并配置Markdown单元格:

def create_markdown_cell(contents):
    from IPython.core.getipython import get_ipython
    ip = get_ipython()
    if ip is None:
        return  # 非Jupyter环境不执行
    
    # 获取当前Notebook实例(兼容Jupyter Lab/Notebook)
    nb = ip.notebook
    # 在当前单元格下方插入Markdown单元格
    nb.insert_cell_below(cell_type='markdown')
    # 为新单元格设置内容
    new_cell = nb.cells[-1]
    new_cell.source = contents

方案2:使用append_cell类型的payload

改用支持指定单元格类型的append_cell payload,通知前端添加Markdown单元格:

def create_markdown_cell(contents):
    from IPython.core.getipython import get_ipython
    shell = get_ipython()
    if shell is None:
        return
    
    payload = {
        'source': 'append_cell',
        'cell_type': 'markdown',
        'source': contents,
        'replace': False
    }
    shell.payload_manager.write_payload(payload, single=False)

使用注意

  • 方案1的兼容性更强,在Jupyter Lab和经典Notebook环境中都能稳定生效。
  • 方案2部分环境下可能需要手动刷新页面才能看到新增的单元格。

内容的提问来源于stack exchange,提问作者jmzhou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:42:03