同样一段素材,有人拿到一大段话,有人拿到一张能直接粘进表格的东西。差别通常不在 AI 模型,在于有没有把"输出长什么样"写进要求。结构化的价值不在好看,在下游能不能用:能不能排序、能不能比对、能不能被程序读。
格式是给下游用的接口
三个判断维度:能不能复用,直接进表格或文档;能不能核对,缺哪项一眼看出来;能不能对接,字段固定,脚本可以解析。一段散文在这三项上都吃亏,问题不在内容,在形状。
这也解释了为什么"整理成表格"往往比"帮我分析"更有用。前者给了验收标准,后者只给方向。你甚至可以先不看内容,只看列齐不齐,就知道这次输出值不值得读。
反过来,格式定错了,内容再好也要返工。把十种方案的对比压成三列,判断依据被挤掉;把一段有条件的结论塞进单元格,条件就丢了。
三种结构,三种下游
| 结构 | 适合的任务 | 必须写清的 | 常见失败 |
|---|---|---|---|
| 清单 | 步骤、检查项、要点 | 条数、顺序、每条长度 | 层级混乱,条目互相包含 |
| 表格 | 多项对比、参数汇总 | 列名、行数、排序依据 | 列对不齐,单元格塞长句 |
| 固定字段 | 要入库、要进程序 | 字段名、类型、空值写法 | 少字段、自加字段、类型不对 |
| 分层大纲 | 长文改写、汇报结构 | 几级、每级几条 | 层级过深,同级详略不一 |
表格适合人看,固定字段适合机器读。两者都要,就先出字段,再让它把字段渲染成表,别反过来做。
指令要写满四个槽位
形式、字段、数量与顺序、示例。少一个,它就自己补一个。只说"整理成表格",它给你它认为合理的列;说"按重要性排序",排出来的顺序你无从验证;给一条示例,比描述十句都管用,因为示例同时定了粒度、语气和空值写法。
字段名要写成下游能直接用的形式。带空格、括号、单位的中文列名,粘进表格后常要手动改。"单价(元)"不如拆成"单价"和"币种"两列,程序处理时不必再解析字符串。
数量写死。"列五条"和"列几条"是两种结果。行数多时加一句"按日期倒序,只保留前 5 行",比让它自己挑可控。
再加一条收口:"只输出表格,不要解释。"少掉表外的开场白和客套句,后面解析省事很多。多数模型会默认补一句"希望对你有帮助",这句就是解析失败的常见原因。
长内容会崩,要分块
一次要三十行十列,常见结果是列错位、后几行开始偷懒、单元格里塞整段话。原因不神秘:输出越长,靠后的位置越容易偏离前面建立的格式。生成是按 token 一个个来的,前面建立的模式会随着距离变远而约束变弱。
做法是分块。按来源切成三到五块,每块输出同样的字段,最后自己拼。拼接时保留一个"来源"字段,出错能回溯到是哪一块的问题。块与块之间留一点重叠,避免边界上的信息两边都漏。
另一个办法是先出骨架再填。让它先只输出表头和空行,确认列对了,再逐段填内容。多一轮交互,省掉一次整体重来。
输出长也意味着等得久。一次生成几千 token 的表格,耗时可能是短回答的好几倍,每秒输出多少 token直接决定你要等多久;如果用的是有额度限制的版本,长输出还更容易撞上限,免费版与付费版的差别主要就体现在这类地方。
解析失败怎么排查
先分清三种错。缺字段:字段清单没给全,或字段太多,超出它一次能守住的量。串列:分隔方式含糊,用了"拿竖线隔开"这种口头约定。编内容:某字段没有依据,又不想留空,于是补了个看起来合理的值。
第三种最难发现。对策是显式允许空值:"没有提到的填未提及,不要推测。"字段多的时候减法比加法有效:先保五个关键字段,跑顺了再加。
如果是程序调用,优先用接口自带的结构化输出能力,让返回受给定字段约束,比自己写正则去抠文本稳。是否支持、字段有什么限制,以官方文档和最新版本为准。模型本身的指令跟随能力也有差别,参数规模小的版本在长字段约束上更容易丢项,选型时可以对照参数量与能力的关系。
什么时候不该结构化
探索阶段不要。你还不知道有哪些维度时,先让它自由写,读完再决定抽哪些字段。过早定表,会把没想到的角度排除在外。
需要论证和语气的地方也不适合。给管理层的判断、给客户的说明,段落里的转折和限定本身就是信息,压成表格会丢掉"在什么条件下成立"。
内容很少时,结构化是负担。三条要点做张表,读的人还要跨列对齐,不如三行字。
一张自检表
结构化输出速查
- 先定下游:人看用表,机器读用字段
- 四个槽位写满:形式、字段、数量与顺序、示例
- 字段名不带空格括号单位,拆成独立列
- 超过二十行就分块,保留来源字段
- 显式允许留空,禁止推测补值
把要求前置,是这件事的全部:多花十秒写清格式,省掉后面十分钟的手工整理。字段设计得好的模板可以反复用,改的时候只换字段不换结构。


