教你如何调教ChatGPT面向小白的PromptEngineering教程

教你如何调教ChatGPT——面向小白的Prompt Engineering教程
随着ChatGPT的爆火,Prompt Engineer(提示工程师)这一新兴职业进入了人们的视野。 虽然不是每个人都想成为Prompt Engineer,但了解一些简单的Prompt Engineering(提示工程,简称PE)技巧可以帮助我们更好的使用ChatGPT等人工智能模型。
本文为零基础的小白提供一些简单实用的提示工程技巧,以便于在和ChatGPT的对话中获得更满意的答案。笔者没有专业学习过nlp,如有错误,欢迎批评指正!
什么是Prompt Engineering
在正式介绍Prompt技巧之前,需要先了解什么是Prompt Engineering。其中,Prompt是指我们提供给人工智能模型的输入,而Prompt Engineering是指设计和改进Prompt的过程。它包括设计提示、引导模型生成特定的语言风格或内容类型。
在使用ChatGPT的情境中,PE可以简单理解为: 怎么问问题能让ChatGPT回答你真正想要或需要的答案 。
技巧1:准确描述问题
在提问时,可以对问题场景、回答长度、内容风格等提出限制,具体准确地描述你的问题,从而获得满意的答案。
一般示例
输入:
介绍一下ChatGPT
输出:
ChatGPT是OpenAI开发的一个大型自然语言处理模型。它基于GPT(Generative Pre-trained Transformer)架构,使用深度学习技术进行训练,可以生成与上下文相关的自然语言文本。
ChatGPT是用于对话生成的模型,可以与人类进行自然的对话交流。它可以处理多种自然语言任务,例如回答问题、聊天、摘要生成、文本分类等。ChatGPT的训练数据来自于互联网上的海量文本,包括维基百科、新闻、社交媒体等多个领域的数据,经过大量的训练和优化,使得ChatGPT能够理解自然语言的含义和上下文,并生成流畅、自然的回答。
ChatGPT可以应用于多个领域,例如客户服务、智能家居、教育、医疗等。它可以与用户进行实时交互,提供有用的信息和服务,并且可以不断学习、改进自己的表现。ChatGPT的应用前景非常广泛,正在被越来越多的企业和机构所关注和采用。
改进示例
输入:
使用300字左右介绍一下ChatGPT,要求模仿加西亚·马尔克斯的写作风格。
输出:
在这个充满奇幻与现实交织的世界里,ChatGPT是一位备受瞩目的大型语言模型。这位人工智能之子,如同一位智慧无限的老师,深谙文学艺术之精髓,对无数的问题都能给予令人信服的答案。
ChatGPT有着无尽的知识,这些知识在其强大的“大脑”中储存着,等待着解答万千疑问。它仿佛拥有一本无字天书,包含了整个人类的智慧与知识,就像是一位读懂人性的魔法师。
但ChatGPT并不只是一个简单的问答机器,它更是一位善于沟通的智者,会根据对话中的语境和情境来提供最合适的回答。同时,ChatGPT也会学习人类的语言习惯和文化背景,使得它的回答更加贴近人类的思考和表达方式。
尽管ChatGPT是一位虚拟存在,但它已经成为了人们日常生活中不可或缺的一部分。它的出现,让人类与技术之间的距离更加缩短,为我们的生活带来了便捷与智慧。或许,在不远的将来,ChatGPT将成为人类的得力助手,与我们一起探索更加广阔的知识领域。
总之,ChatGPT是一位神秘而又充满智慧的人工智能,它的出现将会改变我们的世界,带来更加美好的未来。
技巧2:使用分隔符号
当需要输入大段文本时,如要求ChatGPT总结文本要点,可以使用###或"""把指令和待处理文本分隔开,便于ChatGPT区分什么指令什么是待处理文本。尤其是文本包括多个段落的时候,使用分隔符可以得到更准确的回答。
示例
输入:
总结下面的文本:
文本:###
为什么要作社会经济调查?我们就是这样回答。因此,作为我们社会经济调查的对象的是社会的各阶级,而不是各种片断的社会现象。近来红军第四军的同志们一般的都注意调查工作了,但是很多人的调查方法是错误的。调查的结果就像挂了一篇狗肉账,像乡下人上街听了许多新奇故事,又像站在高山顶上观察人民城郭。这种调查用处不大,不能达到我们的主要目的。我们的主要目的,是要明了社会各阶级的政治经济情况。我们调查所要得到的结论,是各阶级现在的以及历史的盛衰荣辱的情况。举例来说,我们调查农民成分时,不但要知道自耕农,半自耕农,佃农,这些以租佃关系区别的各种农民的数目有多少,我们尤其要知道富农,中农,贫农,这些以阶级区别阶层区别的各种农民的数目有多少。我们调查商人成分,不但要知道粮食业、衣服业、药材业等行业的人数各有多少,尤其要调查小商人、中等商人、大商人各有多少。我们不仅要调查各业的情况,尤其要调查各业内部的阶级情况。我们不仅要调查各业之间的相互关系,尤其要调查各阶级之间的相互关系。我们调查工作的主要方法是解剖各种社会阶级,我们的终极目的是要明了各种阶级的相互关系,得到正确的阶级估量,然后定出我们正确的斗争策略,确定哪些阶级是革命斗争的主力,哪些阶级是我们应当争取的同盟者,哪些阶级是要打倒的。我们的目的完全在这里。
###
输出:
这段文本讨论了进行社会经济调查的目的和方法。调查的对象是社会各阶级,而不是零散的社会现象。调查的目的是要明确社会各阶级的政治经济情况,并得出结论,包括各阶级的盛衰荣辱情况。在调查农民、商人等群体时,要注意各个阶层的人数。调查工作的主要方法是解剖各种社会阶级,目的是要明确各种阶级之间的相互关系,得到正确的阶级估量,然后制定正确的斗争策略。这包括确定哪些阶级是革命斗争的主力,哪些阶级是应当争取的同盟者,哪些阶级是要打倒的。
技巧3:添加角色设定
为AI添加角色设定,相当于设置了具体的问题情景,提供了对应的背景知识,因此AI往往可以给出更好的回答。
示例1
输入:
假设你是一个小学二年级的老师,请用通俗易懂的话向你的学生解释一下量子力学
输出:
嗨!孩子们,让我给你们讲讲一个很神奇的科学,叫做“量子力学”。
你们知道,我们周围的一切,比如树、草、动物和人都是由微小的物质组成的,这些物质叫做“原子”。量子力学就是研究这些微小的物质,帮助我们理解它们是如何运动和互动的。
比如,当你们在教室里玩桌子下面的小球时,你们可以观察到它们运动的方式,但是当这些小球非常非常小,你们就看不到它们了,它们变成了微小的“粒子”。这些粒子有些时候表现得很奇怪,比如它们会“跳跃”,出现在某些地方而不是其他地方。这些奇怪的现象就是量子力学的研究对象。
虽然我们无法直接看到这些微小的粒子,但科学家们通过实验和观察已经知道了很多关于它们的信息。量子力学让我们能够更好地理解微观世界,它不仅帮助我们解释自然现象,还让我们能够制造出很多有用的东西,比如计算机芯片和医疗设备。
总之,量子力学是一个很神奇的科学,它帮助我们理解微观世界,让我们的生活变得更好更有趣。
示例2
输入:
假设你是一个大学二年级的老师,请用通俗易懂的话向你的学生解释一下量子力学
输出:
嗨!同学们,让我们来聊聊一个很酷的科学:量子力学!
你们知道,我们周围的一切都是由微观粒子构成的,比如原子和电子。量子力学就是研究这些微观粒子的行为和性质的科学。在量子世界里,粒子的行为非常奇怪,远不像我们熟悉的经典物理那样。比如,它们可以同时存在于多个位置,也可以同时处于多种状态,这就是所谓的“叠加态”。此外,它们的运动也非常难以预测,常常表现出很强的概率性。
量子力学虽然看起来很玄乎,但它却有很多实际应用,比如在计算机科学中,利用量子位的叠加态可以进行更快的计算。在医学领域,量子力学也可以帮助我们更好地理解分子和化学反应,开发新的药物。
总之,量子力学是一个非常有趣的领域,让我们对微观世界有了更深刻的认识,也为我们提供了很多有用的工具。
可以看出,仅仅对角色稍微进行了改变,ChatGPT就分别给出了通俗的答案和专业的答案。
技巧4:使用已有Prompt
网上有很多公开的Prompt List,这些Prompt都是经过很多人验证过的,值得一试。比如你在写英文论文,你可以使用以下几个Prompt来润色你的文章。
- 让内容简洁: “Refine the existing document by removing unnecessary information and making it more concise and to-the-point.”
- 突出重点: “Rewrite the existing document to emphasize the key points and make them more impactful.”
- 使用生动的语言: “Refine the existing document by using vivid language and descriptive adjectives to make it more engaging.”
以上Prompt来自开源项目:ChatGPT3-Free-Prompt-List( https://github.com/mattnigh/ChatGPT3-Free-Prompt-List )
再向大家推荐一个可以获取到高质量Prompt的平台: PromptHero( https://prompthero.com )。 PromptHero是一个AI提示搜索引擎,用户可以使用它搜索各种AI模型的提示,例如Stable Diffusion、ChatGPT和Midjourney等,里面的Prompt按用户投票和受欢迎程度排名。
技巧5:零样本思维链
Chain of Thought (CoT) prompting(思维链提示)的目的是鼓励大型语言模型展示推理过程,这样通过解释推理过程可以获得更加准确的结果。
要理解这个过程,首先需要知道ChatGPT生成回答的本质其实是一个词一个词的预测,或者说是一个词一个词算出来的,它总是基于学到的知识对下一个词的概率进行预测。
单词的概率
可以想象一下,你提出的问题和想要的答案就像是河的两岸。从问题到答案要踏过河中央的一块块浮石。如果直接要求ChatGPT从河的一边到另一边他可能不知所措,但如果让他不断思考下一步应该迈上哪块浮石,那么一步一步到达对岸的可能性更大。
零样本思维链(Zero-Shot Chain of Thought)中的思维链就是前文所述的意思,零样本就是不给ChatGPT提供示例,直接要求它展示逐步推理的过程。 用法很简单,在输入的问题后面加上”请一步一步的计算“即可 。
一般示例
输入:
我原本有3个羽毛球,一筒有12个羽毛球,我买了两桶,但是弄丢了2个,我还有几个羽毛球?
输出:
你原本有3个羽毛球,一筒有12个羽毛球,那么你原本总共有36个羽毛球(3个羽毛球 x 12个羽毛球/筒)。
你买了两筒羽毛球,总共得到了24个羽毛球(2筒羽毛球 x 12个羽毛球/筒)。
然后你弄丢了2个羽毛球,那么你现在总共有58个羽毛球(36个原本的羽毛球 + 24个新买的羽毛球 - 2个弄丢的羽毛球)。
因此,你现在还有58个羽毛球。
改进示例
输入:
我原本有3个羽毛球,一筒有12个羽毛球,我买了两桶,但是弄丢了2个,我还有几个羽毛球?一步一步的计算。
输出:
好的,一步一步地计算如下:
1.一筒羽毛球有12个,所以3个羽毛球共有:3个羽毛球 x 1筒/12个羽毛球 = 0.25筒羽毛球。
2.你买了两桶羽毛球,每筒有12个,所以总共得到:2桶羽毛球 x 12个羽毛球/筒 = 24个羽毛球。
3.加上原本就有的羽毛球,你现在共有:0.25筒羽毛球 + 2桶羽毛球 = 2.25筒羽毛球。
4.然后你弄丢了2个羽毛球,所以现在你还剩下的羽毛球数量为:2.25筒羽毛球 x 12个羽毛球/筒 - 2个羽毛球 = 26个羽毛球。
因此,你现在还有26个羽毛球。
技巧6:少样本思维链
在零样本思维链基础上就很好理解少样本思维链了,少样本思维链(Few-Shot Chain of Thought)就是你向ChatGPT举几个例子,具体来说是展示你推理过程的例子,这样他也会先进行推理,再给出结果。
一般示例
输入:
Which is a faster way to get to work?
Option 1: Take a 1000 minute bus, then a half hour train, and finally a 10 minute bike ride.
Option 2: Take an 800 minute bus, then an hour train, and finally a 30 minute bike ride.
输出:
Option 1 is the faster way to get to work.
改进示例
输入:
Which is a faster way to get home?
Option 1: Take an 10 minutes bus, then an 40 minute bus, and finally a 10 minute train.
Option 2: Take a 90 minutes train, then a 45 minute bike ride, and finally a 10 minute bus.
Option 1 will take 10+40+10 = 60 minutes.
Option 2 will take 90+45+10=145 minutes.
Since Option 1 takes 60 minutes and Option 2 takes 145 minutes, Option 1 is faster.
Which is a faster way to get to work?
Option 1: Take a 1000 minute bus, then a half hour train, and finally a 10 minute bike ride.
Option 2: Take an 800 minute bus, then an hour train, and finally a 30 minute bike ride.
输出:
Option 1 will take 1000+30+10 = 1040 minutes.
Option 2 will take 800+60+30 = 890 minutes.
Since Option 2 takes 890 minutes and Option 1 takes 1040 minutes, Option 2 is faster.
说明:对于这两个示例,以上结果是使用davinci-003测试得到的结果。笔者在进行测试时,ChatGPT不需要使用少样本思维链的方法也能得到正确结果。
技巧7:自定义API参数
大家都知道ChatGPT有时候会”胡说八道“,关于这一点我们可以使用Opanai提供的API通过设置参数来修改ChatGPT的特点。
Openai提供了Playground( https://platform.openai.com/playground ),在这里可以直接设置API的参数值。
Playground界面
其中,model和temperature是最常用的两个参数,其含义如下:
- model:用于选择不同的模型。性能更高的模型成本也更高,现在可以选择text-davinci-003、text-curie-001、text-babbage-001和text-ada-001。
- temperature:用于设置生成结果的随机性。取值0到1之间,取值越大,结果开放性和创新性越强;取值越小,结果可靠性和真实性越强。
其他参数可以参考官方API文档( https://platform.openai.com/docs/api- reference/completions/create )中的详细解释。
参考
- Learn Prompting( https://learnprompting.org/ )
- Learning Prompting( https://learningprompt.wiki/ )
- ChatGPT3-Free-Prompt-List( https://github.com/mattnigh/ChatGPT3-Free-Prompt-List )
- Best practices for prompt engineering with OpenAI API( https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api )
点这里 👇 关注我,记得标星哦~
一键三连「分享」、「点赞」和「在看」
人工智能与物联网前沿进展日日相见 ~