前言
大家好,我是「周三不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 使用技巧~
基于角色的提示 Role Prompting
如果大家看过我 GPT Terminal 专栏的话,一定不会对 GPT 角色感到陌生。
这个技巧其实非常简单,当我们与 GPT 进行正式对话之前,先给它预设值一个角色,也就是限定它的「上下文」。在这个角色内容中,规定它该怎么做、能做什么、不能做什么。
下面举一个 🌰,我们给 GPT 预设置一个 Ikun 的角色。
在接下来的多轮对话中,它的上下文就局限了很多,因此我们也更加能够得到我们想要的结果。
活儿整完了,接下来我们具体看看 Role Prompting 对于我们日常开发有什么用呢?
在这个示例中,我们预设 GPT 为一个 Linux 命令翻译助手,我们输入自然语言,它将其转为具体的 Linux 命令。妈妈以后再也不用担心我忘记 Linux 命令了!
除此之外,我们还可以预设 SQL 翻译、中英文互译助手,通过复用角色的形式,大大减少了我们每次与 GPT 沟通的成本。
这有点类似于我们日常开发中将通用代码进行抽象,防止重复造轮子~
零样本提示 Zero-Shot Prompting
这是一种最直接的 Prompt,不给 GPT 提供任何示范、样本数据或上下文,直接让其执行对应的任务或回答对应的问题。
经过大量训练的 LLM 大模型其实是可以完成这种工作,但是效果并不一定好。
举个 🌰:
若该知识存在于 GPT 对应的训练数据库时,它能够给出正确的回答。否则,它可能不会给出预期的回答。
这是最基础的 Prompt,我们需要在此基础进行优化,引导 GPT 给出我们想要的结果。
少样本提示 Few-Shot Prompting
在零样本提示的基础上,咱们再加一些示范样本,让 GPT 理解样本的意思,引导其给出我们预期的效果。
举个 🌰:比如我们想要让 GPT 根据我们给出的名词,说出一句相关的诗句。
但是少样本提示仍然存在问题,比如说它很难应对基本的推理问题,在如下的示例中,即使给出了 5 个样本,模型可能仍然会输出错误的结果。
提示:
css复制代码这组数字中的奇数加起来是一个偶数: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:
输出:
python复制代码答案是True。
接下来我们需要使用「链式思考」的技巧来解决这一问题。
链式思考提示 Chain-of-Thought Prompting
这一技巧可以用于优化「零样本提示」与「少样本提示」。
当我们向 GPT 提问一个逻辑推理题时,它在思考的过程中会漏掉一些关键步骤。
举个 🌰:
正确结果应该是 32000 元,但是由于 GPT 省略了一些计算步骤,导致最后输出了错误的结果。
以上故事纯属虚构哈~
此时,为了得到预期的效果,我们便可以在问题的结尾加一句:让我们一步步地思考(Let’s think step by step ) 。
看来,GPT 还是得一番 “调教” 呀~
接下来,我们看一下「少样本提示」与「链式思考提示」相结合的 🌰:
我们在给出每一个样本的答案之前,还提供了思考的过程,GPT 便可从中学习,理解示例的意思,从而给出我们想要的答案。
自我一致性 Self-Consistency
自我一致性是对链式思考提示的一个补充,它能让 GPT 生成多个思维链条,我们从中选取多数答案作为最终结果。
举个🌰:
ini复制代码问题:停车场里有 5 辆车,开走 2 辆,还剩几辆?
回答:目前停车场有 5 辆车,走了 2 辆,现在那里有 5 - 2 = 3 辆。
问题:林中有 15 棵树。林业工人今天将在林中种树。完成后,将有 21 棵树。林业工人今天种了多少棵树?
回答:我们从 15 棵树开始。后来我们有 21 棵树。差异必须是他们种树的数量。因此,他们必须种了 21 - 15 = 6 棵树。答案是 6。
问题:当我6岁时,我的妹妹是我的一半年龄。现在我70岁了,我的妹妹多大?
回答:
GPT 会根据示例,给出多种逻辑思维的输出:
ini复制代码当我 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 在做语文阅读理解,根据你给的材料,结合它现有的知识,回答你提出的问题!
提示框架 Prompt Framework
在学习了以上这 6 种提示技巧之后,我们来看看如何在框架中运用这些技巧,更好地去组织提示内容,从而得到最符合预期的结果。
这里提供两种框架:
- 基础提示框架 – Basic Prompt Framework
- CRISPE 提示框架 – CRISPE Prompt Framework
基础提示框架
这或许是我们日常开发中最常用的一种框架:
- Instruction(必须): 指令,即你希望模型执行的具体任务。
- Context(选填): 背景信息,或者说是上下文信息,这可以引导模型做出更好的反应。
- Input Data(选填): 输入数据,告知模型需要处理的数据。
- Output Indicator(选填): 输出指示器,告知模型我们要输出的类型或格式。
举个 🌰:
yaml复制代码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: 针对某一主题,生成多个文案
如下是一个示例:
erlang复制代码作为小红书的爆款写作专家,您可以遵循以下步骤进行创作:
一、标题创作技巧:
1.采用二极管标题法进行创作
2.使用具有吸引力的标题
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 知识~
以上就是今天要分享的全部内容啦,下期再见!