1518 字
约 5 分钟
12
大模型输出格式选型:纯文本 / Markdown / JSON / YAML / XML,到底怎么选?

先回答两个"为什么"

很多人第一次用大模型时都会困惑:为什么 AI 默认输出 Markdown?为什么不直接给 JSON?

原因一:大模型是文本模型,不是渲染引擎。 HTML 太重,一个 <div> 要占几十个 token,而 Markdown 用几个符号就能表达同样的结构层级,Token 成本低得多——这是 Token 即金钱的时代里最朴素的选择。

原因二:角色扮演是成本最低的"人格化"。 同一个模型,通过 System Prompt 指定角色,就能变成客服、面试官、代码审查员——角色 + 任务 + 上下文 + 约束 + 示例 + 格式,六要素一组合,行为就完全不一样。而"格式"正是六要素里和输出最直接相关的一环。

换句话说:提示工程决定了模型"说什么",输出格式决定了模型"怎么说、怎么交"。 本文就把输出格式这件事掰开揉碎,用流式体验作为主线做一次硬核对比。

一、五种输出格式速览

1. 纯文本

零结构、零语法负担,最省 Token,但除了"人读"什么都做不了。适合聊天回复、简短结论、给人类看的摘要。

2. Markdown

大模型的事实默认值。人机两用:人读起来有层级,机器可以用 #/-/` 做轻量解析。缺点是语义靠"惯例"而非"规则"——模型偶尔漏一个 # 或缩进错位,解析就崩。

3. JSON

机器友好天花板。字段明确、嵌套清晰,JSON.parse 一次到位,配 JSON Schema 还能做校验与纠错。代价是结构开销高:{、"、, 全是 Token,且必须等整个 JSON 闭合才能解析。

4. YAML

可读性好、配置界老熟人,Token 介于纯文本和 JSON 之间。但缩进敏感 + 转义规则多,LLM 生成的 YAML 稍有缩进漂移就报废,是五种里"最容易翻车"的一个。

5. XML

语法最重(开闭标签翻倍),但换来的是明确的边界语义——<tag> 一出现就知道字段开始了,</tag> 一出现就知道字段结束了。这正是流式场景的杀手锏。

二、四个维度硬核对比

维度 纯文本 Markdown JSON YAML XML
前端处理 无,整段展示 渲染器一次转换 解析一次出对象 需 YAML 解析器 流式解析 / 一次性解析
Token 量 最低 低 较高 中 最高(标签翻倍)
结构解析 ✗ 无法提取字段 △ 靠惯例,易错 ✓ 强,可 Schema 校验 △ 缩进敏感易崩 ✓ 强,标签即边界
流式体验 逐字显示,无结构 逐字显示,无法提取字段 等全文闭合,解析一次 等全文,且易错 捕获标签 → 立刻渲染字段
容错性 — 中 中(可用 partial-json 补救) 低 高(标签边界容错)
最佳场景 聊天、摘要 博客、文档、对话 API、Agent 工具调用 配置文件 SSE 流式、结构化事件流

三、核心结论:流式体验决定一切

如果说 Token 量决定"贵不贵",流式体验就决定"快不快、准不准"。三种主流格式在流式下的表现截然不同:

🟢 XML:捕获标签 → 立刻渲染字段

生成 <title>流式渲染</title> 时,前端读到 <title> 就开始挂载字段,读到 </title> 立刻完成该字段渲染。可以像 SAX 解析器一样边生成边消费,每个字段的"开始"和"结束"都有明确信号,天然适配 SSE(Server-Sent Events)。这是增量渲染的正解。

🟡 JSON:等全文 → 解析一次

{ 开始、} 结束才算完。流式到一半的 JSON 是非法 JSON,前端只能干等;要么用 partial-json / json-stream 这类增量解析库做 hack,要么接受"转圈圈直到全部生成"。延迟换取完整性和类型安全,适合工具调用这类"必须一次给对"的场景。

🔴 Markdown:逐字显示 → 无法提取字段

只能整段渲染:# 标题 要等这一行基本完整才敢上样式,更别提从流里抓一个字段——没有闭合语义,你永远不知道"这句话是不是已经完了"。它适合"给人看",不适合"给程序抓"。

一句话总结

给人读,选 Markdown;给机器一次性消费,选 JSON;给机器边生成边消费,选 XML。

四、实战选型建议(决策树)

  1. 纯聊天气泡、周报、总结 → Markdown(或纯文本),渲染器一步到位。
  2. 结构化数据、Agent 函数调用、需要校验 → JSON + JSON Schema,配 partial-json 兜底流式。
  3. SSE 流式输出、前端要逐字段渲染的复杂 UI → XML(或自建轻量标签协议如 <field>),增量解析。
  4. 配置文件、静态文档 → YAML 交给人类写,别让模型直接生成,翻车率太高。
  5. 混合方案:外层 JSON 传元信息 + 内层 Markdown 传正文(很多内容平台就是这么干的)。

五、写在最后

输出格式不是"编码习惯",而是产品体验的一部分。选错格式,轻则多烧 Token,重则流式白做、字段抓不出来。记住这条主线:

Token 决定成本,结构决定可解析性,闭合语义决定流式体验。 下次设计 LLM 应用时,先问自己三个问题:这份输出给谁看?要不要拆字段?能不能边生成边消费?答案出来,格式自己就定了。

大模型输出格式选型:纯文本 / Markdown / JSON / YAML / XML,到底怎么选?
https://clxhxhhr.top/posts/4613/
作者
clxstart
发布于
2026-10-11
许可协议
CC BY-NC-SA 4.0
评论
0 条
还没有评论,先写一条吧。