网站首页 > 知识剖析 正文
我们经常让大模型返回Markdown格式的文本,然后通过Python的markdown库把文本渲染成HTML。
但不知道大家有没有发现,大模型返回的Markdown并不是标准的Markdown。特别是当返回的内容包含列表时,大模型返回的内容有问题。例如下面这段文本:
**关于这个问题,我有以下看法**
* 第一点
* 第二点
* 第三点
你粗看起来没有问题,但当你使用markdown模块去把它渲染成HTML时,你会发现渲染出来的结果不符合你的预期,如下图所示:
这是因为标准的Markdown对换行非常敏感,列表项与它上面的文本之间,必须有一个空行,才能正确解析,如下图所示:
不仅是空行,还有多级列表的缩进问题。标准Markdown的子列表项缩进应该是4个空格,但大模型返回的子列表缩进经常只有3个空格,这就导致解析依然有问题。如下图所示:
而且这个空行问题和缩进问题,我尝试过反复在Prompt里面强调,但大模型依然会我行我素,无论是国产大模型还是Claude或者Gemini 2.5 Pro这些最新大模型,都有这个问题。
我曾经一度被憋得没办法,让大模型给我返回JSON,我再写代码把JSON解析出来手动拼接成标准Markdown。
后来,我发现主要的问题还是Python的markdown库对格式要求太严格了,其实换一个更宽容的库就可以解决问题。于是我找到了mistune这个库。使用它,直接就解决了所有问题。如下图所示:
mistune的用法非常简单:
import mistune
html = mistune.html('一段markdown')
并且它天然支持数学公式、脚注等等高级语法。更多高级操作,可以查看它的官方文档[1]。
参考文献
[1] 官方文档:
https://mistune.lepture.com/en/latest/guide.html
猜你喜欢
- 2025-06-24 HTTP/3 黑科技:三次握手如何进阶 QUIC?30 年通信细节揭秘
- 2025-06-24 Markdown 语法速查手册与教程(markdown语法是什么意思)
- 2025-06-24 二 计算机网络 前端学习 物理层 链路层 网络层 传输层 应用层 HTTP
- 2025-06-24 计算机网络之HTTP协议(http网络协议原理)
- 2025-06-24 零基础学习网站必知—http协议等资料大全
- 2025-06-24 Python文件操作:读写txt/csv/json的终极方案
- 2025-06-24 Tomcat处理HTTP请求流程解析(tomcat如何解析http参数)
- 2025-06-24 从零开始,30天学会在Shopify上开店之店铺设置–Day5
- 2025-06-24 壹起航:网站优化之网站代码优化(网站代码优化工具)
- 2025-06-24 软网推荐:请个多功能纯文本管理助手
- 最近发表
-
- HTTP/3 黑科技:三次握手如何进阶 QUIC?30 年通信细节揭秘
- Markdown 语法速查手册与教程(markdown语法是什么意思)
- 二 计算机网络 前端学习 物理层 链路层 网络层 传输层 应用层 HTTP
- 计算机网络之HTTP协议(http网络协议原理)
- 零基础学习网站必知—http协议等资料大全
- Python文件操作:读写txt/csv/json的终极方案
- Tomcat处理HTTP请求流程解析(tomcat如何解析http参数)
- 一日一技:如何正确渲染大模型返回的Markdown?
- 从零开始,30天学会在Shopify上开店之店铺设置–Day5
- 壹起航:网站优化之网站代码优化(网站代码优化工具)
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)