前段时间在 DeepLearning 学了一门 Prompt 的课程,吴恩达本人授课,讲的通俗易懂,感觉受益匪浅,因此在这里总结分享一下我的学习笔记。
为什么要学习 Prompt ?
因为在未来的 AIGC
年代,学习有效的 Promot
提示词有效的利用 AI 来完成一些重复性的工作。这也我认为未来每个人都必备的技能之一。
以下是我个人学完这门课程的总结:
- 更好的完成任务:试想一下,如果你给 AI 一个模糊的问题,那么你得到的只会是一个模糊的回答
- 多元化的结果:可以让 AI 更多维的结果,但不限于:代码,JSON,XML,HTML 等格式文本,甚至是图片,视频等
- 避开 AI 的局限:喜欢编造事实,这是目前 AI 已知的缺陷,但有效的 Prompt 可以帮助你有效的避开这个已知,但目前还无法解决的缺陷
- 不再迷信完美的 Prompt:了解真相后,你将不再迷信类似于 awesome-chatgpt-prompts-zh 各种所谓的魔法,速成的调教指南,因为不存在完美的 Prompt
- 了解 AI 的能力:目前大模型的能力局限在:摘要,推理,转换,扩展等能力上,目前的 AI 并非无所不能,不要过分神话,也不要过分贬低它
总而言之,学习 Prompt 提示词可以帮助您更好地与 LLM 模型进行交互,指导其生成符合您需求的文本,并提高效率和准确性。也推荐大家有时间可以看完完整的视频课程。我就不过多展开了。以下是我对课程的学习笔记。
第一章:Introduction 引言
第一章节,引言主要介绍和 ChatGPT
或类似的 LLM
交流时,要遵循的几个基本原则,如下:
- 明确的指令:清晰的指令会得到更准确的回复。例如,而不是问 "我应该吃什么?",你可以问 "我应该在素食饮食中添加哪些蛋白质来源 ?"
- 合理的期待:模型的知识储备和它的训练参数和训练方向有关,例如对于
ChatGPT
这样一个作为通用领域的大模型,对于一些特别复杂、需要深度专业知识,它是无法提供准确的答案的,特定领域的问题必须由特定领域的专用模型来解决。 - 验证结果:如上,对于特别复杂和专业的问题,AI 有时候会虚构信息,你必须对 AI 的回复进行验证,如果发现了错误,可以尝试用不同的方式提问。
- 等待 AI 思考的时间:AI 需要理解你的问题,并生成一个有用的响应,这可能需要一些时间,特别是对于复杂的问题。要有一点耐心
以上就是向第一章课程中包含的向 AI 提问的基本原则,希望对你有所帮助。
第二章:Guidelines 指南
第二章主要介绍以下内容:
- 如何使用 ChatGPT 进行结构化输出,例如 JSON,HTML,XML 等等
- 如果使用 Prompt 有效的避免 AI 虚构事实的方法(上面提到过)
生成结构化数据
在数据处理与分析**,**API 开发和测试等常见的场景中你可能需要生成或解析 JSON 数据。你可以使用 ChatGPT 帮助你完成这些任务。
例如,如果我们想让ChatGPT生成一个包含某人信息的JSON对象,可以按照以下方式询问:
命令:"请生成一个包含姓名(John Doe)、年龄(30)和职业(Software Engineer)的 JSON 对象。"
ChatGPT 可能会生成以下的输出:
代码语言:javascript复制{
"name": "John Doe",
"age": 30,
"profession": "Software Engineer"
}
这是一个基本的示例,你可以根据需要自定义属性和值。甚至让它生成一个虚拟的 JSON 数组对象也是很简单的
如何避免 AI 编造事实 ?
ChatGPT 是一个基于大量文本训练的语言模型,因此,它可能会生成包含错误、过时或猜测的信息的答案。
但是,通过优化你的问题或提示(prompt),你可以降低这种情况的可能性。方法如下:
- 要求引用来源:在询问事实性信息时,要求模型引用其信息来源。(目前 GPT-4 已经实现联网功能)
- 寻求解释而不是事实:如果你想了解一个具体的概念或理论,考虑寻求对它的解释,而不是一个具体的事实。例如,问 "什么是深度学习?" 可能比问 "深度学习最重要的研究是什么?" 得到更准确的回答,因为后者可能引导模型进行猜测或编造。
- 使用多个问题:如果你对一个问题的答案不确定,可以尝试用不同的方式重复提问,或者向模型要求解释它的答案。这可以帮助你从不同的角度理解问题,并可能揭示模型的不准确之处。
示例如下:
假设你想了解电池的工作原理,你可以按照以下方式提问:
- 直接提问:"电池是如何工作的?"
对此,ChatGPT 可能会给出一个基本的答案,解释电池的化学反应和能量转换。
但是,你可能希望得到更详细的答案,或者验证模型的回答。你可以用以下方式改进你的提问:
寻求详细的解释:"能否详细解释一下电池的工作原理,特别是化学反应是如何产生电流的?"
这个问题要求模型提供更详细的答案,并专注于电池的特定方面。再者,你可以要求模型引用其信息来源,尽管它不能实时查阅互联网,但可以提供它的训练数据中的一些信息:
要求引用来源:"能否详细解释一下电池的工作原理,特别是化学反应是如何产生电流的? 并请提供你的信息来源。"
这样的问题可以让模型生成一个更完整和详细的答案,并尽可能地提供一些源于其训练数据的信息来源。
最后,如果你对模型的回答有疑虑,你可以通过不同的方式重复提问,或要求模型解释它的答案:
使用多个问题和要求解释:"你能解释一下电池内部的化学反应是如何产生电流的吗?它是如何转化为我们所用的电力的?你的答案是基于什么样的科学原理的?"
这样的提问方式不仅可以从不同的角度理解问题,还可以挑战模型的回答,检查其是否基于合理的科学原理。
第三章:Lterative 迭代
本章主要讲解如何通过足够的迭代(上下文和语境)让 AI 更好的解决问题,这也是吴恩达所说的 不要迷信完美的 Prompt,简单的 Prompt 只能解决简单的问题,只有足够的迭代(上下文和语境)才能真正的解决问题你当前遇到的问题,主要原因如下:
- 理解问题的全貌:提供更多的上下文可以帮助 ChatGPT 更好地理解你的问题。例如,如果你只是简单地提问“它多大?”,ChatGPT 无法知道你在问什么。但如果你先说“我刚买了一部新手机,”然后再问“它多大?”,ChatGPT 就能理解你在问手机的大小。
- 消除歧义:上下文可以帮助消除语言的歧义。许多单词和短语在不同的上下文中可能有不同的含义。例如,“行”可以指的是做某事,也可以指的是一行文本。如果你提供足够的上下文,ChatGPT 就能更好地理解你的意思。
- 理解问题的背景:在一些情况下,理解问题的背景信息对于生成有用的答案是很重要的。例如,如果你在问有关一部电影的问题,提供电影的名字和你已经知道的相关信息可以帮助 ChatGPT 生成更相关的答案。
- 跟踪对话的连贯性:在一个持续的对话中,提供上下文可以帮助 ChatGPT 维持对话的连贯性。例如,如果你在之前的对话中提到过某个主题,将这个信息包括在新的提示中可以帮助 ChatGPT 理解和回应你的问题。
总的来说,提供更多的上下文信息可以帮助 ChatGPT 更准确、更有用地回答你的问题。这也是开始说的 不要迷信完美的 Prompt 的原因所在了。
第四章:Summarizing 摘要
本章主要介绍 ChatGPT 的总结冗余信息的能力,信息大爆炸和快节奏的时代,要读完一本学术巨著,或者是冗长的商业报告,法律文书等长篇文章几乎是不可能了,有效的利用 ChatGPT 的摘要能力,它能够从一篇长文中提取关键信息并生成一个总结,帮助我们压缩,但又不错过关键信息,提高阅读效率。生成总结提示词的方法很简单,你可以上传一份文档(使用 AskYourPDF 插件),或者给他一串长文本,然后提问:请为这篇文章生成一个总结。 即可。这章比较简单,就会继续展开了。
第五章:Inferring 推理
本章主要介绍 AI 的推理能力,推理能力是 AI 能力非常有趣的能力,当你给它一个问题或一个话题,它就会根据已经学到的知识和技能,尝试生成一个合理且有帮助的回答。它是基于零样本学习(Zero-Shot Learning)来实现的。通俗的解释就是:
模型利用已有的知识或信息来处理新的、未知的情况。在进行推理时,模型可能需要根据已知的事实或规则来预测未知的结果。
可以通过一个例子来理解:
比如说,如果你告诉 ChatGPT,“今天下雨,我没有带伞,我会湿吗?”
ChatGPT 会结合它“学习”到的关于雨、伞和湿度的知识,给出 “是的,如果你在雨中行走而没有伞,你可能会变湿。”这样的回答。
这就涉及到了一种简单的推理:雨会让人湿,伞可以避免人淋湿,没有伞的人在雨中会湿。
第六章:Transforming 转换
Transforming 转换可谓是 AI 的非常擅长的能力,算是看家本领。关于 Transforming 的学术描述是这样的:
Transforming 能力主要是指它可以把一种形式的信息转化为另一种形式,或者把信息从一种语境、语气、风格转换到另一种。
这么理解可能比较抽象,以下是一些经常会应用到的应用场景:
- 从非结构化信息到结构化信息:可以从非结构化的文本数据中提取关键信息,并将其转换为结构化的格式,如 JSON,XML 等。这在处理大量非结构化数据时很有用,比如从社交媒体帖子、新闻文章或产品评论中提取关键信息。
- 从一种语言到另一种语言:虽然 AI 并不是一个专业的翻译工具,但是 AI 目前表现出来的翻译能力,真的是目前是吊打市面上的所有翻译软件,包括 Google 翻译等等,这里安利一款我目前在用的基于 AI 转换工具:OpenAI Translator,这是款开源软件,你可以在 Github 上找到它
- 从一种语气或风格到另一种语气或风格:可以把一个文本从一种语气或风格转换为另一种。例如,它可以把一段正式的商业报告转换为更为口语化、易于理解的语言,或者把一段平淡的描述转化为更具有创造性的表达。例如命令:"使用苏格拉底的语气对计算机基础理论某一个知识点进行讲解"等
- 把复杂的概念或信息转化为易于理解的形式:可以把复杂的概念、数据或信息转化为更易于理解的形式。例如,它可以把一段关于气候变化的科学报告转化为一段适合儿童阅读的故事,或者把一组复杂的数据转化为简单的图表或信息图。
- 从文字到音频或视频脚本:可以将一段文字转化为适合录制为音频或视频的脚本。例如,它可以把一篇博客文章转化为一段播客剧本,或者把一段对话转化为电影脚本。
以上只是一些可能的应用场景,AI 的转换能力可以在许多其他场景中发挥作用,取决于具体的需求和环境。
第七章:Expanding 扩展
扩展 Expanding 能力主要指它可以从给定的初始信息或提示中生成更多的内容或信息。简单来说摘要(Summarizing)的使用场景相反,就是根据短文生成长文。比如文章、故事、对话等。以下是一些可能的应用场景:
- 写作辅助:如果你在写作时卡住了,你可以给它一个简短的提示,然后让它生成更多的内容。这可以帮助你开拓思路,找到新的创意或灵感。
- 报告生成:如果你需要编写一篇关于特定主题的文章或报告,你可以给它一个简短的概述或大纲,然后让它生成完整的文章或报告
- 写小说:如果你想创作一个新的故事,你可以给它一个简短的剧情概要,比如主角的描述或故事的开头,然后让它生成完整的故事。
- 教育和学习:在教育和学习的场景中,它可以用来生成教学材料,比如讲解、案例研究、问题和答案等。这可以帮助学生更好地理解和掌握知识。
示例:
假设我们给出 AI 一个如下的提示词:
代码语言:javascript复制请根据以下提示词生成一个故事:在一个风和日丽的早晨,杰克醒来,发现他的宠物鹦鹉消失了。
它会生成如下的故事:
代码语言:javascript复制在一个风和日丽的早晨,杰克醒来,发现他的宠物鹦鹉消失了。他的眼神立即被笼子空荡荡的一角所吸引,笼门半开,鹦鹉的食物未动,一切都显得格外安静,与往日的欢声笑语形成了鲜明对比。
他心急如焚,急忙在家里找寻,然而,家里并没有找到鹦鹉的踪影。他的心沉了下来,他想,也许鹦鹉只是飞出去玩了一会,很快就会回来的。然而,整个上午过去了,鹦鹉还是没有回来。
午后的阳光照在花园里,杰克决定到花园和附近的森林里寻找鹦鹉。他呼唤着鹦鹉的名字,但只有微风吹过树叶的声音回应他。杰克心里越来越不安,他知道鹦鹉不可能走得太远。
就在此时,他看到了一片鹦鹉的羽毛,旁边还有一些熟悉的爪印。他心跳加速,紧跟着这些线索深入森林。在森林的深处,他看到了他的鹦鹉,它正站在一个高大的橡树上,旁边是一窝刚刚孵化的小鸟。
原来,鹦鹉是跟着母鸟来到这里,帮助它照顾刚刚孵化的小鸟。看到这一幕,杰克笑了,他知道他的鹦鹉是一只善良的生物,它的消失是为了做一件好事。
那一天,杰克和他的鹦鹉一起在森林里度过了美好的一天。他们帮助小鸟找食物,一起在树林里玩耍。晚上,鹦鹉回到了笼子,杰克知道,无论鹦鹉飞到哪里,它都会回到他身边,因为这就是它的家。
在这个示例中,ChatGPT 从一个简单的提示扩展出一个完整的故事,包括角色的动作、感情以及故事的发展和结局。
总结 Conslusion
吴恩达的这门 Prompt Engineering 课程,主要讲解了使用 Prompt 的基本原则,还有 LLM 大模型在各个场景下的使用方式。
关于使用 Prompt 要记住以下原则:
- 清晰具体的指令
- 足够的上下文和足够多的对话
- 提出展示信息源,避免 AI 编造事实
- 使用结构化的输出方式,例如 JSON, XML,HTML 等,这是 AI 擅长的输出方式
- 合理的期望,AI 并不是万能的
以上是课程的全部内容,课程内容不长,有兴趣可以去官网学习。