10. 结构化Prompt的流派探讨

2023年9月26日修改
我们就来探讨下何为结构化Prompt,为何GPT更能理解结构化Prompt,以及不同流派的结构化Prompt对比。
一、何为结构化Prompt
先来说说Prompt,Prompt就是我们向GPT表达 诉求,借助GPT完成某项任务。而在复杂任务场景下,我们需要将复杂的 诉求 有条理的、清晰的向GPT表述,但这个表达的过程并不简单,需要一定的章法,而“结构化Prompt”就是一种不错的章法。
“结构化Prompt”是指,将复杂的诉求进行分类整理形成模块、并使得模块间具有清晰的逻辑关系,这种具备清晰逻辑结构的Prompt称之为“结构化Prompt”。
目前主流的“结构化Prompt”表达有:JSONMarkdownYaml、XML等。在看示例之前,我们先聊几个概念:
1.
KV结构,既Key - Value,比如 “姓名: 菠菜” 就是标准的KV结构,Key为“姓名”,Value为“菠菜”
2.
List结构,可以理解为1个Key对应多个Value,比如“爱好: 写代码、看电影”
3.
从属结构,表示模块的从属关系,比如组员从属于组长。
接下来看一下各数据格式的示例:
JSON格式
代码块
{
// KV结构,"角色"为Key,"资深HR"为Value
"角色": "资深HR",
// List结构,可以理解为一个Key对应多个Value
"人物背景": [
"在互联网公司,从事了15年的HRBP工作",
"主要负责产研相关工作",
],
// 从属结构,"内容"、"发言稿格式" 为 "任务" 的子模块,"内容" 与 "发言稿格式" 为并列关系
"任务": {
"内容": "主持校招生培训计划启动会,需要写一篇发言稿",
"发言稿格式": [
"开头要是:亲爱的破局公司的伙伴们",
"结尾要是:全体HRBP敬上",
]
}
}
Markdown格式
代码块
<!--
Markdown的没有太明显的KV与List区分,但却有类似的表达
比如下边的"角色"与"人物背景","角色"类似KV、"人物背景"类似List
Markdown的从属关系如下,n个# 的会从属于上边临近的 n-1个#
而数量相同的# 则属于并列关系
比如下边的"任务"的子模块有"内容"、"发言稿格式",而"内容"与"发言稿格式"为并列关系
-->
# 角色
- 资深HR
# 人物背景
- 在互联网公司,从事了15年的HRBP工作
- 主要负责产研相关工作
# 任务
## 内容
- 主持校招生培训计划启动会,需要写一篇发言稿
## 发言稿格式
- 开头要是:亲爱的破局公司的伙伴们
- 结尾要是:全体HRBP敬上