玩转ChatGPT:吴恩达/OpenAI合作教程《面向开发者的ChatGPT提示工程》

news2024/11/20 10:06:53

一、写在前面

最近,吴恩达与CloseOpenAI合作出了一个教程《面向开发者的ChatGPT提示工程》,第一时间就观摩了,有些体会,现在把个人觉得有意思的搬运过来。

我的机器学习入门就是看的吴恩达的教程!大佬长得像冯巩,哈哈哈。

原版视频地址:

https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/

B站已经有中文版:

https://space.bilibili.com/15467823/channel/seriesdetail?sid=3247315&ctype=0

下面是第一节课的笔记。多说一句,我觉得第一节课的内容干货满满(讲的是方法论,值得细细评味),后面的课都是基于这些原则展开:

二、提示工程的两个关键原则

(1)Write clear and specific instructions. 编写清晰而具体的指令

(a)你应该通过提供尽可能清晰和具体的指令来表达你希望模型做什么,这将引导模型走向预期的输出,并减少你得到不相关或不正确反应的机会。

(b)不要把写一个清晰的提示和写一个简短的指令混淆起来,因为在许多情况下,较长的指令实际上为模型提供了更清晰描述和上下文,可以带来更详细和相关的输出。

总结一下:指令越清晰越好,越具体越好,不要吝啬你的句子。

(c)帮助你写出清晰而具体的指示的第一个策略:使用分隔符来明确指出输入的不同部分。举个例子:

咒语:将 {文本} 中的主要内容总结成一句话,50个字左右。

{所谓的不平衡数据集指的是数据集各个类别的样本量极不均衡。以二分类问题为例,假设正类的样本数量远大于负类的样本数量,通常情况下通常情况下把多数类样本的比例接近100:1这种情况下的数据称为不平衡数据。不平衡数据的学习即需要在分布不均匀的数据集中学习到有用的信息。}

 总结一下:使用定界符(如大括号)可以使模型清晰地了解需要总结的确切文本,定界符可以是任何明确的标点符号,将特定文本片段与提示的其他部分分开。

(d)帮助你写出清晰而具体的指示的第二个策略:要求一个结构化的输出。比如说,以Markdown、HTML或JSON格式输出,或者像我之前以表格的形式展示。举个例子:

咒语:生成一个包含三个编造的书名作者和流派的列表。分别以表格的形式展示出它们的书籍ID、书名、作者和流派。

(e)帮助你写出清晰而具体的指示的第三个策略:要求模型检查条件是否得到满足。有点拗口,她是这么解释的,如果任务中的假设不一定被满足,那么我们可以告诉模型先检查这些假设。如果这些假设不被满足,指出这一点,并在完成任务的过程中停止。你也可以考虑潜在的边缘情况,告诉模型应该如何处理它们以避免意外的错误或结果。举个例子:

咒语:如果 {文本} 的主要内容包含步骤信息,那么按照下面格式对文本内容进行总结:

材料:

步骤:

第一步:...

第二步:-

第N步:-

如果 {文本} 的主要内容不包含步骤信息,那么久简单输出“无法改写”。

{啤酒鸭是一道非常受欢迎的烤鸭菜肴。制作啤酒鸭需要准备鸭子、啤酒、食盐、老抽、白糖、姜、大葱和香料袋(八角、草果、桂皮、丁香、花椒等)等材料。首先,将鸭子宰杀并清理干净,去掉内脏和头部,然后将鸭子整洗净备用。接下来,将香料袋中的香料放入锅中煸炒出香味,取出备用。然后,煮开一锅水,加入适量啤酒、食盐、老抽、白糖、姜、大葱和香料袋,煮至香味溢出。将煮好的啤酒汁放凉,将鸭子浸泡在啤酒汁中腌制4小时以上(越久越入味)。为了让鸭肉入味,可以在啤酒汁中加入适量盐和酱油,也可以在鸭子表面涂抹适量酱油和料酒。将腌制好的鸭子放在烤箱中,以180度烤40分钟,取出后涂上蜂蜜,再放回烤箱继续烤20分钟左右,直到鸭皮金黄酥脆。在烤制的过程中,可以根据自己口味调整烤制时间和温度,以达到最佳口感。最后,取出烤好的啤酒鸭,切成合适的块状即可食用。煮汁时可加入香料袋,使啤酒汁更香,涂上蜂蜜可增添甜味。享用啤酒鸭时,可以搭配啤酒或其他饮料,更加美味可口。}

 我把文本换一下:

(f)帮助你写出清晰而具体的指示的第四个策略:在指令中举一个具体的例子,让模型依葫芦画瓢。这个就不举例子了,大家都懂怎么操作。

总结:首先我们需要编写清晰而具体的指令。提供了4个策略,使用分隔符来明确指出输入的不同部分;要求一个结构化的输出;要求模型检查条件是否得到满足;在指令中举一个具体的例子,让模型依葫芦画瓢。

(2)Give the model time to think. 给模型思考的时间

大佬解释:如果一个模型因急于得出结论而出现推理错误,应该尝试重新设计询问,要求模型有一连串或一系列相关的推理,然后再由模型提供最终答案。如果你给一个模型一个太过复杂的任务,那么它就无法在短时间内或用很少的词来完成,最终可能会编造一个不正确的答案。

说人话就是,要给模型思考的时间,好比我们算一道数学题都要打草稿呢。

(a)第一个策略:指定完成一项任务所需的步骤。直接举例她的第一个例子:

咒语:Perform the following actions:

1 - Summarize the following text delimited by triple backticks with 1 sentence.

2 - Translate the summary into Chinses.

3 - List each name in the Chinese summary.

4 - Output a sheet object that contains the following keys: chinese_summary, num_names.

Separate your answers with line breaks.

Text:

‘’’ In a charming village, siblings Jack and Jill set out on a quest to fetch water from a hilltop well. As they climbed, singing joyfully, misfortune struck-Jack tripped on a stone and tumbled down the hill, with Jill following suit. Through slightly battered, the pair returned home to comforting embraces. Despite the mishap, their adventurous spirits remained undimmed, and they continued exploring with delight. ‘’’

 然后,她又换了一个咒语(主要是输出格式有变化):

Perform the following actions:

1 - Summarize the following text delimited by <> with 1 sentence.

2 - Translate the summary into Chinese.

3 - List each name in the Chinese summary.

4 - Output a sheet object that contains the following keys: chinese_summary, num_names.

Use the following format:

Text: <text to summarize>

Summary: <summary translation>

Translation: <summary translation>

Name: <list of names in Chinese summary>

Output JOSN: <josn with summary and num_names>

Text:

< In a charming village, siblings Jack and Jill set out on a quest to fetch water from a hilltop well. As they climbed, singing joyfully, misfortune struck-Jack tripped on a stone and tumbled down the hill, with Jill following suit. Through slightly battered, the pair returned home to comforting embraces. Despite the mishap, their adventurous spirits remained undimmed, and they continued exploring with delight. >

 总结一下:首先读取文本 ——> 用英文总结文本内容 ——> 翻译总结句子 ——> 提取名字 ——> 输出JOSN格式。把任务层层分解,一步一步解决,最后汇总。

(b)第二个策略:指示模型不要急于得出结论,先尝试找出解决方案。模型给出结论以后,告诉TA正确与否。所谓的人在回路?看看她的例子:

咒语:Determine if the students solution is correct or not.

Question:

Im building a solar power installation and I need help working out the financials.

- Land costs $100 / square foot

- I can buy solar panels for $250 / square foot

- I negotiated a contract for maintenance that will cost me a flat $100k per year, and an additional $10 / square foot

What is the total cost for the first year of operations as a function of the number of square feet.

Students Solution:

Let x be the size of the installation in square feet.

Costs:

  1. Land cost: 100x
  2. Solar panel cost: 250x
  3. Maintenance cost: 100,000 + 100x

Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000

 然而,模型给出的结论是学生是正确的。确实,学生的解题思路没问题,只是粗心看错了一个数字。咋一看,确实以为是正确的。

 所以,需要修改策略:让模型自己就这个问题想出方案,然后再和学生的方案作对比,这样就能准确地判断学生的方案是否正确。

咒语:Determine if the students solution is correct or not.

To solve the problem do the following:

- First, work out your own solution to the problem.

- Then compare your solution to the students solution and evaluate if the students solution is correct or not. Dontt decide if the students solution is correct until you have done the problem yourself.

Use the following format:

Question:

‘’’

question here

‘’’

Students solution:

‘’’

Students solution here

‘’’

Actual solution:

‘’’

steps to work out the solution and your solution here

‘’’

is the students solution the same as actual solution just calculated:

‘’’

yes or no

‘’’

student grade:

‘’’

correct or incorrect

‘’’

Question:

Im building a solar power installation and I need help working out the financials.

- Land costs $100 / square foot

- I can buy solar panels for $250 / square foot

- I negotiated a contract for maintenance that will cost me a flat $100k per year, and an additional $10 / square foot

What is the total cost for the first year of operations as a function of the number of square feet.

Students Solution:

Let x be the size of the installation in square feet.

Costs:

  1. Land cost: 100x
  2. Solar panel cost: 250x
  3. Maintenance cost: 100,000 + 100x

Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000

 有没有一种感觉,TA的思维模式,有点像人类,甚至犯的错误都很像。

总结:模型也是急性子,拍脑袋给出的答案正确率不高。解决办法:给TA思考的时间,还有引导TA先自己想办法,比对后再下结论。总之就是,三思而后行!

 

三、模型的局限

我们都见识过了,叫一本正经地胡说八道:

大佬说:尽管语言模型在训练过程中已经接触了大量的知识,在其训练过程中,它并没有完美地记住它所看到的信息。因此,它对自己的知识边界并不十分了解,这意味着它可能会尝试回答一些晦涩难懂的问题,并且可以编造一些听起来很有道理但实际上并不真实的事情。我们把这些编造的想法称为幻觉(Hallucination)。

大佬给的建议:有一个额外的策略来减少幻觉,如果你想让模型基于文本生成答案,你需要先要求模型从文本中找到任何相关的引用,然后要求它使用这些引用来回答问题。

嗯,她没给案例!!!

 

四、写在最后

  1. 信息量十足。直接听官方的课程,少走弯路。
  2. 后面6节课,有缘再见。因为我看了一遍,没啥惊艳的,可能是我水平不够。待我有所感悟,在加更一期。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/484403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决Element-UI清空表单及验证不生效的问题

问题描述 由于我将编辑与新增时&#xff0c;表单使用的是同一个data中的数据&#xff0c;这就导致出现了我点击了编辑后&#xff0c;再次点击新增时&#xff0c;出现了数据依旧是刚才编辑表单中的数据。 解决办法 尝试一&#xff08;不推荐&#xff09; 通过手动给表单中的…

【五一创作】版本控制-从零开始学Git-01什么是Git

一、版本控制 1.1 概念 什么是"版本控制"&#xff1f;版本控制就是一种记录一个或多个文件内容变化、以便开发者 或者其他用户将来对特定版本的文件进行查阅、备份、恢复等操作的系统&#xff0c;即版本控制系统。(VCS,version control system)。 1.2 为何需要版本…

15-4-线程-线程同步之互斥量加锁解锁

一、概念 互斥量&#xff1a;互斥量&#xff08;mutex&#xff09;从本质上来说是一把锁&#xff0c;在访问共享资源前对加互斥量&#xff08;实现加锁&#xff09;&#xff0c;在访问完成后释放互斥量&#xff08;实现解锁&#xff09;。 加锁后&#xff0c;任何其他试图再次…

SpringMvc拦截器使用介绍

文章目录 拦截器拦截器基本介绍拦截器快速入门拦截器参数 拦截器 拦截器基本介绍 拦截器&#xff08;Interceptor&#xff09;是一种动态拦截方法调用的机制&#xff0c;在SpringMVC中动态拦截控制器方法的执行 作用&#xff1a; 在指定的方法调用前后执行预先设定的代码 阻…

详解MySQL索引

目录 1.什么是索引 2.使用索引的优缺点 3.索引的数据结构 4.索引的分类 5.索引的操作 6.复合索引的数据结构 1.什么是索引 当我们想在一本书里面找到具体的章节的时候&#xff0c;最快的办法是去查看这本书的目录&#xff0c;索引就类似于数据库中存储的数据的目录&…

LeetCode-1033. 移动石子直到连续

题目链接 LeetCode-1033. 移动石子直到连续 题目描述 题解 题解一&#xff08;Java&#xff09; 作者&#xff1a;仲景 这题目挺难懂的&#xff0c;得画画图才能更好的理解 这也是LeetCode的尿性&#xff0c;习惯了&#xff0c;非得整这种别人看不懂的鸟语 你可以这样理解&a…

总结839

每日必复习&#xff1a;&#xff08;微习惯&#xff0c;5分钟&#xff09; 回顾了第二讲数列极限&#xff0c;明天加大回顾力度&#xff0c;复习才是王道。 学习内容&#xff1a; 暴力英语&#xff1a;艾玛沃特森在联合关于女性平等的演讲&#xff0c;背诵并默写了前四段&…

windows/linux文件传输

windows系统下文件传输-FTP python安装pyftpdlib模块 pip install pyftpdlib 这里可能会出现报错&#xff0c;自己看着更换源解决 然后运行python&#xff0c;在2121端口监听 python -m pyftpdlib 然后我们可以使用windows命令行进行操作&#xff0c;自己可以去看下相关文…

Linux配置静态IP地址

个人PC访问虚拟机的基本原理&#xff1a; PC借助虚拟网卡访问虚拟机&#xff08;VMWare&#xff09;的网关&#xff0c;再通过网关连接虚拟机。因此&#xff0c;PC的虚拟网卡&#xff0c;虚拟机的网关&#xff0c;虚拟机&#xff0c;三者的IP地址应在同一网段。&#xff08;默…

【方法】如何在PPT文稿中插入Word表格?

我们在做PPT文稿的时候&#xff0c;经常需要导入其他文档的内容&#xff0c;比如想在PPT里插入Word表格&#xff0c;要怎么操作呢&#xff1f;方法很容易&#xff0c;来看看下面的具体操作步骤吧。 首先&#xff0c;打开PPT后&#xff0c;点击菜单【插入】列表中的【对象】。 …

nodejs+vue+java农村信息化服务平台

用户的登录模块&#xff1a;用户登录本系统&#xff0c;对个人的信息等进行查询&#xff0c;操作可使用的功能。 用户注册模块&#xff1a;游客用户可以进行用户注册&#xff0c;系统会反馈是否注册成功。 添加管理员模块&#xff1a;向本系统中添加更多的管理人员&#xff0c;…

【Linux】基础IO_文件描述符

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅 相关文章推荐&#xff1a; 【Linux】冯.诺依曼体系结构与操作系统 【C/进阶】如何对文件进行读写&#xff08;含二进制&#xff09;操作&#xff1f; 【Linux】基…

【机器学习】第四节:监督学习算法对比评估

作者&#x1f575;️‍♂️&#xff1a;让机器理解语言か 专栏&#x1f387;&#xff1a;机器学习sklearn 描述&#x1f3a8;&#xff1a;本专栏主要分享博主学习机器学习的笔记和一些心得体会。 寄语&#x1f493;&#xff1a;&#x1f43e;没有白走的路&#xff0c;每一步都算…

C语言:指针【进阶】习题练习及分析讲解

目录 一维数组关于strlen函数和sizeof()的练习整型数组字符数组指针 二维数组笔试题 前言&#xff1a; 前面我们刚刚学完了C语言&#xff1a;指针详解【进阶】的知识&#xff0c;这部分的知识还是要重在理解加实践&#xff0c;今天我这里就分享一些有关C语言指针方面的练习供大…

优雅编程,从空格、空行、缩进和注释开始

很多初学者的代码其实都不够“漂亮”&#xff0c;那是因为没有养成好的编码习惯。本篇博客以C语言为例&#xff0c;总结一些好习惯。其实&#xff0c;很多习惯都是肌肉记忆&#xff0c;举个例子&#xff1a;请你写一个程序&#xff0c;输入2个整数并输出它们的和。有些朋友可能…

使用eclipse创建一个图书管理系统(1)-----搭建架构

目录 思维导图&#xff1a; 图书管理系统的创建&#xff1a; 第一步&#xff1a;搭建框架-------使用者 第二步&#xff1a;搭建框架------被使用者 第三步&#xff1a;操作方法 第四步&#xff1a;main函数 思维导图&#xff1a; 前言&#xff1a; 昨天学了一下使用Java…

演出剧院门票售票预约小程序开发制作功能介绍

基于微信小程序的票务预约小程序&#xff0c;广泛适用于演出主办方、剧院、艺术中心、活动中心售票、景区门票售票、儿童游乐园售票、会务签到、展会售票签到、教育培训报名预约、健身预约功能。 多场景售票支持&#xff1a; 售票软件支持多种场景的售票&#xff0c;支持选座、…

python3+Scrapy:爬虫框架问题合集 【参考转载大佬文章 + 自己解决方法】

1、发送请求403报错排查 参考链接链接: 使用scrapy做爬虫遇到的一些坑&#xff1a;爬虫使用scrapy爬取网页返回403错误大全以及解决方案 参考链接链接: 使用scrapy做爬虫遇到的一些坑&#xff1a;网站常用的反爬虫策略&#xff0c;如何机智的躲过反爬虫Crawled (403) 参考链接…

javaEE 初阶 — Cookie 与 Session

文章目录 Cookie 的四个问题Cookie 的典型应用Cookie 与 Session 的区别代码示例体现两者的关联关系1. 设计思路2. 编写前端登录页面3 编写 LoginServlet 处理登录请求3.1 服务器是如何组织会话的 4. 编写 IndexServlet 生成主页4.1 抓包观察交互过程 Cookie 的四个问题 1、Coo…

Doris(25):Doris的函数—Bitmap函数

1 BITMAP_AND(BITMAP lhs, BITMAP rhs) 计算两个输入bitmap的交集,返回新的bitmap. select bitmap_count(bitmap_and(to_bitmap(1), to_bitmap(2))) cnt; select bitmap_count(bitmap_and(to_bitmap(1), to_bitmap(1))) cnt; 2 BITMAP_CONTAINS(BITMAP bitmap, BIGINT input…