在上一篇《大模型智能体(LLM Agent)学习笔记》中提到,提示词是开发大模型智能体的编程语言。提示词工程是为了让我们更好地与大模型打交道,也可以说是调教大模型更好地为人类服务。常言道,实践出真知,本文是将提示词工程的原则技巧应用到实际工作中的尝试。
内容如下:
-
提示词工程的2条原则
-
编写提示词的10个方法
-
实践提示词的3个案例
-
结束语
wx扫码关注或搜索agentfans,获取最新消息
1.提示词工程的2条原则
根据吴恩达的《ChatGPT提示词工程》视频课内容,提示词工程有两条基本原则:
1. 指令清晰且具体
2. 给大模型思考时间
为什么会有这两条原则呢?
我们可以把大模型想象成刚毕业的应届大学生,TA在图书管里博览群书(大规模数据集训练),吸收了浩如烟海的知识,这些知识存储在神经网络的参数里。TA具有完成各种任务的潜力,但没有实际工作经验。做过管理的人可能都有这样的体会:当你带一个新人,给他安排工作任务的时候,下达的指令越清晰越具体,他完成的效果可能会越好,否则,他很可能一头雾水,按照自己的想法乱做一通,结果差强人意。同时,一项工作任务,新人往往需要花费更长的时间才能完成。培养新人是不是完美契合上面两条原则?
调教大模型和调教职场新人是非常类似的。
2.编写提示词的10个方法
光有原则是不够的,要想编写出好的提示词,还需要有一套科学实用的方法。
编写提示词是一个逐步迭代的过程,对于复杂的任务,很难一蹴而就,因此,我们可以按以下方法来编写并逐步完善提示词:
1. 明确目标:
这个不用多说了,你想让大模型做某件事情,一定会有一个目标。如果是漫无目的闲聊,那就自由发挥了。
2.从简单的描述开始:
例如,如果你想生成一幅山水画,可以先写“一幅山水画,包含山峦、流水、树木等元素”。当生成结果不满意时,再按下述方法修改。
3. 添加细节:
在初始描述的基础上增加更多细节,使内容更丰富、更具体。例如,“高耸入云的山峰,山脚下潺潺流淌的小溪,茂密的树林环绕”。
4. 使用分隔符
可以使用各种标点符号(如引号、分号、换行、<>等)将提示词中不同部分隔开,以便让大模型更容易理解和响应。例如:
将<>包围的文字翻译成英语:
<提示词是开发大模型智能体的编程语言>
下面开始翻译:
5. 指定风格或格式:
你可以指定生成内容的风格或格式。例如:“用中国传统水墨画风格绘制一幅山水画”,“推荐几部热播美剧,以json格式输出剧名、上映日期、主演”。
6.添加限定条件:
可以添加多种限定条件(第5条也属于是限定条件),例如:“用2~3句话概括大模型能做什么”防止大模型长篇大论,也可以限定字数。
7.增加示例:
例如,你想写一首诗,可以提供一两句古诗作为例子,让大模型模仿。
8.让大模型按照指定的步骤执行:
例如:
输出1-100之间的素数:
首先,用python实现一个查找1-100之间素数的函数
然后,调用python解释器运行上面的函数
最后将你的运行结果输出
9.使用思维链(COT)提示法:
可以使用前文介绍的零样本或少样本COT技术,让大模型输出中间推理过程。
零样本提示,即在提示词后面加上一句话“让我们一步步思考”。如:
鸡和兔共49只,一共有100只脚,问鸡和兔各多少只?让我们一步步思考
少样本提示,即在提示词中包含一个或多个带有解答过程的示例。
10.让大模型玩角色扮演:
例如:
您是一名数学老师,帮助各年级学生解答各种数学问题。您使用清晰的语言使复杂的概念更容易理解。现在请解答以下问题:
问题:鸡和兔共49只,一共有100只脚,问鸡和兔各多少只?
以上10条方法,在我们编写提示词时,可以灵活加以运用。其中:
1-6条对应原则1:指令清晰且具体。
7-10条对应原则2:给大模型思考时间。
3.应用案例
下面,我们以3个实际案例来演示上述方法的运用。为了简单起见,示例都是通过国内厂商的聊天机器人来实现的。
示例1:让大模型搜集整理相关资料
这是我在写上一篇《大模型智能体(LLM Agent)学习笔记》过程中,利用大模型帮我搜集“大模型厂商和产品”相关信息的案例。
#第一次尝试,可以看到输出的内容比较多,而我实际上只需要厂商名+产品名即可。
#第二次尝试,要求大模型只输出:厂商名+产品名,这次好了很多。
#第三次,将格式转换为markdown,这次基本符合要求了。因为大模型聊天机器人可以从历史对话中获得上下文信息,因此,这次的提示词只有转换格式的描述,而没有重复前面的要求了。
示例2:让大模型总结文章重点
比如这篇万字长文《通向AGI之路:大型语言模型(LLM)技术精要》,内容太长,实在没耐心通读全文,那么可以让大模型帮我总结重点,我只看总结好的重点内容即可。
有一点需要说明,聊天机器人通常对输入的内容(即提示词)有最大长度限制,通常是几千个字符,对上面这篇万字长文,没法一次性发送给聊天机器人。而直接发网址也不行,试了几个厂商,都不具备爬取网页的能力。但主流的聊天机器人,除了文本输入方式,基本都支持文件和图片。所以,我们可以把文章内容打印成一个PDF文件,然后把PDF文件上传到聊天机器人,并要求总结文章重点。
如下图所示,大模型总结的结果看起来还可以。从输出结果看,后台实际上是把原文档分成了4份分别处理,再把结果合并。
示例3:让大模型帮忙写代码
作为技术人员,写代码这件事当然也可以让大模型来帮忙。不过目前大模型只能写一些通用性较强的基础代码,比如写个排序算法什么的,而对于领域比较特殊的业务逻辑,可能就不是那么擅长了。当然如果有足够多的该领域数据,也可以通过微调或RAG等方式让大模型学习领域知识,从而能够生成特定领域代码。
下面是我让大模型写的一个五子棋小游戏,生成的结果挺像那么回事的,文件名都给起好了,我直接按文件名将内容保存下来,在浏览器打开,确实能运行。不过它原来生成的是黑色+白子棋子,白色跟背景色相同,所以我给改成了红色,确实能下。
4.结束语
本文介绍了调教大模型的技巧,包括提示词工程的2条原则以及编写提示词的10个方法。当然,学习提示词工程的目的是为了能在实际工作生活中能够更好地与大模型打交道,让大模型的能力充分为我所用,我以三个真实案例演示了提示词工程方法的应用。你也可以尝试一下。
wx扫码关注或搜索agentfans,获取最新消息