提升你的AI力量:结构化prompt技巧大揭秘!
原创 AI洞察笔记 2023-09-18 21:26:59
从学习ChatGPT的prompt提示词以来,一直学习到的prompt技巧都是:
-
你的角色是XX...
-
你现在是一名XXX...
-
你是一名有X年经验的XXX...
-
你会XX,不要YY...
-
...
对于一个完全不会一点prompt技巧的人来说,上面的技巧对于回复的效果确实有着明显提升。看过很多类似“必看的10大prompt技巧”、“价值2万元珍藏的Prompt”后,发现大家都在上面的技巧中做各种排列组合。直到有一天,看到有个大佬发的文章,才发现编写prompts可以像写程序一样,提前预制好,设置各种命令供用户调用,才发现可以像文章或程序一样,结构化的对prompts进行编写和表达。结构化的思想很普遍,结构化内容也很普遍,我们日常写作的文章,看到的书籍都在使用标题、子标题、段落、句子等语法结构。结构化 Prompt 的思想通俗点来说就是像写文章一样写 Prompt。
1
结构化: 对信息进行组织, 使其遵循特定的模式和规则, 从而方便有效理解信息. – by GPT 4
结构化 , 就是将各种想要的, 不想要的, 都清晰明确地表述在设计好的框架结构中:
-
语法
这个结构支持
Markdown
语法, 也支持 YAML、XML、JSON语法, 甚至纯文本手动敲空格和回车都可以。我个人习惯使用 Markdown 语法, 一方面便于集成在各种笔记软件中进行展示,另一方面考虑到 ChatGPT 的训练语料库中该类型的材料更多一些。 -
结构
结构中的信息, 可以根据自己需要进行增减, 从中总结的常用模块包括:
-
# Role: <name> : 指定角色会让 GPT 聚焦在对应领域进行信息输出
-
## Profile author/version/description : Credit 和 迭代版本记录
-
## Goals: 一句话描述 Prompt 目标, 让 GPT Attention 聚焦起来
-
## Constrains: 描述限制条件, 其实是在帮 GPT 进行剪枝, 减少不必要分支的计算
-
## Skills: 描述技能项, 强化对应领域的信息权重
-
## Workflow: 重点中的重点, 你希望 Prompt 按什么方式来对话和输出
-
# Initialization: 冷启动时的对白, 也是一个强调需注意重点的机会
-
示例:
# Role: 成语接龙高手
## Profile
- Author: 毅鸣
- Version: v1.0
- Language: 中文
- Description: 玩成语接龙游戏
## 擅长回复中国古典文学中的成语
## 擅长根据用户发送的成语最后一个字作为开头,回复常用成语
## Rules
1. 根据用户发送的成语,回复成语
2. 如用户发送“一鸣惊人”,应该回复“人”开头的四字成语,且回复的成语是常用成语,如回复“人山人海”
## Workflow
1.以”让我们开始玩成语接龙游戏吧,你的第一个成语是?“的方式开头
2.针对用户发送的成语,进行接龙
## Initialization
作为角色 <Role>, 严格遵守 <Rules>, 使用默认 <Language> 与用户对话,友好的欢迎用户。然后介绍自己,并告诉用户 <Workflow>。
2
为了阅读、表达的方便,我们日常有各种写作的模板,用来控制内容的组织呈现形式。例如古代的八股文、现代的简历模板、学生实验报告模板、论文模板等等模板。所以结构化编写 Prompt 自然也有各种各样优质的模板帮助你把 Prompt 写的更轻松、性能更好。所以写结构化 Prompt 可以有各种各样的模板,可以像用 PPT 模板一样选择或创造自己喜欢的模板。
优势一:层级结构:内容与形式统一
-
结构清晰,可读性好
结构化方式编写出来的 Prompt 层级结构十分清晰,将结构在形式上和内容上统一了起来,可读性很好。
-
Role (角色)
作为 Prompt 标题统摄全局内容。 -
Profile (简介)
、Rules(规则)
作为二级标题统摄相应的局部内容。 -
Language
、Description
作为关键词统摄相应句子、段落。 -
结构丰富,表达性好
这种方式写出来的 Prompt更符合人类的表达习惯,与我们日常写文章时有标题、段落、副标题、子段落等丰富的层级结构是一样的。也更符合 ChatGPT 的认知习惯,因为 ChatGPT 正是在大量的文章、书籍中训练得到,其训练内容的层级结构本来就是十分丰富的。
优势二:提升语义认知
结构化表达同时降低了人和 GPT 模型的认知负担,大大提高了人和GPT模型对 prompt 的语义认知。 对人来说,Prompt 内容一目了然,语义清晰,只需要依样画瓢写 Prompt 就行。
对 GPT 模型来说,标识符标识的层级结构实现了聚拢相同语义,梳理语义的作用,降低了模型对 Prompt 的理解难度,便于模型理解 prompt 语义。
属性词实现了对 prompt 内容的语义提示和归纳作用,缓解了 Prompt 中不当内容的干扰。 使用属性词与 prompt 内容相结合,实现了局部的总分结构,便于模型提纲挈领的获得 prompt 整体语义。
优势三:定向唤醒大模型深度能力
使用特定的属性词能够确保定向唤醒模型的深层能力。实践发现让模型扮演某个角色其能大大提高模型表现,所以一级标题设置的就是 Role
(角色) 属性词,直接将 Prompt 固定为角色,确保定向唤醒模型的角色扮演能力。也可使用 Expert
(专家), Master
(大师)等提示词替代 Role
,将 Prompt 固定为某一领域专家。
再比如 Rules
,规定了模型必须尽力去遵守的规则。比如在这里添加不准胡说八道的规则,缓解大模型幻觉问题。添加输出内容必须积极健康的规则,缓解模型输出不良内容等。用 Constraints
(约束),中文的 规则
等词替代也可。
优势四:像代码开发一样构建生产级 Prompt
代码是调用机器能力的工具, Prompt 是调用大模型能力的工具。Prompt 越来越像新时代的编程语言。 在生产级 AIGC 应用的开发中,结构化 prompt 使得 prompt 的开发也像代码开发一样有规范。 结构化 Prompt 的这些规范,这些模块化设计,能够大大便利于 prompt 后续的维护升级,便利于多人协同开发设计。像复用代码一样复用 Prompt。 对于某些常用的模块,比如 Rules 是不是可以像复用代码一样实现 Prompt 的复用?是不是可以像面向对象的编程一样复用某些基础角色?同时 Prompt 作为一种文本,也完全可以使用 Git 等工具像管理代码一样对 prompt 进行版本管理。
3
一、全局思维
二、保持上下文语义一致性
包含两个方面,一个是格式语义一致性,一个是内容语义一致性。
格式语义一致性是指标识符的标识功能前后一致。 最好不要混用,比如 # 既用于标识标题,又用于标识变量这种行为就造成了前后不一致,这会对模型识别 Prompt 的层级结构造成干扰。内容语义一致性是指思维链路上的属性词语义合适。 内容语义一致性还包括属性词和相应模块内容的语义一致。
三、有机结合其他 Prompt 技巧
构化 Prompt 编写思想是一种方法,与其他例如 CoT, ToT, Think step by step 等技巧和方法并不冲突,构建高质量 Prompt 时,将这些方法结合使用,结构化方式能够更便于各个技巧间的协同组织。
从 prompting 的角度有哪些方法可以提高大模型在复杂任务上的性能表现呢?
汇总现有的一些方法:
-
细节法:给出更清晰的指令,包含更多具体的细节
-
分解法:将复杂的任务分解为更简单的子任务 (Let's think step by step, CoT,LangChain等思想)
-
记忆法:构建指令使模型时刻记住任务,确保不偏离任务解决路径(system 级 prompt)
-
解释法:让模型在回答之前进行解释,说明理由 (CoT 等方法)
-
投票法:让模型给出多个结果,然后使用模型选择最佳结果 (ToT 等方法)
-
示例法:提供一个或多个具体例子,提供输入输出示例 (one-shot, few-shot 等方法)
4
结构化 Prompt 依赖于基座模型能力,并不能解决模型本身的问题,结构化 Prompt 并不能突破大模型 Prompt 方法本身的局限性。
精彩回顾
1. 掌握这个提示词框架,可随时根据你的具体业务创建一个AI 代理
欢迎分享、在看、点赞
0 回答
默认排序
时间排序
暂无评论,快来发表你的评论吧!