在实际应用中,我们常常需要大语言模型(LLM)返回结构化的数据,如 JSON 对象、Markdown 表格或纯文本列表,以便程序解析、前端渲染或自动化处理。然而,AI 默认倾向于生成自然语言,若不加以明确引导,输出格式往往不可靠。掌握精准控制输出格式的技巧,是实现 AI 与系统集成的关键一步。
明确指令:在 Prompt 中强制指定格式
最基础且有效的方法是在提示词中清晰、重复地声明期望的输出格式。避免模糊表述,应使用具体、可执行的指令。
示例对比:
- ❌ 模糊:“把以下信息整理一下。”
- ✅ 明确:“请将以下用户反馈解析为 JSON 格式,包含字段:id(整数)、category(字符串)、summary(字符串)、urgency(’low’|’medium’|’high’)。仅输出 JSON,不要任何解释。”
关键要素:
- 指定格式类型(JSON/Markdown/CSV 等);
- 定义字段名与数据类型;
- 要求“仅输出结果,无额外文本”(防止模型添加说明);
- 提供示例(Few-shot)更佳。
使用分隔符与标记增强约束
在 Prompt 中加入格式标记或分隔符,可进一步强化模型对输出边界的认知。
例如:
“请以以下格式输出,不要包含其他内容:
{ "result": "..." } ```”
或:
“输出必须严格遵循以下模板:
姓名 年龄 城市 … … …
此类标记利用了模型在训练中学习到的代码块和表格模式,显著提升格式稳定性。
利用系统角色与输出规则
通过系统消息(System Message)设定角色和行为规范,从更高层面约束输出风格。
你是一个数据提取机器人,只输出符合指定 schema 的 JSON,不解释、不道歉、不添加任何额外字符。
在 API 调用中,可将此作为 system 角色消息传入,使模型在整个对话中保持格式一致性。
针对不同格式的优化策略
1. JSON 输出:确保可解析性
- 要求使用双引号(
"),禁止单引号; - 避免尾随逗号、注释等非法语法;
- 对于嵌套结构,明确层级关系;
- 可追加校验指令:“输出必须是有效的 JSON,能被 JavaScript 的 JSON.parse() 成功解析。”
进阶技巧:部分平台(如 OpenAI)支持 response_format={ "type": "json_object" } 参数(需配合 system 提示定义 schema),强制模型输出合法 JSON。
2. Markdown 表格:对齐与简洁
- 明确列名和行数;
- 提示“使用管道符
|分隔,首行为表头,第二行为分隔线”; - 避免在单元格内换行,防止表格错位。
示例指令:
“用 Markdown 表格列出前三名学生的姓名和分数,格式如下:
姓名 分数 张三 95
3. 纯文本结构(列表、键值对)
- 指定编号方式(如“1. 2. 3.” 或 “- – -”);
- 要求每项独占一行;
- 禁止段落混合。
处理失败:后处理与重试机制
即使精心设计 Prompt,模型仍可能偶尔输出格式错误的内容。生产环境中应建立容错机制:
- 正则或解析器校验:尝试用
JSON.parse()解析,失败则捕获异常; - 自动修复或重试:将错误输出连同错误信息重新送入模型,要求修正;
“上一次输出不是合法 JSON,请修正并仅返回正确 JSON。”
- 设置最大重试次数,避免无限循环。
避免常见陷阱
- 不要依赖模型“理解”隐含格式:即使人类能推断,AI 也可能忽略;
- 中文标点问题:模型可能输出中文引号“”或顿号、,需明确要求英文符号;
- 多轮对话中的格式漂移:后续回复可能偏离初始格式,需在每轮中重复格式要求。
实战示例:可靠 JSON 输出 Prompt
你是一个 API 响应生成器。请根据以下自然语言描述,输出一个严格符合 JSON Schema 的对象。
Schema:
{
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer", "minimum": 0},
"tags": {"type": "array", "items": {"type": "string"}}
},
"required": ["name", "age"]
}
规则:
1. 仅输出 JSON,不要任何其他文字、解释或 markdown 代码块;
2. 使用双引号;
3. 确保 JSON 有效。
输入:李明,28岁,标签包括“前端”和“React”。
输出:
{"name":"李明","age":28,"tags":["前端","React"]}
通过结构化指令 + Schema + 规则 + 示例,可极大提升输出可靠性。
总结
让 AI 输出指定格式内容,核心在于消除歧义、强化约束、提供范例。结合清晰的 Prompt 设计、格式标记、系统角色设定以及后处理机制,可在绝大多数场景下获得稳定、可解析的结构化输出。随着模型能力演进(如原生 JSON 模式),这一过程将更加可靠,但明确的指令始终是基石。