3 分•作者: nayajunimesh•5 个月前
大多数人工智能聊天应用(如 ChatGPT 或 Claude)会以 Markdown 文本的形式将回复流式传输给客户端。每当新的文本块到达时,前端通常会重新解析整个 Markdown 文档以渲染更新后的消息。这种方法可行,但对于长回复来说,它会迅速降低用户界面的速度。 我一直在思考如何让这个过程更有效率,所以我编写了一个 Markdown 解析器,它可以(半)增量地解析流式 Markdown。它不会每次都重新处理整个文档,而是只解析新增内容,并且每行只处理一次。块级节点会被缓冲,直到它们完成(例如,当一个段落结束并且不会被更多文本扩展时)。这也使得在服务器端解析 Markdown 成为可能。主要演示正是这样做的。此外,动画化 Markdown 块也因此变得更加简单和高效。 这是一个演示,如果您想看看它的实际效果: <a href="https:&#x2F;&#x2F;markdownparser.vercel.app&#x2F;experimental" rel="nofollow">https:&#x2F;&#x2F;markdownparser.vercel.app&#x2F;experimental</a> 您可以随意输入“渲染一个包含 10 行的表格”来查看每个表格行的动画效果。 我花了很多时间思考这个问题,所以如果您正在处理类似的问题,我很乐意与您交流。