吴恩达 OpenAI 的Prompt教程笔记 - ChatGPT Prompt Engineering for Developers
文章目录
- 第一课 Introduction
- 第二课 Guidelines for Prompting
- 一、两个原则
- 1、编写明确和具体的指令
- 2、给模型足够的时间来思考
- 二、一个局限性
- 第三课 lterative Prompt Development
- 第四课 Summarizing
- ![在这里插入图片描述](https://img-blog.csdnimg.cn/da068bfbe4604eba9dcddeeaa198aa30.png#pic_center =400x) ![在这里插入图片描述](https://img-blog.csdnimg.cn/a066dddac3a94f76b00abfd83ad49327.png#pic_center =400x)
- 第五课 Inferring
- 第六课 Transforming
- 第七课 Expanding
- 第八课 Building a Chatbot
- 第九课 Conclusion
- Reference
课程标题:ChatGPT Prompt Engineering for Developers (Andrew Ng & Isa Fulford)
课程章节:
- 课程简介(Introduction)
- 提示工程关键原则 (Guidelines)
- 提示工程需要迭代(lterative)
- 总结类应用(Summarizing)
- 推理类应用(Inferring)
- 转换类应用(Transforming)
- 扩展类应用(Expanding)
- 打造聊天机器人(Chatbot)
- 课程总结(Conclusion)
这个视频主要面向开发者,演示全程使用 API 调用。用 API 调用可以起“封装”的作用,让很多提示工程对外部用户不可见。与此同时,使用网页的话,有些提示是看不到的。教了很多开发技巧,逻辑偏向于后台交互尤其是识别分析技巧,而不仅仅是教如何GPT 的使用。
第一课 Introduction
大致有两种类型的 LLMs:
- Base LLM 基础大模型
- 基于文本训练数据来预测做“文字接龙”
- 容易输出有问题的文本,例如有毒的输出
- Instruction Tuned LLM 指令调整型模型
- 经过微调,能更有可能输出有益、诚实和无害的文本
- 实际应用场景大多转向指令调整 LLM
- 建议大多数人使用指令调整 LLM,因为 OpenAI 等公司的工作使它更安全
这门课将重点介绍指令调整 LLM 的最佳实践 !
Prompt:大模型相当于一个很聪明的人,但不知道具体任务,所以要给它提示。
第二课 Guidelines for Prompting
以下所有实战,都基于这块代码的 API 调用。
一、两个原则
1、编写明确和具体的指令
明确 ≠ 短,更长的提示实际上提供了更多的清晰度和上下文信息,可导致更详细和相关的输出。
四大策略
使用分隔符清楚地指示输入的不同部分,分隔符可以是任何清晰的标点符号。
分隔符还有一个作用:可以避免提示词冲突。
要求结构化输出内容。
要求模型检查是否满足条件。
如果任务存在假设未必满足,那么可以告诉模型首先检查这些假设,如果不满足,则指示并停止尝试完全完成任务。
我的理解是,这个步骤更多是针对开发者,用于对输入内容进行检查和判别,当输入内容和 Prompt 的要求不符合时,提供一个反馈。
例如视频中,一个自动凝练文本内容步骤的任务,当文本内容被替换(不存在步骤)之后,任务无法执行。
- “少量训练提示”:要求模型执行任务之前,提供成功执行任务的示例。
2、给模型足够的时间来思考
如果模型因急于做出结论,而出现推理错误,则应尝试重新构建查询请求相关推理的链或序列。
如果给模型一个很复杂的任务,要求在短时间内或少数词中完成它,它可能会猜测结果,这是不正确的。
类似于人类,如果让某个人在没有时间先算出答案的情况下完成一个复杂的数学问题,也可能会犯错。
- 指定完成任务所需的步骤(给好回答步骤)
指示模型在匆忙做出结论之前思考解决方案
(即在让模型说出答案是否正确之前,为模型提供足够时间去实际思考问题)
明确指示模型在做出结论之前,先推理出自己的解决方案,然后再下最终结论,相比直接做结论,可以获得更好的结果。
这个逻辑很有用,尤其在解决逻辑较深奥的问题时,例如视频里面的解数学题:直接判断学生的答题结果误认为是正确的,但先让它解题然判断,则正确判为做错。
二、一个局限性
即使模型在其训练过程中暴露于大量的知识,它并没有完全记住所看到的信息,因此它并不非常了解知识的边界,意味着它可能会尝试回答关于晦涩主题的问题,并编造听起来合理但实际上不正确的内容。我们将这些虚构的想法称为幻觉,这是模型的已知弱点之一。
hallucination
:幻觉
可以尝试使用上面的技巧避免出现这种问题。
在希望模型基于文本生成答案的情况下,减少幻觉的一种额外策略是:要求模型首先从文本中找到任何相关的引用,然后要求它使用这些引用来回答问题,并且可以追溯答案回溯文档,通常可以帮助减少这些幻觉
第三课 lterative Prompt Development
正如机器学习算法训练一样,一次训练就能正常工作的可能性很低,Prompt Development 也是一样,也许可能性会大一点。因此需要不断迭代训练。
下图参考吴恩达机器学习的一张图。
PS:Jupyter 直接输入下面代码,可以以 HTML 显示。
from IPython.display import display, HTML
display(HTML(response))
通常只有在应用程序更成熟并且需要这些指标来推动提示改进的最后几步时,才会进行这样的迭代评估。
Notes:
- 大语言模型使用分词器来解释文本,往往在计算字符时效果一般
第四课 Summarizing
概述总结的应用非常多,除了常用的文献凝练,还可以用于读取评论区并分别总结每一条内容。
我的理解:大量输入评论内容,让 GPT 自动总结并排版列表(仪表盘),分析每一条评论是否正面、核心问题、建议等等,有需要详细信息再返回原评论。
第五课 Inferring
把目标想象成模型以文本作为输入并执行某种分析的任务。
传统机器学习方法,提取标签、分析情感(正面或负面)等任务,流程复杂,包括标签数据、训练和部署等等,并且每个任务都需要单独的模型。相比之下,大模型有很多优势,只需要 Prompt 就可以开始工作,大大提高开发速度,同一个模型不同 API 完成不同任务。
JSON 是一种数据存储格式,可以被任意语言调用,和 Python 的字典很像。可以让 GPT 识别内容(提取主题列表),并以 JSON 结构化输出,方便 Python 调用。
在机器学习中,这类型算法被称为零样本学习算法。因为没有提供任何带标签的训练数据,所以是零样本学习。
第六课 Transforming
大语言模型非常擅长将其输入转换为不同的格式,例如翻译、拼写和语法纠正。相对以往,这些都是通过一堆正则表达式实现的,实现难度较大。
第七课 Expanding
技术是双面性的,文本扩展可以帮助人们写邮件写文章,但也可能会导致垃圾邮件等滥用,是不是同时催生了这类垃圾邮件的检测需求?
语言模型的输入参数:温度,模型响应中变化探索的程度和多样性。
教程的任务:自动回复邮件,回复消费者邮件,根据情感是否积极来对应回复。
在构建需要可靠和可预测回复的应用程序时,建议使用温度为 0;想要创造性则调高温度值。总之,较高温度下,模型的回答更随机。
第八课 Building a Chatbot
系统消息有助于设置助手的行为和人设,并作为高层指令用于对话,可以将它视为在助手的耳边低语,引导它的回应,而用户不会意识到系统消息的存在。
好处:为开发者提供了一种在不将请求本身作为对话一部分的情况下引导助手并指导其回复的方式。这时候温度值可以调高一点。
吴恩达 OpenAI 的Prompt教程笔记 - ChatGPT Prompt Engineering for Developers相关推荐
- 吴恩达OpenAI基于ChatGPT的Prompt开发教程
吴恩达OpenAI基于ChatGPT的Prompt开发教程 1.如何给出清晰具体的提示 1.1大模型分类: Base LLM基础大语言模型来源于预训练模型:用已有单词推测下一个单词. Instruct ...
- 【机器学习-学习笔记】吴恩达老师机器学习课的笔记(黄海广博士)
吴恩达老师机器学习课的笔记github地址:https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes,黄海广博士原创,黄海广博士也是这门课的最初翻译 ...
- 笔记 | 吴恩达Coursera Deep Learning学习笔记
向AI转型的程序员都关注了这个号☝☝☝ 作者:Lisa Song 微软总部云智能高级数据科学家,现居西雅图.具有多年机器学习和深度学习的应用经验,熟悉各种业务场景下机器学习和人工智能产品的需求分析.架 ...
- 吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进
吴恩达<机器学习>学习笔记十四--应用机器学习的建议实现一个机器学习模型的改进 一.任务介绍 二.代码实现 1.准备数据 2.代价函数 3.梯度计算 4.带有正则化的代价函数和梯度计算 5 ...
- 吴恩达《机器学习》学习笔记十二——机器学习系统
吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...
- 吴恩达《机器学习》学习笔记十一——应用机器学习的建议
吴恩达<机器学习>学习笔记十一--应用机器学习的建议 一.训练完模型后下一步要做什么 二.评估算法与模型选择 1.训练集与测试集 2.训练/测试步骤 3.模型选择 4.数据集新的划分--验 ...
- 吴恩达《机器学习》学习笔记十一——神经网络代码
吴恩达<机器学习>学习笔记十一--神经网络代码 数据准备 神经网络结构与代价函数· 初始化设置 反向传播算法 训练网络与验证 课程链接:https://www.bilibili.com/v ...
- 吴恩达《机器学习》学习笔记十——神经网络相关(2)
吴恩达<机器学习>学习笔记十--神经网络相关(2) 一. 代价函数 二. 反向传播算法 三. 理解反向传播算法 四. 梯度检测 五. 随机初始化 1.全部初始化为0的问题 2.随机初始化的 ...
- 吴恩达《机器学习》学习笔记九——神经网络相关(1)
吴恩达<机器学习>学习笔记九--神经网络相关(1) 一. 非线性假设的问题 二. 神经网络相关知识 1.神经网络的大致历史 2.神经网络的表示 3.前向传播:向量化表示 三. 例子与直觉理 ...
最新文章
- 更换主版之后远程管理卡恢复操作
- 基于Numpy构建全连接前馈神经网络进行手写数字识别
- unix环境高级编程 pdf_UNIX系统编程宝典,每一本都值得程序员珍藏
- 手机网页(WAP)页面上的输入框默认键盘类型
- 结合CRT与欧拉定理高阶幂求余
- VS2010打开就自动关闭问题解决
- 电子元器件篇---电感
- 4K 对齐与固态硬盘检测工具
- Python查看函数源码
- 数据仓库-事实表和维度表的设计
- 开普勒方程迭代求解C语言,一种实用的开普勒方程求解方法及其 C 语言实现
- 适合arduino小白入门的最基础的函数教程
- Spatial Transformer Networks(STN)理解
- 天眼查、企查查APP的Authorized值和sign值破解思路记载
- maya将模型导入到unity
- 数据中心解决方案安全技术
- 由OSS AccessKey泄露引发的思考
- Java中字符数组转换为字符串
- 找回误删并清除了回收站的文档
- 四、SLAM学习笔记—— Ubuntu18.04交叉编译OpenCV4.5.5至ARM64位平台firefly-RK3566
热门文章
- 完美解决丨1. **`SyntaxError: invalid syntax`**
- Git常用命令及方法大全
- 【YOLO-Pose】在Windows上的部署与测试(调用摄像头)
- iOS应用的启动流程和优化详解
- css如何改变视频大小,调整视频的大小取决于屏幕尺寸少用CSS
- 华为ENSP网络设备配置实战2(较为复杂的ospf)
- 老男孩python培训课件
- 用keil语言定义c51,51单片机Keil C51的使用(C语言)
- spin()和spinOnce()
- 末尾运算符 ^和范围运算符 .