本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权)
本文简介:结构化提示词系统论述(高阶版)
- 什么是结构化prompt(what)
- 结构化prompt的优势、好处(why)
- 如何写好结构化prompt(how)
- 结语 + 结构化prompt模版
目录
TOT(Tree of Thoughts)和COT(Chain of Thought)都是提升大模型推理能力的方法,它们的区别如下:
1. 什么是结构化 Prompt ?
结构化的思想很普遍,结构化内容也很普遍,我们日常写作的文章,看到的书籍都在使用标题、子标题、段落、句子等语法结构。结构化 Prompt 的思想通俗点来说就是像写文章一样写 Prompt。
为了阅读、表达的方便,我们日常有各种写作的模板,用来控制内容的组织呈现形式。例如古代的八股文、现代的简历模板、学生实验报告模板、论文模板等等模板。所以结构化编写 Prompt 自然也有各种各样优质的模板帮助你把 Prompt 写的更轻松、性能更好。所以写结构化 Prompt 可以有各种各样的模板,你可以像用 PPT 模板一样选择或创造自己喜欢的模板。
在这之前,虽然也有类似结构化思想,但是更多体现在思维上,缺乏在 prompt 上的具体体现。
例如知名的 CRISPE 框架,CRISPE(克瑞斯普)分别代表以下含义:
- CR: Capacity and Role(能力与角色)。你希望 ChatGPT 扮演怎样的角色,拥有哪些能力。
- I: Insight(洞察力),背景信息和上下文(坦率说来我觉得用 Context 更好)。
- S: Statement(指令),你希望 ChatGPT 做什么。
- P: Personality(个性),你希望 ChatGPT 以什么风格或方式回答你。
- E: Experiment(尝试),要求 ChatGPT 为你提供多个答案。
最终写出来的 Prompt 是这样的:
以机器学习框架领域的软件开发专家以及专家博客作者的身份行事。本博客的受众是那些有兴趣了解机器学习最新进展的技术专业人员。提供对最流行的机器学习框架的全面概述,包括它们的优势和劣势。纳入现实生活中的示例和案例研究,以说明这些框架如何在各个行业中成功应用。在回复时,综合运用安德烈・卡帕西(Andrej Karpathy)、弗朗索瓦・肖莱(Francois Chollet)、杰里米・霍华德(Jeremy Howard)和扬・勒丘恩(Yann LeCun)的写作风格。
这类思维框架只呈现了 Prompt 的内容框架,但没有提供模板化、结构化的 prompt 形式。
而我们所提倡的结构化、模板化 Prompt,写出来是这样的:
该示例来自 LangGPT 项目: https://github.com/yzfly/LangGPT/blob/main/README_zh.md
# Role: 诗人 ## Profile 角色简介 - Author: xxx - Version: 0.1 - Language: 中文 - Description: 诗人是创作诗歌的艺术家,擅长通过诗歌来表达情感、描绘景象、讲述故事,具有丰富的想象力和对文字的独特驾驭能力。诗人创作的作品可以是纪事性的,描述人物或故事,如荷马的史诗;也可以是比喻性的,隐含多种解读的可能,如但丁的《神曲》、歌德的《浮士德》。 ### 擅长写现代诗 1. 现代诗形式自由,意涵丰富,意象经营重于修辞运用,是心灵的映现 2. 更加强调自由开放和直率陈述与进行“可感与不可感之间”的沟通。 ### 擅长写七言律诗 1. 七言体是古代诗歌体裁 2. 全篇每句七字或以七字句为主的诗体 3. 它起于汉族民间歌谣 ### 擅长写五言诗 1. 全篇由五字句构成的诗 2. 能够更灵活细致地抒情和叙事 3. 在音节上,奇偶相配,富于音乐美 ## Rules 设置规则,下面分点仔细描述 1. 内容健康,积极向上 2. 七言律诗和五言诗要押韵 ## Workflow 1. 让用户以 "形式:[], 主题:[]" 的方式指定诗歌形式,主题。 2. 针对用户给定的主题,创作诗歌,包括题目和诗句。 ## Initialization 作为角色 <Role>, 严格遵守 <Rules>, 使用默认 <Language> 与用户对话,友好的欢迎用户。然后介绍自己,并告诉用户 <Workflow>。
基于上述 诗人
prompt 例子,说明结构化 prompt 的几个概念: 标识符:#
, <>
等符号(-
, []
也是),这两个符号依次标识标题
,变量
,控制内容层级,用于标识层次结构。 属性词:Role
, Profile
, Initialization
等等,属性词包含语义,是对模块下内容的总结和提示,用于标识语义结构。
日常的文章结构是通过字号大小、颜色、字体、高亮等样式来标识的,ChatGPT 接收的输入没有样式,因此借鉴 markdown,yaml 这类标记语言的方法或者 json 这类数据结构实现 prompt 的结构表达都可以,例如用标识符 #
标识一级标题,##
标识二级标题,以此类推。尤其是使用 json, yaml 这类成熟的数据结构,对 prompt 进行工程化开发特别友好。
目前选用的是 Markdown 标记语法,一是因为 ChatGPT 网页版本身就支持 Markdown 格式,二是希望对非程序员朋友使用更加友好。程序员朋友推荐使用yaml, json 等进行结构化 prompt 开发。
属性词
好理解,和学术论文中使用的摘要
,方法
,实验
,结论
的段落标题起的作用一样。
标识符
,属性词
都是可替换的,可以替换为你喜欢的符号和内容。