前言
不管是直接和LLM大模型对话,还是训练AI Agent完成特定领域的工作,或者是利用RAG知识库处理专业领域的问答和检索,想要发挥LLM大语言模型的最大价值,提示词工程的技巧都发挥着重要作用。提示词的好坏,会对大模型的输出结果造成很大的影响。
在本篇文章中,风叔将从简单到复杂,从新手级到专家级,详细介绍大模型提示词工程的九级技巧。
提示词工程的具体方法
第 1 级 :基础请求
直接表达我们的需求,即直接告诉大模型我们的问题,不需要过多思考,这也是大多数人和大模型对话的方式。
这种方式的输出结果非常不确定,有时能生成不错的输出,有时又差强人意,这也是为什么很多人觉得大模型说的都是正确的废话。而且大模型还经常出现事实性错误,对一些推理问题更是错误百出。
第 2 级:应用格式
即提示词格式化,用特定格式的提示词向大模型提问,会对模型输出的准确性有比较大的提升。比如APE提示词框架,这个框架建议将用户的请求分解为三个主要部分,行动、目的和期望。
行动 (Action):定义需要完成的特定任务、行动或活动。这是框架的第一步,旨在明确要执行的具体任务或活动。
目的 (Purpose):讨论意图或目标。这部分是为了解释为什么要执行这个特定的任务或活动,它的背后意图是什么,以及它将如何支持更大的目标或目标。
期望 (Expectation):陈述期望的结果。在这最后一步,明确表述通过执行特定任务或活动期望实现的具体结果或目标。
以下是一个APE提示词框架的例子,假设你是一家产品销售公司的营销经理,想通过社交媒体广告来提高产品的在线销售,希望大模型给出一些营销建议。那么按照 APE框架,可以创建以下提示词:
1.行动 (Action):计并发布一系列的社交媒体广告,宣传我们的最新产品。``2.目的 (Purpose):通过吸引社交媒体用户的注意,提高产品的在线销售和品牌知名度。``3.期望 (Expectation):在接下来的一个月中,通过社交媒体广告,在线销售增加30%,并且我们的品牌在社交媒体上的关注度提高20%。
大家也可以尝试用这个框架来询问大模型,看看是否相比第1级有明显提升。
第三级:给出示例
即通过一些示例对大模型进行提示,包括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
很显然,大模型回答错误,似乎少样本提示不足以获得此类问题的可靠回答。
第四级:使用思维链
思维链(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
第五级:使用角色
可以按照【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()
第六级:自洽性民主投票
所谓自洽性,是指为同一问题,生成多个不同的思维链,并对模型进行训练从中挑选出最合适的答案,可以提升语言模型的表现。
这种方法特别适用于需要连续推理的复杂任务,例如思维链提示法。它在多个评估标准上显著提升了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。
第七级:ReAct
ReACT的全称是Reasoning-Action,这种模式是让大模型先进行思考,思考完再进行行动,然后根据行动的结果再进行观察,再进行思考,这样一步一步循环下去。风叔之前的这篇文章对ReAct也有详细的介绍,《[AI大模型实战篇:AI Agent设计模式 - ReAct]》。
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
第八级:自我反思
反思是指通过语言反馈来增强语言模型的能力,这种反馈以自然语言的形式呈现,使得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.
第九级:让大模型自己写提示词
在prompt范例中引导LLM将一个复杂的问题拆分为简单的子问题,逐个回答,然后汇总成为答案。
和COT思维链效果有些类似,但同时要求LLM提出子问题并给出答案,对生成内容的约束更大,有时候效果更好。
总结
随着大模型自身能力的不断发展,提示词工程的重要性正在逐渐被削弱。比如对于GPT-4O模型,面对较为复杂的推理任务时,还需要使用COT或ReAct框架进行提示词引导。但是对于GPT-O1模型,由于本身该模型已经利用COT框架进行了强化,同样处理复杂推理任务时,可能只需要使用one shot或few shot prompt即可。
尽快模型能力越来越强,对最终使用者越来越友好,但是站在产品经理或LLM开发者的角度,还是需要掌握这些提示词技巧,毕竟国内大模型距离GPT-O1还是有很大的代差的。
普通人如何抓住AI大模型的风口?
领取方式在文末
为什么要学习大模型?
目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。
目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过 30%。
随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:
人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!
最后
如果你真的想学习大模型,请不要去网上找那些零零碎碎的教程,真的很难学懂!你可以根据我这个学习路线和系统资料,制定一套学习计划,只要你肯花时间沉下心去学习,它们一定能帮到你!
大模型全套学习资料领取
这里我整理了一份AI大模型入门到进阶全套学习包,包含学习路线+实战案例+视频+书籍PDF+面试题+DeepSeek部署包和技巧,需要的小伙伴文在下方免费领取哦,真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发
部分资料展示
一、 AI大模型学习路线图
整个学习分为7个阶段
二、AI大模型实战案例
涵盖AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,皆可用。
三、视频和书籍PDF合集
从入门到进阶这里都有,跟着老师学习事半功倍。
四、LLM面试题
五、AI产品经理面试题
六、deepseek部署包+技巧大全
😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~