云中江树,是国内最早提出结构化和模板化编写大模型 Prompt 范式的先行者之一。
2023年4月,他在个人实践中首次发现这种结构化、模板化的方法在编写 prompt 时非常友好,并且在大多数情况下表现出色。
2023年5月,他将这一方法开源为 LangGPT 项目,并在国内撰文公开,得到了广泛认可和喜爱。
尤其是在 GitHub、即刻、知乎等社区,这一方法引发了不小的反响。由于结构化 Prompt 的优异性能,许多朋友,甚至包括来自网易、字节等互联网大厂的同行,纷纷开始在实践中应用这种方法编写 Prompt。
尽管结构化 Prompt 的理念已经被广泛传播并应用,但仍然缺乏系统全面的资料。虽然市面上也有不少解读文章,但质量参差不齐,知识也相对零散。因此,撰写本文,希望它能成为一篇系统且高质量的结构化 Prompt 论述,为有志于学习 Prompt 编写的朋友提供有价值的参考和借鉴。
结构化的理念无处不在,它渗透于我们撰写的文章、阅读的书籍之中,通过标题、子标题、段落和句子等语法结构来组织内容。将这一思想应用于Prompt的编写,即是将编写Prompt视作撰写文章的过程,使其更加条理化、系统化。
在我们的日常写作中,为了便于阅读和表达,常常会采用各种模板来规范内容的结构和呈现方式。从古代的八股文到现代的简历模板,再到学生实验报告和学术论文的模板,这些都是为了使写作更加规范和高效。
同理,结构化Prompt的编写也可以借助多样的优质模板,让编写过程变得更加轻松,同时提升Prompt的性能和效果。你可以根据自己的喜好选择或创造模板,就像使用PPT模板一样灵活。
然而,在此之前,尽管结构化思维已有所体现,但在Prompt的具体编写上却鲜有明确的应用。如今,结构化Prompt的提出,正是将这种思维具体化,为编写高效、精准的Prompt提供了新的思路和方法。
结构化、模板化 Prompt如下。
# Role: 设置角色名称,一级标题,作用范围为全局
## Profile: 设置角色简介,二级标题,作用范围为段落
- Author: yzfly 设置 Prompt 作者名,保护 Prompt 原作权益
- Version: 1.0 设置 Prompt 版本号,记录迭代版本
- Language: 中文 设置语言,中文还是 English
- Description: 一两句话简要描述角色设定,背景,技能等
### Skill: 设置技能,下面分点仔细描述
1. xxx
2. xxx
## Rules 设置规则,下面分点描述细节
1. xxx
2. xxx
## Workflow 设置工作流程,如何和用户交流,交互
1. 让用户以 "形式:[], 主题:[]" 的方式指定诗歌形式,主题。
2. 针对用户给定的主题,创作诗歌,包括题目和诗句。
## Initialization 设置初始化步骤,强调 prompt 各内容之间的作用和联系,定义初始化行为。
作为角色 <Role>, 严格遵守 <Rules>, 使用默认 <Language> 与用户对话,友好的欢迎用户。然后介绍自己,并告诉用户 <Workflow>。
LangGPT 目前选用的是 Markdown 标记语法,一是因为 ChatGPT 网页版本身就支持 Markdown 格式,二是希望对非程序员朋友使用更加友好。程序员朋友推荐使用yaml, json 等进行结构化 prompt 开发。
结构化的表达方式极大地减轻了人类用户和GPT模型的认知负荷,显著提升了双方对Prompt语义的理解和把握。对于用户而言,这种清晰的结构使得Prompt内容直观易懂,语义分明,用户只需简单模仿即可轻松编写Prompt。更进一步,借助LangGPT提供的Prompt生成助手,用户还能高效地创建出高质量的初步Prompt。
这些生成的初步Prompt足以应对大多数日常使用场景,而对于生产级别的应用场景,也可以在这些初版Prompt的基础上进行迭代和优化,从而大幅减少编写Prompt的工作量。
对于GPT模型而言,结构化的层级标识符有助于集中处理相同语义的信息,梳理和组织语义内容,降低了模型对Prompt理解的复杂度。此外,属性词的使用对Prompt内容进行了有效的语义提示和归纳,减轻了不当内容对模型理解的干扰。通过将属性词与Prompt内容相结合,形成了清晰的局部总分结构,使得模型能够更加高效地把握Prompt的整体语义。
然而,最近一群研究人员在一篇名为"Let Me Speak Freely"的论文中专门研究了结构化格式对AI性能的影响。结果显示,这些所谓的"规矩"可能正在限制AI的思考能力!
结构化提示词正在让我们的AI变笨!是的,那些让AI乖乖按照JSON、XML格式输出的复杂提示词,可能并不如我们想象中那样好。
研究人员认为,可能是因为现有的训练数据中,结构化格式的内容还不够多。就像你让一个从小只读过白话文的人突然写文言文一样,难免会有些"不适应"。
结构化提示词虽然在让AI生成更精确、更符合预期的输出方面表现出色,但新研究表明,它们也可能限制了AI的潜在能力。当我们强迫AI按照固定的格式(如JSON或XML)来回应时,虽然提高了输出的可读性和一致性,但也可能压制了AI的创造性思维和自由表达。
这意味着,虽然结构化提示词可以在某些应用场景中提供可靠的结果,但在更复杂或开放性的任务中,可能会导致性能的下降或局限性。因此,如何平衡提示词的结构化与AI自由发挥的空间,成了我们需要仔细思考的问题。
你怎么看待这个问题? 你会倾向于继续使用结构化提示词,确保输出的一致性和可控性,还是愿意给AI更多自由,让它展示出更丰富的创造力?欢迎在评论区分享你的观点!
参考资料:
https://github.com/langgptai/LangGPT/blob/main/Docs/HowToWritestructuredPrompts.md
https://arxiv.org/pdf/2408.02442