概述

前段时间在 DeepLearning 学了一门大火的 Prompt 的课程,吴恩达本人授课,讲的通俗易懂,感觉受益匪浅,因此在这里总结分享一下我的学习笔记。

为什么要学习 Prompt ?

因为在未来的 AIGC 年代,学习有效的 Promot 提示词有效的利用 AI 来完成一些重复性的工作。这也我认为未来每个人都必备的技能之一。

以下是我个人学完这门课程的总结:

  1. 更好的完成任务:试想一下,如果你给 AI 一个模糊的问题,那么你得到的只会是一个模糊的回答
  2. 多元化的结果:可以让 AI 更多维的结果,但不限于:代码,JSON,XML,HTML 等格式文本,甚至是图片,视频等
  3. 避开 AI 的局限:喜欢编造事实,这是目前 AI 已知的缺陷,但有效的 Prompt 可以帮助你有效的避开这个已知,但目前还无法解决的缺陷
  4. 不再迷信完美的 Prompt:了解真相后,你将不再迷信类似于 awesome-chatgpt-prompts-zh 各种所谓的魔法,速成的调教指南,因为不存在完美的 Prompt
  5. 了解 AI 的能力:目前大模型的能力局限在:摘要,推理,转换,扩展等能力上,目前的 AI 并非无所不能,不要过分神话,也不要过分贬低它

总而言之,学习 Prompt 提示词可以帮助您更好地与 LLM 模型进行交互,指导其生成符合您需求的文本,并提高效率和准确性。也推荐大家有时间可以看完完整的视频课程。我就不过多展开了。以下是我对课程的学习笔记。

第一章: Introduction 引言

第一章节,引言主要介绍和 ChatGPT 或类似的 LLM 交流时,要遵循的几个基本原则,如下:

  1. 明确的指令:清晰的指令会得到更准确的回复。例如,而不是问 "我应该吃什么?",你可以问 "我应该在素食饮食中添加哪些蛋白质来源 ?"
  2. 合理的期待:模型的知识储备和它的训练参数和训练方向有关,例如对于 ChatGPT 这样一个作为通用领域的大模型,对于一些特别复杂、需要深度专业知识,它是无法提供准确的答案的,特定领域的问题必须由特定领域的专用模型来解决
  3. 验证结果:如上,对于特别复杂和专业的问题,AI 有时候会虚构信息,你必须对 AI 的回复进行验证,如果发现了错误,可以尝试用不同的方式提问。
  4. 等待 AI 思考的时间:AI 需要理解你的问题,并生成一个有用的响应,这可能需要一些时间,特别是对于复杂的问题。要有一点耐心

以上就是向第一章课程中包含的向 AI 提问的基本原则,希望对你有所帮助。

第二章:Guidelines 指南

第二章主要介绍以下内容:

  1. 如何使用 ChatGPT 进行结构化输出,例如 JSON,HTML,XML 等等
  2. 如果使用 Prompt 有效的避免 AI 虚构事实的方法(上面提到过)

生成结构化数据

在数据处理与分析API 开发和测试等常见的场景中你可能需要生成或解析 JSON 数据。你可以使用 ChatGPT 帮助你完成这些任务。

例如,如果我们想让ChatGPT生成一个包含某人信息的JSON对象,可以按照以下方式询问:

命令: "请生成一个包含姓名(John Doe)、年龄(30)和职业(Software Engineer)的 JSON 对象。"

ChatGPT 可能会生成以下的输出:

{
"name": "John Doe",
"age": 30,
"profession": "Software Engineer"
}

这是一个基本的示例,你可以根据需要自定义属性和值。甚至让它生成一个虚拟的 JSON 数组对象也是很简单的

如何避免 AI 编造事实 ?

ChatGPT 是一个基于大量文本训练的语言模型,因此,它可能会生成包含错误、过时或猜测的信息的答案。

但是,通过优化你的问题或提示(prompt),你可以降低这种情况的可能性。方法如下:

  1. 要求引用来源:在询问事实性信息时,要求模型引用其信息来源。(目前 GPT-4 已经实现联网功能)
  2. 寻求解释而不是事实:如果你想了解一个具体的概念或理论,考虑寻求对它的解释,而不是一个具体的事实。例如,问 "什么是深度学习?" 可能比问 "深度学习最重要的研究是什么?" 得到更准确的回答,因为后者可能引导模型进行猜测或编造。
  3. 使用多个问题:如果你对一个问题的答案不确定,可以尝试用不同的方式重复提问,或者向模型要求解释它的答案。这可以帮助你从不同的角度理解问题,并可能揭示模型的不准确之处。

示例如下:

假设你想了解电池的工作原理,你可以按照以下方式提问:

  1. 直接提问: "电池是如何工作的?"

对此,ChatGPT 可能会给出一个基本的答案,解释电池的化学反应和能量转换。

但是,你可能希望得到更详细的答案,或者验证模型的回答。你可以用以下方式改进你的提问:

寻求详细的解释: "能否详细解释一下电池的工作原理,特别是化学反应是如何产生电流的?"

这个问题要求模型提供更详细的答案,并专注于电池的特定方面。再者,你可以要求模型引用其信息来源,尽管它不能实时查阅互联网,但可以提供它的训练数据中的一些信息:

要求引用来源: "能否详细解释一下电池的工作原理,特别是化学反应是如何产生电流的? 并请提供你的信息来源。"

这样的问题可以让模型生成一个更完整和详细的答案,并尽可能地提供一些源于其训练数据的信息来源。

最后,如果你对模型的回答有疑虑,你可以通过不同的方式重复提问,或要求模型解释它的答案:

使用多个问题和要求解释: "你能解释一下电池内部的化学反应是如何产生电流的吗?它是如何转化为我们所用的电力的?你的答案是基于什么样的科学原理的?"

这样的提问方式不仅可以从不同的角度理解问题,还可以挑战模型的回答,检查其是否基于合理的科学原理。

第三章:Lterative 迭代

本章主要讲解如何通过足够的迭代(上下文和语境)让 AI 更好的解决问题,这也是吴恩达所说的 不要迷信完美的 Prompt,简单的 Prompt 只能解决简单的问题,只有足够的迭代(上下文和语境)才能真正的解决问题你当前遇到的问题,主要原因如下:

  1. 理解问题的全貌:提供更多的上下文可以帮助 ChatGPT 更好地理解你的问题。例如,如果你只是简单地提问“它多大?”,ChatGPT 无法知道你在问什么。但如果你先说“我刚买了一部新手机,”然后再问“它多大?”,ChatGPT 就能理解你在问手机的大小。
  2. 消除歧义:上下文可以帮助消除语言的歧义。许多单词和短语在不同的上下文中可能有不同的含义。例如,“行”可以指的是做某事,也可以指的是一行文本。如果你提供足够的上下文,ChatGPT 就能更好地理解你的意思。
  3. 理解问题的背景:在一些情况下,理解问题的背景信息对于生成有用的答案是很重要的。例如,如果你在问有关一部电影的问题,提供电影的名字和你已经知道的相关信息可以帮助 ChatGPT 生成更相关的答案。
  4. 跟踪对话的连贯性:在一个持续的对话中,提供上下文可以帮助 ChatGPT 维持对话的连贯性。例如,如果你在之前的对话中提到过某个主题,将这个信息包括在新的提示中可以帮助 ChatGPT 理解和回应你的问题。

总的来说,提供更多的上下文信息可以帮助 ChatGPT 更准确、更有用地回答你的问题。这也是开始说的 不要迷信完美的 Prompt 的原因所在了。

第四章:Summarizing 摘要

本章主要介绍 ChatGPT 的总结冗余信息的能力,信息大爆炸和快节奏的时代,要读完一本学术巨著,或者是冗长的商业报告,法律文书等长篇文章几乎是不可能了,有效的利用 ChatGPT 的摘要能力,它能够从一篇长文中提取关键信息并生成一个总结,帮助我们压缩,但又不错过关键信息,提高阅读效率。生成总结提示词的方法很简单,你可以上传一份文档(使用 AskYourPDF 插件),或者给他一串长文本,然后提问:请为这篇文章生成一个总结。 即可。这章比较简单,就会继续展开了。

第五章:Inferring 推理

本章主要介绍 AI 的推理能力,推理能力是 AI 能力非常有趣的能力,当你给它一个问题或一个话题,它就会根据已经学到的知识和技能,尝试生成一个合理且有帮助的回答。它是基于零样本学习(Zero-Shot Learning)来实现的。通俗的解释就是:

模型利用已有的知识或信息来处理新的、未知的情况。在进行推理时,模型可能需要根据已知的事实或规则来预测未知的结果。

可以通过一个例子来理解:

比如说,如果你告诉 ChatGPT,“今天下雨,我没有带伞,我会湿吗?”

ChatGPT 会结合它“学习”到的关于雨、伞和湿度的知识,给出 “是的,如果你在雨中行走而没有伞,你可能会变湿。”这样的回答。

这就涉及到了一种简单的推理:雨会让人湿,伞可以避免人淋湿,没有伞的人在雨中会湿。

第六章:Transforming 转换

Transforming 转换可谓是 AI 的非常擅长的能力,算是看家本领。关于 Transforming 的学术描述是这样的:

Transforming 能力主要是指它可以把一种形式的信息转化为另一种形式,或者把信息从一种语境、语气、风格转换到另一种。

这么理解可能比较抽象,以下是一些经常会应用到的应用场景:

  1. 从非结构化信息到结构化信息:可以从非结构化的文本数据中提取关键信息,并将其转换为结构化的格式,如 JSON,XML 等。这在处理大量非结构化数据时很有用,比如从社交媒体帖子、新闻文章或产品评论中提取关键信息。
  2. 从一种语言到另一种语言:虽然 AI 并不是一个专业的翻译工具,但是 AI 目前表现出来的翻译能力,真的是目前是吊打市面上的所有翻译软件,包括 Google 翻译等等,这里安利一款我目前在用的基于 AI 转换工具:OpenAI Translator,这是款开源软件,你可以在 Github 上找到它
  3. 从一种语气或风格到另一种语气或风格:可以把一个文本从一种语气或风格转换为另一种。例如,它可以把一段正式的商业报告转换为更为口语化、易于理解的语言,或者把一段平淡的描述转化为更具有创造性的表达。例如命令:"使用苏格拉底的语气对计算机基础理论某一个知识点进行讲解"等
  4. 把复杂的概念或信息转化为易于理解的形式:可以把复杂的概念、数据或信息转化为更易于理解的形式。例如,它可以把一段关于气候变化的科学报告转化为一段适合儿童阅读的故事,或者把一组复杂的数据转化为简单的图表或信息图。
  5. 从文字到音频或视频脚本:可以将一段文字转化为适合录制为音频或视频的脚本。例如,它可以把一篇博客文章转化为一段播客剧本,或者把一段对话转化为电影脚本。

以上只是一些可能的应用场景,AI 的转换能力可以在许多其他场景中发挥作用,取决于具体的需求和环境。

第七章:Expanding 扩展

扩展 Expanding 能力主要指它可以从给定的初始信息或提示中生成更多的内容或信息。简单来说摘要(Summarizing)的使用场景相反,就是根据短文生成长文。比如文章、故事、对话等。以下是一些可能的应用场景:

  1. 写作辅助:如果你在写作时卡住了,你可以给它一个简短的提示,然后让它生成更多的内容。这可以帮助你开拓思路,找到新的创意或灵感。
  2. 报告生成:如果你需要编写一篇关于特定主题的文章或报告,你可以给它一个简短的概述或大纲,然后让它生成完整的文章或报告
  3. 写小说:如果你想创作一个新的故事,你可以给它一个简短的剧情概要,比如主角的描述或故事的开头,然后让它生成完整的故事。
  4. 教育和学习:在教育和学习的场景中,它可以用来生成教学材料,比如讲解、案例研究、问题和答案等。这可以帮助学生更好地理解和掌握知识。

示例:

假设我们给出 AI 一个如下的提示词:

请根据以下提示词生成一个故事:在一个风和日丽的早晨,杰克醒来,发现他的宠物鹦鹉消失了。

它会生成如下的故事:

在一个风和日丽的早晨,杰克醒来,发现他的宠物鹦鹉消失了。他的眼神立即被笼子空荡荡的一角所吸引,笼门半开,鹦鹉的食物未动,一切都显得格外安静,与往日的欢声笑语形成了鲜明对比。

他心急如焚,急忙在家里找寻,然而,家里并没有找到鹦鹉的踪影。他的心沉了下来,他想,也许鹦鹉只是飞出去玩了一会,很快就会回来的。然而,整个上午过去了,鹦鹉还是没有回来。

午后的阳光照在花园里,杰克决定到花园和附近的森林里寻找鹦鹉。他呼唤着鹦鹉的名字,但只有微风吹过树叶的声音回应他。杰克心里越来越不安,他知道鹦鹉不可能走得太远。

就在此时,他看到了一片鹦鹉的羽毛,旁边还有一些熟悉的爪印。他心跳加速,紧跟着这些线索深入森林。在森林的深处,他看到了他的鹦鹉,它正站在一个高大的橡树上,旁边是一窝刚刚孵化的小鸟。

原来,鹦鹉是跟着母鸟来到这里,帮助它照顾刚刚孵化的小鸟。看到这一幕,杰克笑了,他知道他的鹦鹉是一只善良的生物,它的消失是为了做一件好事。

那一天,杰克和他的鹦鹉一起在森林里度过了美好的一天。他们帮助小鸟找食物,一起在树林里玩耍。晚上,鹦鹉回到了笼子,杰克知道,无论鹦鹉飞到哪里,它都会回到他身边,因为这就是它的家。

在这个示例中,ChatGPT 从一个简单的提示扩展出一个完整的故事,包括角色的动作、感情以及故事的发展和结局。

总结 Conslusion

吴恩达的这门 Prompt Engineering 课程,主要讲解了使用 Prompt 的基本原则,还有 LLM 大模型在各个场景下的使用方式。

关于使用 Prompt 要记住以下原则:

  1. 清晰具体的指令
  2. 足够的上下文和足够多的对话
  3. 提出展示信息源,避免 AI 编造事实
  4. 使用结构化的输出方式,例如 JSON, XML,HTML 等,这是 AI 擅长的输出方式
  5. 合理的期望,AI 并不是万能的

以上是课程的全部内容,课程内容不长,有兴趣可以去官网学习。

使用 ChatGPT 的 7 个技巧 | Prompt Engineering 学习笔记的更多相关文章

  1. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  2. 《软件调试的艺术》学习笔记——GDB使用技巧摘要

    <软件调试的艺术>学习笔记——GDB使用技巧摘要 <软件调试的艺术>,因为名是The Art of Debugging with GDB, DDD, and Eclipse. ...

  3. Python 工匠:使用数字与字符串的技巧学习笔记

    #Python 工匠:使用数字与字符串的技巧学习笔记#https://github.com/piglei/one-python-craftsman/blob/master/zh_CN/3-tips-o ...

  4. 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧

    目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...

  5. 机器学习技法--学习笔记03--Kernel技巧

    背景 上一讲从对偶问题的角度描述了SVM问题,但是始终需要计算原始数据feature转换后的数据.这一讲,通过一个kernel(核函数)技巧,可以省去feature转换计算,但是仍然可以利用featu ...

  6. Android学习笔记之布局技巧以及布局中的细节介绍....

    PS:休息两天,放一放手上的东西,做做总结... 学习内容: 1.Android中LinearLayout布局技巧... 2.layout中drawable属性的区别...   先简单的介绍一下dra ...

  7. java系列:《java核心技术 卷1》学习笔记,chapter 11 调试技巧

    11. 6 调试技巧 1)一个不太为人所知却非常有效的技巧是在每个类中放一个main方法,这样就可以对每个类进行单元测试.这个方法可以保留,因为在java虚拟机只调用启动类的main方法. 2)   ...

  8. 学习笔记——Maven实战(九)打包的技巧

    “打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码.编译生成的字节码.配置文件.文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR ...

  9. CSS学习笔记总结和技巧

    跟叶老师说项目,他叫我写一个静态首页,看起来挺简单的,但是下手才发现在真的不会怎么下手啊,什么模型啊模块啊都不懂,写毛线啊!! 如图:页面下拉还有侧栏,中间内容等. 可是答应跟老师做了,不能怂啊,于是 ...

  10. lua学习笔记11:lua中的小技巧

    lua中的小技巧,即基础lua语言本身的特种,进行一个些简化的操作 一. 巧用or x = x or v 等价于: if not x then x = v end 假设x为nil或false,就给他赋 ...

随机推荐

  1. 5分钟带你彻底搞懂async底层实现原理!

    ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async 函数是什么?一句话,它就是 Generator 函数的语法糖.研究 async 的原理,就必须先弄清楚 Genera ...

  2. Redis Cluster集群搭建及节点的添加、删除

    系统性学习,移步IT-BLOG 一.什么是 Redis Cluster Redis 是在内存中保存数据的,而我们的电脑一般内存都不大,这也意味着 Redis 不适合存储大数据,适合存储大数据的是 Ha ...

  3. 使用requests发送post请求登录

    post请求 语法结构 requests.post(url,data=None,json=None) 参数说明 url:需要爬取的网址 data:请求数据 json:json格式的数据 案例:登录小说 ...

  4. DevOps 在未来将如何演进?丨行业观察

    自2007年 DevOps 这一概念推出以来,越来越多企业开始将开发和运维团队结合在一起,以加快部署速度,提高软件开发生命周期的效率和协作.但是,诸多因素都会对 DevOps 是否成功产生影响,例如组 ...

  5. [Linux]常用命令之【du/fdisk/df/ls】#磁盘管理/文件管理#

    本文的经典应用场景: 1.查找占用磁盘存储空间最大的目录/文件 2.关于[磁盘分区]的相关概念和实操,详见另一博文:[Linux]磁盘分区 - 博客园/千千寰宇 1 fdisk fdisk := &q ...

  6. 新手小白需要了解的 Go 基础细节杂谈

    今日记录一下 学习 golang 这门语言遇到的一些比较特殊的细节,供大家参考. 所以,在我们输出内容的时候,可以包含很多的非 ASCII 码字符.实际上,Go 是天生支持 UTF-8 的,任何字符都 ...

  7. 多线程socketserver

    模块:socketserver tcp协议: 服务端: import socketserver class MyRequestHandle(socketserver.BaseRequestHandle ...

  8. SSH: Linux开启ssh并启动root登录设置默认密码

    apt update && apt install -y openssh-server echo "PermitRootLogin yes" >> /e ...

  9. 卸载wamp忘记备份MySql,如何恢复MySql数据

    大家把wamp卸载了,但是数据库忘记备份了.怎么办?不要急,不要慌!打开wamp所在目录(前提是你没有删),你会发现wamp特别良心的帮你把MySql的data文件夹留下来了,这个时候你只要把这个文件 ...

  10. Linx 阶段一

    Linux Linux常用命令 具体演示 1). ls 2). pwd 3). touch 4). mkdir 5). rm 使用技巧 1. 连按 Tab健自动补齐文件名 2. ll 查看当前目录文件 ...