提示词库/治AI的毛病/结构化 Prompt 的优势 结构化 Prompt 的优势
中文已实测✓exp-2728
优势太多了,说一千道一万,**归根结底还是结构化、模板化 Prompt 的性能好!**
这一点已经在许多朋友的日常使用甚至商业应用中得到证明。许多企业,乃至网易、字节这样的互联网大厂都在使用结构化 Prompt!
此外结构化、模板化 Prompt 还有许多优势,**这些优势某种意义上又是其在实际使用时表现卓越的原因。**
### 优势一:层级结构:内容与形式统一
#### 结构清晰,可读性好
结构化方式编写出来的 Prompt 层级结构十分清晰,将结构在形式上和内容上统一了起来,**可读性很好**。
* `Role (角色)` 作为 Prompt 标题统摄全局内容。
* `Profile (简介)`、`Rules(规则)` 作为二级标题统摄相应的局部内容。
* `Language`、`Description` 作为关键词统摄相应句子、段落。
#### 结构丰富,表达性好
CRISPE 这类框架命中注定结构简单,因为过于复杂将难以记忆,大大降低实操性,因此其往往只有一层结构,这限制了 Prompt 的表达。
结构化 prompt 的结构由形式控制,完全没有记忆负担。只要模型能力支持,可以做到二层,三层等更多、更丰富的层级结构。
那么为什么要用更丰富的结构?这么做有什么好处呢?
这种方式写出来的 Prompt **符合人类的表达习惯**,与我们日常写文章时有标题、段落、副标题、子段落等丰富的层级结构是一样的。
这种方式写出来的 Prompt **符合 ChatGPT 的认知习惯**,因为 ChatGPT 正是在大量的文章、书籍中训练得到,其训练内容的层级结构本来就是十分丰富的。
### 优势二:提升语义认知
结构化表达同时降低了人和 GPT 模型的认知负担,**大大提高了人和GPT模型对 prompt 的语义认知。** 对人来说,Prompt 内容一目了然,语义清晰,只需要依样画瓢写 Prompt 就行。如果使用 LangGPT 提供的 Prompt 生成助手,还可以帮你生成高质量的初版 Prompt。
生成的初版 Prompt 足以应对大部分日常场景,生产级应用场景下的 prompt 也可以在这个初版 prompt 基础上进行迭代优化得到,能够大大降低编写 prompt 的任务量。
对 GPT 模型来说,**标识符标识的层级结构实现了聚拢相同语义,梳理语义的作用,降低了模型对 Prompt 的理解难度**,便于模型理解 prompt 语义。
**属性词实现了对 prompt 内容的语义提示和归纳作用,缓解了 Prompt 中不当内容的干扰。** 使用属性词与 prompt 内容相结合,实现了局部的总分结构,便于模型提纲挈领的获得 prompt 整体语义。
### 优势三:定向唤醒大模型深度能力
**使用特定的属性词能够确保定向唤醒模型的深层能力。**
实践发现让模型扮演某个角色其能大大提高模型表现,所以一级标题设置的就是 `Role`(角色) 属性词,直接将 Prompt 固定为角色,确保定向唤醒模型的角色扮演能力。也可使用 `Expert`(专家), `Master`(大师)等提示词替代 `Role`,将 Prompt 固定为某一领域专家。
再比如 `Rules`,规定了模型必须尽力去遵守的规则。比如在这里添加不准胡说八道的规则,缓解大模型幻觉问题。添加输出内容必须积极健康的规则,缓解模型输出不良内容等。用 `Constraints`(约束),中文的 `规则` 等词替代也可。
下面是示例 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>。
```
好的属性词也很关键,你可以定义、添加、修改自己的属性词。
### 优势四:像代码开发一样构建生产级 Prompt
代码是调用机器能力的工具, Prompt 是调用大模型能力的工具。**Prompt 越来越像新时代的编程语言。** 这一观点我在之前的文章中也提过,并获得了许多朋友的认同。
在生产级 AIGC 应用的开发中,**结构化 prompt 使得 prompt 的开发也像代码开发一样有规范。** 结构化 Prompt 的规范可以多种多样,用 json,yaml 实现都可以,GitHub 用户 [ZhangHanDong](https://github.com/ZhangHanDong) 甚至还专门为 Prompt 设计了描述语言 [prompt-description-language](https://github.com/ZhangHanDong/prompt-description-language)。
**结构化 Prompt 的这些规范,这些模块化设计,能够大大便利于 prompt 后续的维护升级,便利于多人协同开发设计。** 这一点程序员群体应该深有感受。
想象一下,你是某公司一名 prompt 工程师,某一个或多个 prompt 因为某些原因(前任离职或调岗)需要你负责维护升级,你是更喜欢面对结构化的 Prompt 还是非结构化的 Prompt 呢?结构化 Prompt 是`自带使用文档` 的,十分清晰明了。
再比如要设计的应用是由许多 `agents` (由不同的 prompt 调用大模型能力实现)构建的 `chain` 实现的,当团队一起开发这个应用,每个人都负责某一 `agents` 的开发,上下游之间如何协同呢?数据接口如何定义呢?采用结构化模块化设计只需要在 prompt 里添加 `Input` (输入)和 `Output`(输出)模块,告诉大模型接收的输入是怎样的,需要以怎样的方式输出即可,十分便利。固定输入输出后,各开发人员完成自己的 agent 开发工作即可。
**像复用代码一样复用 Prompt。** 对于某些常用的模块,比如 `Rules` 是不是可以像复用代码一样实现 Prompt 的复用?是不是可以像面向对象的编程一样复用某些基础角色?LangGPT 提供的 Prompt 生成助手某种意义上就是自动化的实现了基础角色的复用。
同时 Prompt 作为一种文本,也完全可以使用 Git 等工具像管理代码一样对 prompt 进行版本管理。
复制后粘贴到 AI 对话框发送,本次对话全程生效
出处:LangGPT(结构化提示词方法论) · github.com/langgptai/LangGPT · 可信度 B · 标签:中文 / 提示词工程 / 防幻觉 / 角色扮演 / 框架 怎么用(对话型)复制后粘贴到对话框发送,本次对话全程生效。想长期用:支持自定义指令的产品(设置→个性化)可设为默认。