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

爆肝一晚上,我总结了 2023 年程序员必学的 Prompt Engineering 高杠杆技术!通过学习 PE,把握 AIGC风口,翻倍提高工作学习效率,为自己赋能!

前言

大家好,我是「周三不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 高杠杆技术!

基于角色的提示 Role Prompting

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

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

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

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

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

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

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

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

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

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

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

零样本提示 Zero-Shot Prompting

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

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

举个 🌰:

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

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

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

少样本提示 Few-Shot Prompting

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

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

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

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

提示:

css
复制代码
这组数字中的奇数加起来是一个偶数:489151221A:答案是False。 这组数字中的奇数加起来是一个偶数:171019481224A:答案是True。 这组数字中的奇数加起来是一个偶数:161114481324A:答案是True。 这组数字中的奇数加起来是一个偶数:17910121342A:答案是False。 这组数字中的奇数加起来是一个偶数:15325138271A

输出:

python
复制代码
答案是True

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

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

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

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

举个 🌰:

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

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

以上故事纯属虚构哈~

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

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

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

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

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

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

我们在给出每一个样本的答案之前,还提供了思考的过程,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 在做语文阅读理解,根据你给的材料,结合它现有的知识,回答你提出的问题!

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

提示框架 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 知识~

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

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
人工智能

精华笔记:吴恩达 x LangChain 《使用LangChain构建与数据对话的聊天机器人》(上)

2024-4-27 21:31:52

人工智能

国内利用Azure OpenAI在Java中使用ChatGPT和DALL-E模型

2024-4-28 1:31:50

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索