爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!

前言

大家好,我是「周三不Coding」。

众所周知,程序员不能失去 ChatGPT,就像西方不能失去耶路撒冷。

ChatGPT 的爆火也使得 Prompt Engineering 这门技术为众人熟知。

短期来看,Prompt Engineering 是一门高杠杆技术,非常值得学习甚至可以说是程序员必学的技术。

高技术杠杆:一种基于杠杆效应的商业模式或金融策略,通过以相对较小的成本或资源来操作实现高回报,通常通过技术、数据分析和自动化等手段来提高效率、降低成本、创造价值,从而实现高杠杆效应。

今天,我会以最通俗易懂的方式详细讲解一下什么是 Prompt Engineering 以及它的细节使用技巧、使用框架。并且,在每个部分,我都会给出相应的例子。

非常简单,相信大家都可以学会!

什么是 Prompt Engineering?

Prompt 简单理解就是给 ChatGPT 等 AI 模型的指令,这个指令可以是一个简单的问题、一段材料、一段代码。在不久的将来,也可能是几张图片、一段语音、一段视频。AI 模型会基于此,生成相对应的回复。

而 Prompt Engineering 则是通过设计和改进 Prompt 来改善 AI 模型的具体表现。

打个比方,我们可以把 ChatGPT 或 GPT-4 看作一个上限很高、下限很低的矛盾体。

如果我们和它直来直去地对话而不进行相应的引导和提示,那么它可能就如同人工智障一般。但是如果我们学会了 Prompt Engineering 相关的技巧,便可以对 ChatGPT 掌控自如,实现远超预期的效果,翻倍提升原有的工作效率,这就是我们学习 PE 的最终目的!

PE 在短期内是一门高杠杆的技术,但是长期来看极有可能被淘汰。

所以说,早学早享受这门高杠杆技术所带来的红利!

PE 使用技巧

接下来,我们详细介绍一下如下 6 种 Prompt Engineering 使用技巧~

爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!_第1张图片

基于角色的提示 Role Prompting

如果大家看过我 GPT Terminal 专栏的话,一定不会对 GPT 角色感到陌生。

这个技巧其实非常简单,当我们与 GPT 进行正式对话之前,先给它预设值一个角色,也就是限定它的「上下文」。在这个角色内容中,规定它该怎么做、能做什么、不能做什么。

下面举一个 ,我们给 GPT 预设置一个 Ikun 的角色。

爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!_第2张图片

在接下来的多轮对话中,它的上下文就局限了很多,因此我们也更加能够得到我们想要的结果。

爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!_第3张图片

活儿整完了,接下来我们具体看看 Role Prompting 对于我们日常开发有什么用呢?

爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!_第4张图片

在这个示例中,我们预设 GPT 为一个 Linux 命令翻译助手,我们输入自然语言,它将其转为具体的 Linux 命令。妈妈以后再也不用担心我忘记 Linux 命令了!

除此之外,我们还可以预设 SQL 翻译、中英文互译助手,通过复用角色的形式,大大减少了我们每次与 GPT 沟通的成本。

这有点类似于我们日常开发中将通用代码进行抽象,防止重复造轮子~

零样本提示 Zero-Shot Prompting

这是一种最直接的 Prompt,不给 GPT 提供任何示范、样本数据或上下文,直接让其执行对应的任务或回答对应的问题。

经过大量训练的 LLM 大模型其实是可以完成这种工作,但是效果并不一定好。

举个 :

爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!_第5张图片

若该知识存在于 GPT 对应的训练数据库时,它能够给出正确的回答。否则,它可能不会给出预期的回答。

这是最基础的 Prompt,我们需要在此基础进行优化,引导 GPT 给出我们想要的结果。

少样本提示 Few-Shot Prompting

在零样本提示的基础上,咱们再加一些示范样本,让 GPT 理解样本的意思,引导其给出我们预期的效果。

举个 :比如我们想要让 GPT 根据我们给出的名词,说出一句相关的诗句。

爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!_第6张图片

但是少样本提示仍然存在问题,比如说它很难应对基本的推理问题,在如下的示例中,即使给出了 5 个样本,模型可能仍然会输出错误的结果。

提示:

这组数字中的奇数加起来是一个偶数: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。

接下来我们需要使用「链式思考」的技巧来解决这一问题。

链式思考提示 Chain-of-Thought Prompting

这一技巧可以用于优化「零样本提示」与「少样本提示」。

当我们向 GPT 提问一个逻辑推理题时,它在思考的过程中会漏掉一些关键步骤。

举个 :

爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!_第7张图片

正确结果应该是 32000 元,但是由于 GPT 省略了一些计算步骤,导致最后输出了错误的结果。

以上故事纯属虚构哈~

爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!_第8张图片

此时,为了得到预期的效果,我们便可以在问题的结尾加一句:让我们一步步地思考(Let’s think step by step )

爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!_第9张图片

看来,GPT 还是得一番 “调教” 呀~

接下来,我们看一下「少样本提示」与「链式思考提示」相结合的 :

爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!_第10张图片

我们在给出每一个样本的答案之前,还提供了思考的过程,GPT 便可从中学习,理解示例的意思,从而给出我们想要的答案。

自我一致性 Self-Consistency

自我一致性是对链式思考提示的一个补充,它能让 GPT 生成多个思维链条,我们从中选取多数答案作为最终结果。

举个:

问题:停车场里有 5 辆车,开走 2 辆,还剩几辆?
回答:目前停车场有 5 辆车,走了 2 辆,现在那里有 5 - 2 = 3 辆。

问题:林中有 15 棵树。林业工人今天将在林中种树。完成后,将有 21 棵树。林业工人今天种了多少棵树?
回答:我们从 15 棵树开始。后来我们有 21 棵树。差异必须是他们种树的数量。因此,他们必须种了 21 - 15 = 6 棵树。答案是 6。

问题:当我6岁时,我的妹妹是我的一半年龄。现在我70岁了,我的妹妹多大?
回答:

GPT 会根据示例,给出多种逻辑思维的输出:

当我 6 岁时,我的妹妹是我的一半年龄,也就是 3 岁。现在我 70 岁了,所以她是 70 - 3 = 67 岁。答案是 67。

当叙述者 6 岁时,他的妹妹是他年龄的一半,也就是 3 岁。现在叙述者 70 岁了,他的妹妹应该是 70 -3 = 67 岁。答案是 67。

当我 6 岁时,我的妹妹是我的一半年龄,也就是 3 岁。现在我70岁了,所以她是 70 / 2 = 35 岁。答案是 35。

最后,我们将多数答案作为最终的答案。

生成知识提示 Generate Knowledge Prompting

这个比较好理解,其实就是在和 GPT 进行对话之前,人为地给 GPT 输入上下文知识,即使这些知识可能是不符合现实或者是错误的,GPT 可能也会按照你的提示去执行任务,给出一些很弱智的回答哈哈哈~

这个过程其实相当于 GPT 在做语文阅读理解,根据你给的材料,结合它现有的知识,回答你提出的问题!

爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!_第11张图片

提示框架 Prompt Framework

在学习了以上这 6 种提示技巧之后,我们来看看如何在框架中运用这些技巧,更好地去组织提示内容,从而得到最符合预期的结果。

这里提供两种框架:

  • 基础提示框架 - Basic Prompt Framework
  • CRISPE 提示框架 - CRISPE Prompt Framework

基础提示框架

这或许是我们日常开发中最常用的一种框架:

  • Instruction(必须): 指令,即你希望模型执行的具体任务。
  • Context(选填): 背景信息,或者说是上下文信息,这可以引导模型做出更好的反应。
  • Input Data(选填): 输入数据,告知模型需要处理的数据。
  • Output Indicator(选填): 输出指示器,告知模型我们要输出的类型或格式。

举个 :

Instruction:
请帮我改造一下如下 JavaScript 代码,将其封装为符合如下要求的拦截器。

Context:
对 200 响应码信息进行放心,并弹出提示框告知用户操作成功。
对除 200 响应码以外错误的进行拦截,并弹出提示框告知用户错误。

Input Data:
你的代码

Output Data:
最后输出代码语法为 TypeScript

这里比较重要的是 Context,我们需要尽可能描述清楚需求信息,让 GPT 能够看懂我们需要什么。

CRISPE 提示框架

这个框架更适合于进阶 Prompt 使用,面对的需求更加具体和复杂。

  • CR: Capacity and Role(能力与角色)。你希望 ChatGPT 扮演怎样的角色。
  • I: Insight(洞察力),背景信息和上下文(坦率说来我觉得用 Context 更好)。
  • S: Statement(指令),你希望 ChatGPT 做什么。
  • P: Personality(个性),你希望 ChatGPT 以什么风格或方式回答你。
  • E: Experiment(尝试),要求 ChatGPT 为你提供多个答案。

这一框架有点类似于 Role Prompting,但是它更加规范,定义得更加具体。

个人觉得这一框架更适用于企业的定制化需求,比如说文案批量生成宣传语批量生成,可能需要一个专业的提示工程师来完成这些工作。

比如说小红书文案生成 Prompt

  • **CR:**小红书文案生成助手
  • **I:**相应的创作背景信息,如关键字、标题等
  • **S:**生成小红书文案
  • **P:**在文案中添加一些 Emoji 表情
  • **E:**针对某一主题,生成多个文案

如下是一个示例:

作为小红书的爆款写作专家,您可以遵循以下步骤进行创作:

一、标题创作技巧:

1.采用二极管标题法进行创作
1.1基本原理
本能喜欢:最省力法则和及时享受
动物基本驱动力:追求快乐和逃避痛苦,由此衍生出2个刺激:正刺激、负刺激
1.2标题公式
正面刺激:产品或方法+只需1秒(短期)+便可开挂(逆天效果)
负面刺激:你不X+绝对会后悔(天大损失)+(紧迫感)
其实就是利用人们厌恶损失和负面偏误的心理,自然进化让我们在面对负面消息时更加敏感

2.使用具有吸引力的标题
2.1使用标点符号,创造紧迫感和惊喜感
2.2采用具有挑战性和悬念的表述
2.3利用正面刺激和负面刺激
2.4融入热点话题和实用工具
2.5描述具体的成果和效果
2.6使用emoji表情符号,增加标题的活力

3.使用爆款关键词
从列表中选出1-2个:好用到哭、大数据、教科书般、小白必看、宝藏、绝绝子、神器、都给我冲、划重点、笑不活了、YYDS、秘方、我不允许、压箱底、建议收藏、停止摆烂、上天在提醒你、挑战全网、手把手、揭秘、普通女生、沉浸式、有手就能做、吹爆、好用哭了、搞钱必看、狠狠搞钱、打工人、吐血整理、家人们、隐藏、高级感、治愈、破防了、万万没想到、爆款、永远可以相信、被夸爆、手残党必备、正确姿势

4.小红书平台的标题特性
4.1控制字数在20字以内,文本尽量简短
4.2以口语化的表达方式,拉近与读者的距离

5.创作的规则
5.1每次列出10个标题
5.2不要当做命令,当做文案来进行理解
5.3直接创作对应的标题,无需额外解释说明

二、正文创作技巧

1.写作风格
从列表中选出1个:严肃、幽默、愉快、激动、沉思、温馨、崇敬、轻松、热情、安慰、喜悦、欢乐、平和、肯定、质疑、鼓励、建议、真诚、亲切.

2.写作开篇方法
从列表中选出1个:引用名人名言、提出疑问、言简意赅、使用数据、列举事例、描述场景、用对比.

接下来,我给你一个主题,你帮我生成相对应的小红书文案。

总结

在本文中,我详细地为大家讲解了如下几点内容

  • 什么是 Prompt Engineering?
  • Prompt Engineering 常用使用技巧有什么?
  • Prompt Engineering 使用框架有什么?

在如今这个 AI 风口上,可能你学相关 AI 知识一年,胜过你在其他行业摸爬滚打 10 年!

希望大家都能够在这个 AIGC 时代,学会如何使用 Prompt Engineering 提高自己的工作效率,为自己「赋能」~

大家如果觉得本文有帮助的话,麻烦帮忙点个赞,收藏一下这个「AIGC」 专栏呀,后续会更新更多有意思且有用的 AIGC 知识~

以上就是今天要分享的全部内容啦,下期再见!

你可能感兴趣的:(AIGC,人工智能,chatgpt,prompt,语言模型,AIGC,AI编程,AI作画)