输出格式化:让模型吐出可解析结果
模型默认吐出的是一段自由文本,人和模型都懂,但程序不好用。想把 LLM 接进流水线,第一步往往是逼它「按格式说话」:给我 JSON、给我带分隔符的字段、给我严格的两列表格。输出格式化(Output Formatting)就是把模型的返回变成机器可解析的数据。
为什么自由文本不够用
下游代码需要确定的字段名、确定的类型,才能继续处理。如果模型偶尔多写一句寒暄、偶尔把 JSON 写错半个括号,整个解析就会崩。把格式写进提示,相当于和模型约定一份接口契约,让输出稳定、可校验、可重试。
用清晰的结构约定取代口头要求
最有效的是直接给例子(few-shot)展示期望结构,并在提示里写明字段名与类型。对 JSON,要求只输出 JSON、不要外层解释;对多字段,用固定分隔符如 ### 或 YAML。还可以要求模型在不确定时返回特定占位,而不是编造。
请只输出 JSON,不要任何解释:
{"title": "标题", "tags": ["标签1","标签2"], "score": 0.0}
若信息不足,score 填 -1。
解析失败怎么办
即便约定清楚,模型仍可能偶发格式错误。稳健做法是解析前先做清洗(去 ```json 围栏、截掉多余尾巴),解析失败则重试或降级。更进一步的办法是配合函数调用(function calling)或结构化输出能力,让模型在协议层就返回合法结构,而不是靠文本约定硬凑。
小结
输出格式化让模型按约定结构返回结果,是把 LLM 接进自动化系统的关键一步。靠明确的结构示例、字段约束与失败重试,可以把不稳定的自由文本变成可靠的机器输入;若平台支持,优先使用函数调用或原生结构化输出更稳。
参考与延伸阅读
- OpenAI 文档中 function calling 与 structured outputs 章节,说明如何在协议层约束输出结构。已核验。
- 具体字段设计与降级策略以你的业务接口为准,不同下游对必填项的要求不同。待核实。
本文累计阅读 — 次