microsoft/SwiftStreamingMarkdown
A performant markdown library for iOS & macOS that supports streaming
解决的问题
SwiftStreamingMarkdown 专为实时从大型语言模型(LLM)流式传输文本的聊天式用户界面而设计。传统 Markdown 渲染器在新文本到达时更新视图,常导致 UI 卡顿或突兀的过渡;该库提供流畅、高性能的流式传输过渡和优化渲染,确保在 iOS 和 macOS 上保持流畅的用户体验。
工作原理
该库提供一个专用的 StreamedMarkdownView,它消费一个 StreamedMarkdownSource。与从头重新渲染整个文档不同,它会逐步解析并渲染随文本到达的 Markdown 源快照,最大限度减少主线程工作,防止 UI 卡顿。它针对的是 CommonMark 和 GitHub 风格 Markdown 的子集,特别针对 LLM 通常生成的响应类型进行了优化。
适用人群
正在为 iOS 和 macOS 开发 AI 聊天应用,需要支持复杂元素(如 LaTeX 数学公式和引用)的专业、精致的流式文本体验的开发者。
主要亮点
- 流畅流式传输:内置动画,使新接收的文本更新更自然,避免突兀变化。
- LLM 优化:特别支持 LLM 常见输出的语法,包括表格、围栏代码块和任务列表。
- 高级渲染:原生支持内联和块级 LaTeX 数学公式渲染。
- 来源溯源:包含专用 UI 用于内联引用标签(citation pills),支持基于来源的 LLM 回复。
- 高度可定制:通过
MarkdownRenderConfig高度配置排版和主题。 - 事件追踪:通过
MarkdownListener提供内置钩子,用于分析和交互追踪。
相关
- 项目
- 项目
- 项目
- 项目