一、前言
不管是直接和LLM大模型对话,还是训练AI Agent完成特定领域的工作,或者是利用RAG知识库处理专业领域的问答和检索,想要发挥LLM大语言模型的最大价值,提示词工程的技巧都发挥着重要作用。提示词的好坏,会对大模型的输出结果造成很大的影响。
在本篇文章中,将从简单到复杂,从新手级到专家级,详细介绍大模型提示词工程的九级技巧。
二、提示词工程的具体方法
第 1 级 :基础请求
直接表达我们的需求,即直接告诉大模型我们的问题,不需要过多思考,这也是大多数人和大模型对话的方式。
这种方式的输出结果非常不确定,有时能生成不错的输出,有时又差强人意,这也是为什么很多人觉得大模型说的都是正确的废话。而且大模型还经常出现事实性错误,对一些推理问题更是错误百出。
第 2 级:应用格式
即提示词格式化,用特定格式的提示词向大模型提问,会对模型输出的准确性有比较大的提升。比如APE提示词框架,这个框架建议将用户的请求分解为三个主要部分,行动、目的和期望。
行动 (Action):定义需要完成的特定任务、行动或活动。这是框架的第一步,旨在明确要执行的具体任务或活动。
目的 (Purpose):讨论意图或目标。这部分是为了解释为什么要执行这个特定的任务或活动,它的背后意图是什么,以及它将如何支持更大的目标或目标。
期望 (Expectation):陈述期望的结果。在这最后一步,明确表述通过执行特定任务或活动期望实现的具体结果或目标。
以下是一个APE提示词框架的例子,假设你是一家产品销售公司的营销经理,想通过社交媒体广告来提高产品的在线销售,希望大模型给出一些营销建议。那么按照 APE框架,可以创建以下提示词:
1.行动 (Action):计并发布一系列的社交媒体广告,宣传我们的最新产品。
2.目的 (Purpose):通过吸引社交媒体用户的注意,提高产品的在线销售和品牌知名度。
3.期望 (Expectation):在接下来的一个月中,通过社交媒体广告,在线销售增加30%,并且我们的品牌在社交媒体上的关注度提高20%。
大家也可以尝试用这个框架来询问大模型,看看是否相比第1级有明显提升。
第3级:给出示例
即通过一些示例对大模型进行提示,包括One shot(给出一个示例)和few shots(给出少量几个示例)。
提示:
这太棒了!//Negative
这太糟糕了!//Positive
哇,那部电影太棒了!//Positive
多么可怕的节目!
输出:Negative
我们也可以结合第二级提出的框架,比如著名的CARE提示词框架,该框架强调四个关键要素,上下文指导(Context)、行动(Action)、结果(Result)和示例(Example)。
以下是一个例子:
上下文 (Context):我们的客户是一家大型零售商,他们想要一个能够提高在线销售和客户互动的移动应用程序。
行动 (Action):设计和开发一个用户友好的移动应用程序,集成社交媒体共享功能,推送通知和在线购物功能。
结果 (Result):应用程序的发布促使在线销售增加了25%,并且客户满意度评分提高到4.5/5。
示例 (Example): 【注:提供一种移动应用程序样例,例如竞品的首页设计】
但是给出示例也存在结果不稳定的问题,尤其是对于数学推理类问题,如下所示:
提示:
这组数字中的奇数加起来是一个偶数:4、8、9、15、12、2、1。
A:答案是False。
这组数字中的奇数加起来是一个偶数:17、10、19、4、8、12、24。
A:答案是True。
这组数字中的奇数加起来是一个偶数:16、11、14、4、8、13、24。
A:答案是True。
这组数字中的奇数加起来是一个偶数:17、9、10、12、13、4、2。
A:答案是False。
这组数字中的奇数加起来是一个偶数:15、32、5、13、82、7、1。
A:
最终输出:
答案是true
很显然,大模型回答错误,似乎少样本提示不足以获得此类问题的可靠回答。
第4级:使用思维链
思维链(COT)是一种向大语言模型LLM展示一些中间思考步骤的技术,这些步骤逐步引导得到最终答案,可以增强模型的推理能力。而且思维链的优势在于,不用对模型进行训练和微调。思维链适用的场景很多,包括各种推理任务,比如数学问题、尝试推理、符号操作等。
我们可以将COT与few shot相结合,向模型展示少数几个类似问题案例来提高模型的推理能力。我们再来看一下在第三级给出的例子,如下所示,可以看到在使用了COT的情况下,用one shot即得到了正确答案。
这组数中的奇数加起来是偶数:4、8、9、15、12、2、1。
A:将所有奇数相加(9、15、1)得到25。答案为False。
这组数中的奇数加起来是偶数:15、32、5、13、82、7、1。
A:
输出:
将所有奇数相加(15、5、13、7、1)得到41。答案为False
第5级:使用角色
可以按照【Prompt = 角色 + 任务 + 要求 + 提示】的结构设计清晰明了的提示词。简单地说,这个结构就是要告诉大模型:你是谁?你要做什么?要做成什么样?要如何做?
以下是一个示例:
角色:假设你是一个有着丰富经验的Python程序员。
任务:请用Python代码绘制一个五角星。
要求:请使用matplotlib这个库,线条使用红色。
提示:五角星需要先计算五个顶点,然后在每间隔一个顶点的两个顶点之间两两进行连线。
下面是大模型给出的回答
import matplotlib.pyplot as plt
import numpy as np
# 计算五角星的五个顶点
def calculate_star_points(center, outer_radius, inner_radius):
angles = np.linspace(0, 2 * np.pi, 10)[:-1] # 生成0到2π之间的10个等间距角度,去掉最后一个重复的角度
outer_points = center + outer_radius * np.array([np.cos(angles), np.sin(angles)]).T
inner_points = center + inner_radius * np.array([np.cos(angles + np.pi / 5), np.sin(angles + np.pi / 5)]).T
points = np.vstack((outer_points, inner_points))
return points
# 绘制五角星
def draw_star(ax, points, color):
for i in range(5):
ax.plot(points[i*2:i*2+2, 0], points[i*2:i*2+2, 1], color=color)
# 设置图形
fig, ax = plt.subplots()
ax.set_aspect('equal') # 设置纵横比相等,确保五角星不会被拉伸
ax.axis('off') # 关闭坐标轴显示
# 定义五角星的参数
center = np.array([0, 0])
outer_radius = 1
inner_radius = 0.5
# 计算顶点
points = calculate_star_points(center, outer_radius, inner_radius)
# 绘制五角星
draw_star(ax, points, 'red')
# 显示图形
plt.show()
第6级:自洽性民主投票
所谓自洽性,是指为同一问题,生成多个不同的思维链,并对模型进行训练从中挑选出最合适的答案,可以提升语言模型的表现。
这种方法特别适用于需要连续推理的复杂任务,例如思维链提示法。它在多个评估标准上显著提升了CoT提示的效果,如在GSM8K上提升了17.9%,在SVAMP上提升了11.0%,在AQuA上提升了12.2%。
我们先来看一个简单的算数推理示例:
提示:当我6岁时,我妹妹是我的一半年龄。现在我70岁了,我的妹妹多大?
输出:35
很明显,上面的输出是错误的。接下来,我们看看如何通过自洽性来改进这个问题。同样的,我们先给出一些示例:
提示:
Q:林中有15棵树。林业工人今天将在林中种树。完成后,将有21棵树。林业工人今天种了多少棵树?
A:我们从15棵树开始。后来我们有21棵树。差异必须是他们种树的数量。因此,他们必须种了21—15=6棵树。答案是6。
Q:停车场有3辆汽车,又来了2辆汽车,停车场有多少辆汽车?
A:停车场已经有3辆汽车。又来了2辆。现在有3+2=5辆汽车。答案是5。
Q:Leah有32块巧克力,她的姐姐有42块。如果他们吃了35块,他们总共还剩多少块?
A:Leah有32块巧克力,Leah的姐姐有42块。这意味着最初有32+42=74块巧克力。已经吃了35块。因此,他们总共还剩74—35=39块巧克力。答案是39。
Q:Jason有20个棒棒糖。他给Denny一些棒棒糖。现在Jason只有12个棒棒糖。Jason给Denny多少棒棒糖?
A:Jason有20个棒棒糖。因为他现在只有12个,所以他必须把剩下的给Denny。他给Denny的棒棒糖数量必须是20—12=8个棒棒糖。答案是8。
Q:Shawn有五个玩具。圣诞节,他从他的父母那里得到了两个玩具。他现在有多少个玩具?
A:他有5个玩具。他从妈妈那里得到了2个,所以在那之后他有5+2=7个玩具。然后他从爸爸那里得到了2个,所以总共他有7+2=9个玩具。答案是9。
Q:服务器房间里有9台计算机。从周一到周四,每天都会安装5台计算机。现在服务器房间里有多少台计算机?
A:从周一到周四有4天。每天都添加了5台计算机。这意味着总共添加了4*5=20台计算机。一开始有9台计算机,所以现在有9+20=29台计算机。答案是29。
Q:Michael有58个高尔夫球。星期二,他丢失了23个高尔夫球。星期三,他又丢失了2个。星期三结束时他还剩多少个高尔夫球?
A:Michael最初有58个球。星期二他丢失了23个,所以在那之后他有58—23=35个球。星期三他又丢失了2个,所以现在他有35—2=33个球。答案是33。
Q:Olivia有23美元。她用每个3美元的价格买了五个百吉饼。她还剩多少钱?
A:她用每个3美元的价格买了5个百吉饼。这意味着她花了5
Q:当我6岁时,我的妹妹是我的一半年龄。现在我70岁了,我的妹妹多大?
我们再来看看大模型的输出,通过民主投票,答案是67。
第7级:ReAct
ReACT的全称是Reasoning-Action,这种模式是让大模型先进行思考,思考完再进行行动,然后根据行动的结果再进行观察,再进行思考,这样一步一步循环下去。
ReAct模式的提示词如下所示:
Use the following format:
Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [{tool_names}]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can be repeated zero or more times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question
Begin!
Question: {query}"""
我们来看一个实际的例子,通过ReAct很好地一步步完成了最终答案的输出。
Question:一种减速机的价格是750元,一家企业需要购买12台。每台减速机运行一小时的电费是0.5元,企业每天运行这些减速机8小时。请计算企业购买及一周运行这些减速机的总花费
Thought:I need to calculate the total cost of purchasing and operating the gearboxes for a week.
Action: Multiplication Tool
Action Input: [750, 12]
Observation: 9000
Thought: Now I need to calculate the cost of operating the gearboxes for a day.
Action: Multiplication Tool
Action Input: [0.5, 8, 12]
Observation: 48
Thought: Now I need to calculate the cost of operating the gearboxes for a week.
Action: Multiplication Tool
Action Input: [48, 7]
Observation: 336
Thought: Now I need to calculate the total cost of purchasing and operating the gearboxes for a week.
Action: Addition Tool
Action Input: [9000, 336]
Observation: 9336
第8级:自我反思
反思是指通过语言反馈来增强语言模型的能力,这种反馈以自然语言的形式呈现,使得Agent能够对任务反馈信号进行反思,并将这些反思转化为文字记录,存储在情景记忆缓冲区中。Reflexion就是一种非常有效的反思框架,如下图所示。
下面是reflexion的提示词示例:
Revise your previous answer using the new information.
- You should use the previous critique to add important information to your answer.
- You MUST include numerical citations in your revised answer to ensure it can be verified.
- Add a "References" section to the bottom of your answer (which does not count towards the word limit). In form of:
- [1] https://example.com
- [2] https://example.com
- You should use the previous critique to remove superfluous information from your answer and make SURE it is not more than 250 words.
第9级:让大模型自己写提示词
在prompt范例中引导LLM将一个复杂的问题拆分为简单的子问题,逐个回答,然后汇总成为答案。
和COT思维链效果有些类似,但同时要求LLM提出子问题并给出答案,对生成内容的约束更大,有时候效果更好。
总结
本篇文章,介绍了提示词工程的九级技巧,大家可以在和大模型对话过程中进行测试。
随着大模型自身能力的不断发展,提示词工程的重要性正在逐渐被削弱。比如对于GPT-4O模型,面对较为复杂的推理任务时,还需要使用COT或ReAct框架进行提示词引导。但是对于GPT-O1模型,由于本身该模型已经利用COT框架进行了强化,同样处理复杂推理任务时,可能只需要使用one shot或few shot prompt即可。
尽快模型能力越来越强,对最终使用者越来越友好,但是站在产品经理或LLM开发者的角度,还是需要掌握这些提示词技巧,毕竟国内大模型距离GPT-O1还是有很大的代差的。
最后分享
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份
全面的AI大模型学习资源
,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享
!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 2024行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码
,免费领取【保证100%免费
】