自计算机问世以来,人类与计算机之间的交互方式已经经历过几个重要的阶段:
-
指令式交互(Command-based Interaction)
早期的计算机系统主要采用了指令式交互方式,用户需要输入特定的命令或代码来完成各种任务。这种交互方式虽然功能强大,但对于普通用户来说,门槛较高,操作不够直观
-
图形用户界面(Graphical User Interface, GUI)
随着技术的发展,图形用户界面(GUI)应运而生。通过将图像、图标、窗口等视觉元素引入交互界面,GUI使计算机更加亲民易用。用户可以直观地通过鼠标点击和拖拽等操作完成任务,大大降低了计算机使用门槛
-
自然语言处理
而GPT面世以来,普遍论调是人类与计算机的交互方式进入自然语言处理阶段,即人与计算机的交互方式变为了通过自然语言进行交互和指令传达完成一系列任务
在图形用户界面阶段里,有中间层即开发者代替用户完成了应用的开发和封装,使得用户看到的就是简洁易用的界面。而自然语言处理方式下,普通用户也有了和计算机进行直接交互的能力,随着各项能力提升,通过和GPT-4交互生成一个可以使用的浏览器插件或者网站成为了可能,OpenAi官网罗列了几十个不同用法示例
ChatGPT的使用和与人沟通一样,如何获取高质量的成果也需要技巧,这种技巧称为Prompt(提示词),不一样的是和女朋友、朋友、亲人、下属和老板,每一个角色都需要不同的沟通技巧,你不能和女朋友只说多喝热水,也不能指点老板公司怎么做,你要考虑到角色身份、环境、沟通的内容、沟通对象的情绪等等。和ChatGPT的沟通技巧要简单的多,有且只有一个方法,用简单的方式描述清楚需求,本文不会讨论技巧为何会有效,只讨论如何清楚描述ChatGPT能理解的需求。
如果您有一个数学方程,您想让一个语言模型来解决,您可以通过提问 "什么是方程" 来创建提示词。
对于一个给定的问题,您的完整提示可能是这样的:
1,000,000 * 9,000等于几?
对于这个提示,GPT-3 (text-davinci-002) 有时会回答 9,000,000(错误)。这时候就有提示工程的用武之地。
如果我们不是问 1,000,000 * 9,000等于几?,而是问 1,000,000 * 9,000等于几? 请确保输入正确数量的零,即使数量很多也要如此:,GPT-3 将会回答 9,000,000,000(正确)。这也是Prompt的用途,提升生成优质正确信息的成功率。
我们可以把ChatGPT想象成一个幼儿园的学生(暂先不考虑他已经具备了9岁儿童的心智),你是幼儿园的老师,如何教育小孩,代入这样的角色来和他对话,文中的技巧你几乎都可以用在和小孩子的沟通上……
-
鼓励他你是一个好孩子(定义角色)
-
需要做什么事情(明确指令)
-
希望你怎么做这件事(期望结果)
-
举例子
-
按步骤引导帮助他分解(Chain of Thought)
……
以上方法都是可以产出优质回复的技巧,目前关于提示词技巧没有一本提示词词典,这些技巧在不同场景下产生的效果不同,多个技巧混合使用也是一个很好的方法
万能公式-两个标准的框架
第一个万能公式是来自Elavis Saravia 总结的框架(https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/guides/prompts-intro.md),在他的方法里Prompt 里需包含以下几个元素:
-
Instruction(必填): 指令,即你希望AI执行的具体任务,比如翻译或者写一段什么文字。
-
Context(选填): 背景信息,给AI更多的背景信息引导模型做出更贴合需求的回复。
-
Input Data(选填): 输入数据,告知模型需要处理的数据。
-
Output Indicator(选填): 输出引导,告知模型我们要输出的类型或风格。
只要你按照这个框架写 prompt ,模型返回的结果都不会差。
第二个万能公式是我经常用的,和上个框架有些相似,为了方便把Elavis Saravia框架里的Context背景信息替换成了角色(定义角色是描述背景信息方法其中的一个简便技巧)
角色+指令+期望+内容
写一段影评
很多AI应用比如周报生成器、小红书文案生成器都是调用GPT的API接口,预制了一些Prompt的效果,类似的还有很多,只要输入一定的Prompt就可以实现这样的效果,不需要在所有场景下都要输入万能公式里的四个要素,可以任意组合。根据使用场景不同还有其他很多的技巧。
代入角色
这种方法是最常用也最简单的一种技巧,通过给AI定义一个角色方式补全背景,你可以定义他为老师、翻译家、作者、医生、开发专家等之类的,让他充分了解需求的背景。除了定义AI的角色外你也可以定义自己的角色。
思维链(Chain of Thought Prompting)
思维链是一种帮它分解步骤的提示方法,它鼓励大语言模型解释其推理过程。下图显示了一般提示词(左)和思维链提示词(右)的比较。
零样本思维链(Zero Shot Chain of Thought)
零样本思维链提示是对思维链提示词的后续研究,引入了一种非常简单的零样本提示。他们发现,通过在问题的结尾附加“让我们一步步思考。”这几个词,大语言模型能够生成一个回答问题的思维链。从这个思维链中,他们能够提取更准确的答案。
期望结果
通过加入限定词告诉模型期望结果,是什么或者不是什么可以进一步提升回复的效率,如果没有添加期望结果你可能需要多轮对话才能获取你需要的信息
举例子
以上几个案例都是就描述清楚需求的具体表达技巧,但有些场景下我们想要AI做的事情很难用语言表述清楚,这时我们可以用举例子的方式,在提示词里增加几个示例,帮助ChatGPT更好理解这个需求
使用###或者“”“区分指令和内容
有些场景下,我们需要AI帮我们进行翻译、总结之类优化的工作时,提示词里会提供内容,通过在内容前后加入###或者“”“可以帮AI区分
错误示范❌:
Summarize the text below as a bullet point list of the most important points.{text input here}
正确示范✅:
Summarize the text below as a bullet point list of the most important points.Text: """{text input here}"""
本文所述的技巧基本得到了使用者的一定认可,但不能保证适用所有场景,想要用好ChatGPT提示词还需要养成根据回复进行调优的习惯,多种技巧组合使用。
最近熬夜给大家准备了一份非常全的ChatGPT 高效指令汇总大全【完整版】,需要的可以私信免费领取!