实现稳定结构化输出的指令大致可归为五类:强制使用Markdown列表、预定义字段与分隔符模板、JSON Schema规范约束、分隔符包围提取机制,以及嵌套层级指令控制。

如果你希望ChatGPT生成结构清晰的列表或表格,但实际返回的却是段落式、格式混乱的内容,问题很可能出在提示词上——缺乏明确的结构化指令约束。接下来,我将详细介绍几种能够实现稳定结构化输出的指令写法。
一、强制使用Markdown列表语法
这种方法通过明确指定Markdown的无序或有序列表符号,引导模型严格遵循符号层级来生成内容,避免其使用自然语言式的松散描述。
1. 在提示词末尾明确要求:“请严格使用Markdown无序列表(-)输出结果,每个列表项独占一行,请不要添加任何额外的说明性文字。”
2. 示例提示词:“列举Python中5种常用的数据结构及其特点,请严格使用Markdown无序列表(-)输出,每个列表项独占一行,不添加额外说明文字。”
3. 若需要编号,则替换为:“请严格使用Markdown有序列表(1. 2. 3.)输出,每项独占一行,不添加任何解释性句子。”
二、定义字段与分隔符模板
此方法预先设定好字段名称和固定的分隔符,引导模型将信息映射到这个预设的模板结构中,尤其适用于需要生成类表格内容的场景。
1. 在提示词中声明:“请严格按照以下格式输出:|名称|类型|用途|示例|,其中每行代表一条记录,用竖线|分隔各个字段,首行为表头,输出时不要添加额外的空行或说明。”
2. 示例提示词:“列举3个Linux常用压缩命令,请按以下格式输出:|名称|类型|用途|示例|,每行一条记录,用竖线|分隔各字段,首行为表头,不添加额外空行或说明。”
3. 确保所有字段值均为短语级内容,严格禁止在字段内使用换行、冒号或竖线字符。
三、使用JSON Schema约束输出
此方法利用JSON的强结构特性,要求模型直接输出可被程序解析的键值对数组,适用于需要后续程序化调用的场景。
1. 在提示词中声明:“请输出标准JSON格式,内容为一个包含3个对象的数组,每个对象必须包含键名‘name’、‘function’和‘input_example’,其值均为字符串类型。”
2. 示例提示词:“提供3个正则表达式模式及其作用,请输出标准JSON格式,内容为一个包含3个对象的数组,每个对象必须包含键名‘name’、‘function’和‘input_example’,值均为字符串。”
3. 必须强调“不添加任何JSON以外的字符,包括注释、引导文本或后缀说明”。
四、启用分隔符包围机制
此方法通过设置唯一且不易被模型随机生成的起止标记,使我们能够从模型生成的完整文本中,精准地截取出所需的结构化部分。
1. 在提示词中指定:“请将最终的结构化内容放在<<>>和<<
2. 示例提示词:“对比HTTP与HTTPS协议差异,请将最终的结构化内容放在<<>>和<<
3. 起始与结束标记需使用非常规符号组合,避免被模型自发复现。
五、嵌套层级指令控制
此方法针对多级列表或带子项的结构,通过显式命名层级关系来防止输出内容被扁平化,确保层次分明。
1. 在提示词中定义:“主条目用‘●’开头,每个主条目下最多2个子项,子项用‘○’开头并缩进两个空格,不使用数字或字母编号。”
2. 示例提示词:“说明机器学习中监督学习、无监督学习和强化学习的核心区别,请按以下规则输出:主条目用‘●’开头,每个主条目下最多2个子项,子项用‘○’开头并缩进两个空格,不使用数字或字母编号。”
3. 必须禁用“例如”“比如”等可能引发自由发挥的引导词,改用“仅输出以下结构”进行锁定。
