一、结构化输出的重要性与常用格式
1.1 重要性
在与 LLM 交互时,我们常常希望模型输出的内容具有特定结构,以便于后续的处理和分析。例如,当我们要求模型生成数据统计报告、任务规划列表或者问答对时,如果输出是结构化的,我们可以轻松地将其导入到数据库、电子表格或通过编程进行进一步的自动化处理。相比之下,非结构化的文本输出虽然易于阅读,但在程序处理上会困难得多。
1.2 常用格式
-
JSON(JavaScript Object Notation):这是一种轻量级的数据交换格式,以键值对的形式组织数据,非常适合在不同编程语言之间进行数据传输和存储。例如,要求模型生成一篇关于水果的简要信息,使用 JSON 格式输出可能如下:
{
"水果名称": "苹果",
"颜色": "红色",
"营养价值": "富含维生素C、纤维素等",
"常见产地": "山东、陕西"
} -
Markdown:Markdown 是一种轻量级标记语言,它使用简单的符号(如 #表示标题,- 表示列表项)来格式化文本,生成的文档易于阅读和转换为其他格式,如 HTML。例如,要求模型生成一篇旅游景点介绍的 Markdown 格式内容:
bash
# 长城
## 简介
长城是中国古代的军事防御工程,绵延万里。
## 地理位置
主要分布在河北、北京、天津、山西、陕西、甘肃、内蒙古、黑龙江、吉林、辽宁、山东、河南、青海、宁夏、新疆等15个省区市。
## 历史意义
它见证了中国历史上多个朝代的兴衰,是中华民族坚韧精神的象征。
二、如何设计 Prompt 以实现结构化输出
2.1 明确的指令
在设计 Prompt 时,要清晰明确地告诉模型你期望的输出格式。例如,如果你想要 JSON 格式的电影推荐,Prompt 可以这样写**:"请以 JSON 格式为我推荐三部科幻电影,每个电影对象包含电影名称、导演、上映年份这三个属性。"**

2.2 提供示例
为了让模型更准确地理解你的需求,可以在 Prompt 中提供示例。比如:"请以 Markdown 格式为我介绍一种动物,格式如下:
[动物名称]
外观描述
详细描述动物的外观特征
生活习性
介绍动物的生活习性
示例:
大熊猫
外观描述
大熊猫体型肥硕似熊,毛色黑白相间,有大大的黑眼圈。
生活习性
主要栖息于中国四川、陕西和甘肃的山区,以竹子为主食,生性较为慵懒,大部分时间用于进食和睡觉。
现在请介绍一种你选择的动物。"

2.3 约束条件与细节要求
除了基本的格式要求,还可以添加约束条件和细节要求,使输出更符合你的期望。例如,对于 JSON 格式的公司财务报告输出,可以要求:"请以 JSON 格式为我生成某公司上季度的财务报告,包含总收入、总成本、净利润这三个字段,每个数值需精确到小数点后两位。"

三、避免模型幻觉与确保输出准确性
3.1 模型幻觉问题
模型幻觉是指 LLM 生成看似合理但实际上错误或虚构的信息。在结构化输出中,这种问题也可能出现,例如在 JSON 格式的人物传记输出中,模型可能虚构人物的经历或成就。
3.2 解决方法
- 限定信息来源:在 Prompt 中明确要求模型基于可靠信息源进行输出。比如:"请以 JSON 格式为我介绍某位知名科学家,信息需来源于权威科学文献和公开报道,每个属性需有可靠依据。"
- 增加验证性语句:在 Prompt 结尾添加要求模型自我验证的语句。例如:"请确保以上输出的所有信息真实可靠,如有不确定的内容,请注明'信息不确定'。"
- 后处理验证:在模型输出后,通过外部知识库、搜索引擎或其他验证手段对输出内容进行核实。例如,对于模型输出的历史事件相关的结构化内容,可以通过查阅历史书籍或权威历史网站进行验证。
四、实践练习
4.1 练习一:JSON 格式的菜谱生成
- 任务:设计一个 Prompt,要求模型以 JSON 格式生成一份简单的炒菜菜谱,每个菜谱对象包含菜名、所需食材(以列表形式呈现)、烹饪步骤(每个步骤以简短描述呈现)。

- 示例输出:
bash
{
"菜名": "番茄炒蛋",
"所需食材": ["番茄", "鸡蛋", "盐", "糖", "食用油"],
"烹饪步骤": ["将番茄洗净切块,鸡蛋打入碗中搅拌均匀", "锅中倒入适量食用油,油热后倒入鸡蛋液炒熟盛出", "锅中再倒入少许油,放入番茄块翻炒出汁,加入适量盐和糖调味", "倒入炒好的鸡蛋,与番茄一起翻炒均匀即可"]
}
4.2 练习二:Markdown 格式的产品评测
- 任务:设计一个 Prompt,让模型以 Markdown 格式生成对某电子产品(如手机)的评测,内容包括产品概述、优点、缺点、总体评分(1 - 10 分)这几个部分。
- 示例输出:
bash
# [手机型号]产品评测
## 产品概述
[简要介绍手机的品牌、型号、主要特点等]
## 优点
1. [优点1的详细描述]
2. [优点2的详细描述]
## 缺点
1. [缺点1的详细描述]
2. [缺点2的详细描述]
## 总体评分
[X]分
通过这些练习,你可以更好地掌握如何设计 Prompt 以实现结构化输出,并有效避免模型幻觉,提高输出的准确性和实用性。在实践过程中,不断调整和优化 Prompt,以获得更符合预期的结果。
此外,推荐一个 Prompt优化设计平台:
https://promptpilot.volcengine.com/home
