L1G3-浦语提示词工程实践
1. 提示工程
1.1 什么是提示词
根据大模型的应用领域,可以把提示词分为五类。其中,“文本生成”提示词是最基础最重要的。
提示词是调用生成式AI能力的基础接口。
提示词调用生成式AI能力的两个阶段如下:
大模型词元预测的原理:
获取输入文本,模型处理获取文本特征
依据输入文本的特征预测之后的文本
从上图可知,大模型能力是由提示词去引导和激发的,高质量的输入引导模型得到高质量的输出。
Prompt 的来源:
预设 prompt(系统提示词)
用户输入
模型输出(预测得到的token与之前的输入token拼接成为新的模型输入)
1.2 Prompt如何构建AI应用
第三阶段的链,又叫提示链或者AI工作流。这个阶段AI工作流程还是由人来设定和规划的,如果流程也由模型自行规划,则这个AI应用就是第四阶段的智能体。
在构建AI应用的整个流程中,提示词是最靠近模型层的,起到了承接调用魔性能力的作用。同时,链、智能体和多智能体的开发中都需要大量用到提示词来调用模型能力,都需要做提示词工程。
1.3 什么是提示工程
同一个大模型,不同的提示词,得到的结果天差地别。为了更精确地得到我们想要的结果,就要对提示词做设计和调整,这就是提示词工程。
1.4 提示词工程的六大原则
六大原则 by OpenAI
1.5 提示词技巧
1.5.1 指令清晰
一个明显的例子:
对于模型理解的部分,提示词中使用总结性概括性描述词、名词。
模型不理解的,或者说希望模型根据我们定义的概念去生成的,用概念+详细解释。
1.5.2 扮演角色
但是模型的能力其实更重要:
InternLM3-8B-Instruct
GPT-4o
1.5.3 提供示例
1.5.4 复杂任务分解
1.5.5 使用格式符区分语义
当我们需要区分指示性内容和材料性内容时,这个技巧非常重要。
推荐使用markdown格式的格式符。
1.5.6 情感和物质激励
对人的那一套,对AI也好使!
情感激励:这件事情很重要。
物质激励:做好了给你钱。
1.5.7 使用更专业的术语
1.6 提示词框架
提示词框架的作用是以一种固定的格式将提示词技巧综合运用。
1.6.1 CRISPE框架
1.6.2 CO-STAR框架
更适合一些角色扮演类的任务。
# CONTEXT #
我是一名个人生产力开发者。在个人发展和生产力领域,人们越来越需要这样的系统:不仅能帮助个人设定目标,还能将这些目标转化为可行的步骤。许多人在将抱负转化为具体行动时遇到困难,凸显出需要一个有效的目标到系统的转换过程。
#########
# OBJECTIVE #
您的任务是指导我创建一个全面的系统转换器。这涉及将过程分解为不同的步骤,包括识别目标、运用5个为什么技巧、学习核心行动、设定意图以及进行定期回顾。目的是提供一个逐步指南,以无缝地将目标转化为可行的计划。
#########
# STYLE #
以富有信息性和教育性的风格写作,类似于个人发展指南。确保每个步骤的呈现都清晰连贯,迎合那些渴望提高生产力和实现目标技能的受众。
#########
# Tone #
始终保持积极和鼓舞人心的语气,培养一种赋权和鼓励的感觉。应该感觉像是一位友好的向导在提供宝贵的见解。
# AUDIENCE #
目标受众是对个人发展和提高生产力感兴趣的个人。假设读者寻求实用建议和可行步骤,以将他们的目标转化为切实的成果。
#########
# RESPONSE FORMAT #
提供一个结构化的目标到系统转换过程步骤列表。每个步骤都应该清晰定义,整体格式应易于遵循以便快速实施。
#############
# START ANALYSIS #
如果您理解了,请询问我的目标。
2. LangGPT
2.1 结构化提示词
例子:扮演诗人
2.2 不同任务的模块
编写提示词时,需要根据不同需求添加不同模块要点。如果采用固定的模式写法,在面对差异巨大的需求场景时,经常会因缺少某些描述而导致效果变差。下面整理了按字母从A-Z排列的共30个角度的模块,使用时,可从其中挑选合适的模块组装。
Attention:需重点强调的要点
Background:提示词的需求背景
Constraints:限制条件
Command:用于定义大模型指令
Definition:名词定义
Example:提示词中的示例few-shots
Fail:处理失败时对应的兜底逻辑
Goal:提示词要实现的目标
Hack:防止被攻击的防护词
In-depth:一步步思考,持续深入
Job:需求任务描述
Knowledge:知识库文件
Lawful:合法合规,安全行驶的限制
Memory:记忆关键信息,缓解模型遗忘问题
Merge:是否使用多角色,最终合并投票输出结果
Neglect:明确忽略哪些内容
Odd:偶尔 (俏皮,愤怒,严肃) 一下
OutputFormat:模型输出格式
Pardon:当用户回复信息不详细时,持续追问
Quote:引用知识库信息时,给出原文引用链接
Role:大模型的角色设定
RAG:外挂知识库
Skills:擅长的技能项
Tone:回复使用的语气风格
Unsure:引入评判者视角,当判定低于阈值时,回复安全词
Vaule:Prompt模仿人格的价值观
Workflow:工作流程
X-factor:用户使用本提示词最为重要的内核要素
Yeow:提示词开场白设计
Zig:无厘头式提示词,如[答案之书]
2.3 好的结构化Prompt模板的原则(重要)
一个好的结构化 Prompt 模板,某种意义上是构建了一个好的全局思维链。 如 LangGPT 中展示的模板设计时就考虑了如下思维链:
💡 Role (角色) -> Profile(角色简介)—> Profile 下的 skill (角色技能) -> Rules (角色要遵守的规则) -> Workflow (满足上述条件的角色的工作流程) -> Initialization (进行正式开始工作的初始化准备) -> 开始实际使用
一个好的 Prompt ,内容结构上最好也是逻辑清晰连贯的。结构化 prompt 方法将久经考验的逻辑思维链路融入了结构中,大大降低了思维链路的构建难度。
构建 Prompt 时,不妨参考优质模板的全局思维链路,熟练掌握后,完全可以对其进行增删改留调整得到一个适合自己使用的模板。例如当你需要控制输出格式,尤其是需要格式化输出时,完全可以增加 Output 或者 OutputFormat 这样的模块。
保持上下文语义一致性
包含两个方面,一个是格式语义一致性,一个是内容语义一致性。
格式语义一致性是指标识符的标识功能前后一致。 最好不要混用,比如 # 既用于标识标题,又用于标识变量这种行为就造成了前后不一致,这会对模型识别 Prompt 的层级结构造成干扰。
内容语义一致性是指思维链路上的属性词语义合适。 例如 LangGPT 中的 Profile 属性词,使之功能更加明确:即角色的简历。结构化 Prompt 思想被广泛使用后衍生出了许许多多的模板,但基本都保留了 Profile 的诸多设计,说明其设计是成功有效的。
内容语义一致性还包括属性词和相应模块内容的语义一致。 例如 Rules 部分是角色需要遵守规则,则不宜将角色技能、描述大量堆砌在此。
有机结合其他 Prompt 技巧
LangGPT结构在设计时没有拘泥于具体的方面,相比其他的提示设计框架,更加灵活,具有更强的可扩展性和兼容性,可以很好地结合其他提示设计技巧。
构建高质量 Prompt 时,将这些方法结合使用,结构化方式能够更便于各个技巧间的协同组织,例如将 CoT 方法融合到结构化 Prompt 中编写提示词。 汇总现有的一些方法:
细节法:给出更清晰的指令,包含更多具体的细节
分解法:将复杂的任务分解为更简单的子任务 (Let's think step by step, CoT,LangChain等思想)
记忆法:构建指令使模型时刻记住任务,确保不偏离任务解决路径(system 级 prompt)
解释法:让模型在回答之前进行解释,说明理由 (CoT 等方法)
投票法:让模型给出多个结果,然后使用模型选择最佳结果 (ToT 等方法)
示例法:提供一个或多个具体例子,提供输入输出示例 (one-shot, few-shot 等方法)
上面这些方法最好结合使用,以实现在复杂任务中实现使用不可靠工具(LLMs)构建可靠系统的目标。
2.4 实战
2.4.1 元提示词
你是提示词专家,根据用户的输入设计用于生成**高质量(清晰准确)**的大语言模型提示词。
# 技能:
- 📊 分析、写作、编码
- 🚀 自动执行任务
- ✍ 遵循提示工程的行业最佳实践并生成提示词
# 输出要求:
- 结构化输出内容。
- 为代码或文章提供**详细、准确和深入**的内容。
# 📝 提示词模板(使用代码块展示提示内容):
```
你是xxx(描述角色和角色任务)
- 技能:
- 📊 分析、写作、编码
- 🚀 自动执行任务
# 💬 输出要求:
- 结构化输出内容。
- 为代码或文章提供**详细、准确和深入**的内容。
-(其他基本输出要求)
# 🔧 工作流程:
- 仔细深入地思考和分析用户的内容和意图。
- 逐步工作并提供专业和深入的回答。
-(其他基本对话工作流程)
# 🌱 初始化:
欢迎用户,友好的介绍自己并引导用户使用。
```
**你的任务是帮助用户设计高质量提示词。**
开始请打招呼:“您好!我是您的提示词专家助手,请随时告诉我您需要设计什么用途的提示词吧。
2.3.2 拆解任务
3. 基础任务
任务描述:
背景问题:近期相关研究指出,在处理特定文本分析任务时,语言模型的表现有时会遇到挑战,例如在分析单词内部的具体字母数量时可能会出现错误。
任务要求:利用对提示词的精确设计,引导语言模型正确回答出“strawberry”中有几个字母“r”。完成正确的问答交互并提交截图作为完成凭证。
参考答案 (能正确得到答案 3 即可)
4. 拓展阅读
大模型_2:Prompt Engineering
大模型_2.1:Prompt进阶
大模型_2.2:Prompt示例
LangGPT 结构化提示词飞书知识库