一日一技:如何正确渲染大模型返回的Markdown?

2025年06月08日18:32:03 科技 1739

一日一技:如何正确渲染大模型返回的Markdown? - 天天要闻

我们经常让大模型返回markdown格式的文本,然后通过Pythonmarkdown库把文本渲染成HTML

但不知道大家有没有发现,大模型返回的Markdown并不是标准的Markdown。特别是当返回的内容包含列表时,大模型返回的内容有问题。例如下面这段文本:

**关于这个问题,我有以下看法**
* 第一点
* 第二点
* 第三点

你粗看起来没有问题,但当你使用markdown模块去把它渲染成HTML时,你会发现渲染出来的结果不符合你的预期,如下图所示:

一日一技:如何正确渲染大模型返回的Markdown? - 天天要闻

这是因为标准的Markdown对换行非常敏感,列表项与它上面的文本之间,必须有一个空行,才能正确解析,如下图所示:

一日一技:如何正确渲染大模型返回的Markdown? - 天天要闻

不仅是空行,还有多级列表的缩进问题。标准Markdown的子列表项缩进应该是4个空格,但大模型返回的子列表缩进经常只有3个空格,这就导致解析依然有问题。如下图所示:

一日一技:如何正确渲染大模型返回的Markdown? - 天天要闻

而且这个空行问题和缩进问题,我尝试过反复在Prompt里面强调,但大模型依然会我行我素,无论是国产大模型还是Claude或者Gemini 2.5 Pro这些最新大模型,都有这个问题。

我曾经一度被憋得没办法,让大模型给我返回JSON,我再写代码把JSON解析出来手动拼接成标准Markdown。

后来,我发现主要的问题还是Python的markdown库对格式要求太严格了,其实换一个更宽容的库就可以解决问题。于是我找到了mistune这个库。使用它,直接就解决了所有问题。如下图所示:

一日一技:如何正确渲染大模型返回的Markdown? - 天天要闻

mistune的用法非常简单:

import mistune

html = mistune.html('一段markdown')

并且它天然支持数学公式、脚注等等高级语法。更多高级操作,可以查看它的官方文档[1]。

参考文献

[1] 官方文档: https://mistune.lepture.com/en/latest/guide.html

科技分类资讯推荐

全市同行“围观” 湖里台青创业基地“出圈” - 天天要闻

全市同行“围观” 湖里台青创业基地“出圈”

6月5日下午厦门市台青创业基地观摩交流会在湖里区海西MCN两岸青年三创基地成功举办此次活动旨在通过实地观摩与深入交流,共同探索支持台青创业基地提质增效、转型升级的有效路径,进一步提升全市台青创业基地的整体服务水平。
小直屏颜值封神!vivo S30系列开售即巅峰,抢到就是赚到 - 天天要闻

小直屏颜值封神!vivo S30系列开售即巅峰,抢到就是赚到

手机圈又出新爆款!vivo S30系列今天正式登场,配置给力、颜值爆表,还携手三丽鸥送出专属定制礼盒。从外观、系统到影像全面升级,尤其是这次的mini版,轻巧又便携,堪称拍照达人的随身利器。官方已经同步开启多平台开售,限量礼盒数量有限,错过
确认了!鸿蒙电脑版微信采用跨平台开发 - 天天要闻

确认了!鸿蒙电脑版微信采用跨平台开发

鸿蒙电脑版微信已于 6 月 6 日晚开启内测邀请,有意参与的鸿蒙电脑用户,可在官方渠道报名申请,最终获得邀请资格的用户,后续可通过所登记的手机号收到测试邀请链接。IT之家注意到,有网友向微信员工 @客村小蒋询问:“和 QQ 一样是跨平台开发
补贴后售价20.49万元起,大六座SUV深蓝S09正式上市并开启交付 - 天天要闻

补贴后售价20.49万元起,大六座SUV深蓝S09正式上市并开启交付

深蓝CEO承诺深蓝S09一年不降价,为什么这一句承诺引起很多关注?因为近年来太多“背刺”老车主的事情,让咱们害怕买车就降价,感觉自己亏了。其实新车上市没多久就降价,主要是因为市场竞争压力,和产品技术迭代太快,这两个因素造成的结果。
百度发布金融行业大模型,沈抖:产业从提示词优化走向智能体构建 - 天天要闻

百度发布金融行业大模型,沈抖:产业从提示词优化走向智能体构建

图片系AI生成6月6日消息,在2025智能经济论坛上,百度集团执行副总裁、百度智能云事业群总裁沈抖宣布,目前已有65%的央企选择与百度智能云开展深度合作,同时百度智能云发布千帆慧金金融大模型,并推出了覆盖能源、交通、汽车、医疗、环境等领域的精选行业场景智能体家族。百度摸索行业大模型,金融领域做试点行业大模型是...
一日一技:如何正确渲染大模型返回的Markdown? - 天天要闻

一日一技:如何正确渲染大模型返回的Markdown?

我们经常让大模型返回Markdown格式的文本,然后通过Python的markdown库把文本渲染成HTML。但不知道大家有没有发现,大模型返回的Markdown并不是标准的Markdown。特别是当返回的内容包含列表时,大模型返回的内容有