简介
ChatGPT 的主要优点之一是它能够理解和响应自然语言输入。在日常生活中,沟通本来就是很重要的一门课程,沟通的过程中表达的越清晰,给到的信息越多,那么沟通就越顺畅。
和 ChatGPT 沟通也是同样的道理,如果想要 ChatGPT 给到的信息越准确,越清晰,和它的沟通就至关重要。
如何能和 ChatGPT 建立一个良好的沟通方式呢?其实就是靠提示词 Prompt。
价值
可能很多同学疑惑的点在于,提示词还需要另外去学吗?这个看起来貌似有手就行的操作,只要会打字就能够立刻上手吧?
但是会和用的好是两回事。我们可以把 ChatGPT 想象成孙悟空的金箍棒,本身它是一个非常强大的法器,但是如果不会使用,它也不过是一根铁棍而已。提示词用的越好,ChatGPT 就越强大。
而且对于有编程基础的人来说,后续如果想要基于 LLM 或大语言模型快速构建、开发一些应用软件或者功能。不掌握 prompt 的基本原理和使用技巧,是无法达到很好的效果的。
在最后的相关资料里面,也添加了由微软和 OpenAI 所出的,针对于开发者的提示词的教程。我们的课程同样在后面也会带来基于 prompt 的应用开发实践。
提示词的原则与技巧
而写一个好的提示词,有以下的技巧可以使用。
-
写清楚需求:GPT 模型无法读懂您的想法,因此在提供需求时尽可能具体是很重要的。这包括在您的查询中包含详细信息,要求模型采用角色,以及使用定界符清楚地指示输入的不同部分。
-
提供参考文本:如果可以,请提供与您希望模型生成的内容相似的参考文本。这将有助于模型了解您要查找的内容并生成更准确的结果。
-
将复杂的任务拆分为更简单的子任务:如果您试图让模型做一些复杂的事情,将任务分解为更小、更易于管理的子任务会很有帮助。这将使模型更容易理解您的要求并生成更准确的结果。
-
角色扮演:这个技巧的作用是告诉 ChatGPT 在对话中扮演一个特定的角色或人物。这对于创造更有吸引力和沉浸感的对话,或模拟真实世界的场景特别有用。
-
系统地测试变化: 对需求或参考文本进行更改时,重要的是系统地测试结果以了解它们如何影响模型的输出。这将帮助您确定对改进结果最有效的更改。
写清楚需求
编写有效的 ChatGPT 的难点之一是表达含糊不清。为了避免这个问题,有以下几个问题需要注意:
-
定义任何专业术语或技术术语。
-
避免使用模棱两可的语言。
-
使用清晰或简明的语言
-
错误的案例:"你是我的哈基米吗?"
哈基米属于网络用语,而且诞生在 2023 年,ChatGPT 是无法理解这个词的语意的。
-
好的案例:"请帮我提供在深圳市宝安区所有的咖啡馆"
简明扼要说清楚自己的需求,无需多言,ChatGPT 便很好理解了。
提供参考文本
-
对于文本比较短的引用,可以直接贴到提问里面即可:如果你有一段法律条款,并希望模型使用这段条款来解释某个概念,你可以这样提问:“根据以下的法律条款,什么是知识产权?”然后附上法律条款的内容。
-
网页链接的引用:也可以直接将网页链接里面的内容提供给 GPT 来作为引用文本。比如可以直接给它一个链接地址,让它总结文章内的内容。(注意这个功能需要使用 web 插件)
拆解复杂任务
作为一个厨师,在做饭的时候需要完成这些步骤:准备食材、清理食材、处理食材、开始烹饪、摆盘。
在这个过程中,其实厨师就是把一个复杂的任务,拆解成了多个简单的任务。其实在编程的过程中,也是同样的道理。也会把一个复杂需求,拆解为 N 个简单的子需求。
如果需要 ChatGPT 帮助我们完成一个复杂的任务,那么,我们需要预先帮它把任务拆分。这样做的优点是:
-
更好理解每一个操作步骤。
-
不被上下文限制影响。
-
方便调整。
例如我们提出了一个如下的复杂任务:
-
提示词:作为一个测试工程师,我即将进行述职答辩,我想编写一个述职报告,述职报告需要包含我今年的成绩、我明年的目标、以及我在今年的工作过程中碰到的问题
ChatGPT 虽然给到了相应的回复,但是还有问题:
-
工作成绩没有清晰的数据也没有说服力,看着比较干瘪。报告内容没有图表。
-
内容太过简单空洞。
-
格式不够优雅。
如果我们把提问的方式做进一步优化,把这个复杂问题一步步进行拆解,并给 ChatGPT 一定的修改反馈,则产生的内容会更加符合我们的需求,比如我们可以把问题分解为:
-
提示词:作为一个测试工程师,我即将进行述职答辩,我想编写一个述职报告。述职报告需要包含我今年的成绩,我今年带领测试团队将 bug 的逃逸率降低了 10%的比例。并且我希望有一个通过 echarts 绘制的折线图。请将我的述职报告做进一步优化。
当然我们从这张图片中可以看出折线图无法展示,我们可以进一步给 GPT 提示信息,让它直接给到报表的源码。
-
提示词:echarts 折线图没有展示出来
然后 GPT 就会解释原因,并且给到解决方案。由此可见,将问题拆解,我们可以随时调整 GPT 的返回信息,让其更加贴近我们的需求。
借助外部工具
作为一个大语言生成模型,GPT4 并不擅长各种数学计算。比如下面的问题(来自官方 GPT 最佳指南中的示例问题):
-
提示词:查找以下多项式的所有实值根:3x^5 - 5x^4 - 3x^3 - 7x - 10
如果直接提问的话,通常没法直接给出答案,如下图所示,虽然借助 Python,给出了运算过程,但是其实 ChatGPT 无法像人类数学家一样,给出直接的推导过程:
所以可以将提示词改为:
-
提示词:查找以下多项式的所有实值根:3x^5 - 5x^4 - 3x^3 - 7x - 10 ,使用 Python 实现。
在后续碰到 ChatGPT 无法直接解决的问题时,不妨继续尝试这种曲线救国的方式。
角色扮演
角色扮演的过程就更为简单了,我们在编写提示词的时候,只需要给它加上一些角色的设定。
比如这个例子:
-
提示词:请用鲁迅的口吻,写一篇文章,叫做我的妈妈,要求字数在 800 字以内。
除了扮演其他作家之外,ChatGPT 甚至可以扮演领导,面试官,浏览器的 console 插件等各种各样我们可以想象到的角色:
-
提示词:我希望你作为一个 javascript 控制台。我将输入命令,你回复 javascript 控制台应显示的内容。我希望您只在一个唯一的代码块内回复终端输出,而不是其他任何内容。不要写解释。我的第一个命令是 console.log("Hello World");
系统的测试变化
正如人在回复信息的时候,也无法保证所有的回复都是正确的,ChatGPT 也无法保证每次给到的信息都是“靠谱的”或者是满足需求的。
所以 ChatGPT 的每一次回复,在确认没有问题之后,再使用。如果有问题的话,可以进一步进行提问,ChatGPT 会根据提示词不停的纠正回复。以达到一个满意的效果。
比如这个示例:
-
提示词:请问 App 的产品在测试的过程中需要注意什么
在测试一个 App 产品的过程中,有一些重要的注意事项可以帮助确保产品质量和用户体验。以下是一些你应该注意的方面:
1. **功能性测试:** 确保所有的功能都能正常工作,包括用户界面、交互和后台操作。测试每个功能的不同用例和场景,以确保没有错误或异常情况。
2. **兼容性测试:** 测试 App 在不同设备、操作系统版本和屏幕尺寸上的兼容性。这有助于确保用户在各种环境中都能正常使用 App。
3. **性能测试:** 测试 App 的性能,包括加载速度、响应时间和资源占用等。确保 App 在各种条件下都能保持良好的性能。
...省略...
11. **更新和升级测试:** 在发布新版本或更新时,确保之前的功能仍然正常,没有引入新的问题。
12. **法律和隐私合规性:** 确保 App 遵守相关的法律法规和隐私政策,特别是涉及用户数据和隐私的方面。
总之,测试是确保你的 App 产品质量和用户满意度的关键步骤。细致的测试流程和综合的测试策略可以帮助你尽早发现和解决问题,提供优秀的用户体验。
提示词:请针对兼容性测试再做一些补充。
当进行兼容性测试时,你需要关注不同设备、操作系统版本、浏览器以及屏幕尺寸之间的兼容性。以下是一些针对兼容性测试的补充建议:
1. **设备兼容性测试:** 确保你的 App 在各种不同品牌、型号和操作系统的移动设备上都能正常运行。考虑测试不同的手机和平板设备。
2. **操作系统版本兼容性测试:** 测试 App 在不同操作系统版本上的兼容性,包括最新版本和一些较旧的版本。一些用户可能还在使用较老的操作系统。
...省略...
11. **更新和升级兼容性测试:** 当你发布新版本或更新时,确保之前的功能仍然正常,没有引入新的兼容性问题。
12. **错误处理和提示信息:** 在不兼容的设备或环境下,确保 App 能够提供适当的错误提示,引导用户解决问题。
通过兼容性测试,你可以确保你的 App 在不同的环境中都能够提供一致的用户体验,减少用户因设备或环境不同而遇到的问题,从而提高用户满意度。
通过不停的测试以及纠正 ChatGPT 的回复,即可最终获得一个满意的回复。
总结
在学习 AIGC 的过程中,需要打破的往常的认知,不能再将 AI 作为简单的程序看待,反而要把它当作一个“人”来看待。
就像和人沟通一样,需要注意措辞、语气、沟通方式,才能够真正做到学会与 AI 对话,发挥它强大的作用。
后续学习的过程中,还会针对于 prompt 结合一些 api 的开发进行。
相关资料
-
微软 Prompt 教程:https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/prompt-engineering
-
OpenAI 官方指南:https://platform.openai.com/docs/guides/gpt-best-practices
推荐学习
霍格沃兹b站精华视频推荐
【霍格沃兹测试开发】7天软件测试快速入门 带你从零基础/转行/小白/就业/ 测试用例设计实战
【霍格沃兹测试开发】最新版!Web自动化测试从入门到精通/电子商务产品实战/Selenium(上集)
【霍格沃兹测试开发】最新版!Web自动化测试从入门到精通/电子商务产品实战/Selenium(下集)
【霍格沃兹测试开发】明星讲师精心打造最新Python教程软件测试开发从业者必学(上集)
【霍格沃兹测试开发】明星讲师精心打造最新Python教程软件测试开发从业者必学(下集)
【霍格沃兹测试开发】精品课合集/自动化测试/性能测试/精准测试/测试左移/测试右移/人工智能测试
【霍格沃兹测试开发】腾讯/百度/阿里/字节测试专家技术沙龙分享合集/精准化测试/流量回放/Diff
【霍格沃兹测试开发】Pytest用例结构/编写规范 /免费分享
【霍格沃兹测试开发】JMeter实时性能监控平台/数据分析展示系统Grafana/Docker安装
【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?
【霍格沃兹测试开发】面试技巧指导/测试开发能力评级/1V1模拟面试实战/冲刺年薪百万!
【霍格沃兹测试开发】腾讯软件测试能力评级标准/要评级表格的联系我
【霍格沃兹测试开发】Pytest与Allure2一键生成测试报告/测试用例断言/数据驱动/参数化
【霍格沃兹测试开发】App功能测试实战快速入门/adb常用命令/adb压力测试
【霍格沃兹测试开发】阿里/百度/腾讯/滴滴/字节/一线大厂面试真题讲解,卷完拿高薪Offer!
【霍格沃兹测试开发】App自动化测试零基础快速入门/Appium/自动化用例录制/参数配置
【霍格沃兹测试开发】如何用Postman做接口测试,从入门到实战/接口抓包(最新最全教程)
【霍格沃兹测试开发】6小时轻松上手功能测试/软件测试工作流程/测试用例设计/Bug管理
【霍格沃兹测试开发】零基础小白如何使用Postman,从零到一做接口自动化测试/从零基础到进阶到实战
【霍格沃兹测试开发】建议收藏全国CCF测试开发大赛Python接口自动化测试赛前辅导 /项目实战
【软件测试教程】如何根据招聘需求选择最值得入职的软件测试岗位?
【软件测试教程】能进入BAT一线互联网大厂的优质软件测试简历必须包含的7大板块
软件测试工程师简历面试教程攻略--如何写出能进BAT大厂测开岗的优质简历?如何在面试中向HR要到更高薪资?如何拿到更高级别的offer?--持续更新!
【软件测试教程】自动化测试入门-只能二维码登录,自动化测试怎么做?
【软件测试教程】面试现写10个linux命令,写不出来怎么办(上)
【软件测试教程】面试现写10个linux命令,写不出来怎么办(下)
【软件测试教程】自动化测试-比fiddler更好用的抓包工具,你知道吗?
【软件测试教程】自动化测试-如何使用selenium自动发邮件
【软件测试教程】软件测试入门进阶-测试新人的如何学习更容易涨薪
【软件测试教程】Allure一节课学会生成业内最优秀的自动化测试报告
【软件测试教程】自动化测试-selenium grid 搭建分布式测试平台
【软件测试教程】Appium自动化测试-实现企业微信自动打卡
【软件测试教程】自动化测试神器-charles抓包工具的使用
测试开发公开课
【软件测试教程】移动端自动化测试appium电商自动下单流程
【软件测试教程】面试官让你现写10个Linux命令,怎么写?
【软件测试教程】面试加分的移动端自动化测试技巧-高级定位技巧
【软件测试教程】一节课入门BAT级别的测试开发知识点springboot
【软件测试教程】Java测试平台开发入门篇之vue基础语法实战
接口测试入门到实战精通
【软件测试教程】session、cookie、token区别
【软件测试教程】一节课入门BAT级别的测试开发知识点springboot
【软件测试教程】性能测试压测实战-JMeter+InfluxDB+Grafana压测数据展示
【软件测试教程】高级软件测试必备-管理测试环境必备工具Shell
【软件测试教程】软件测试面试实战-面试现写sql查询语句写不出来怎么办
【软件测试教程】零基础学测试如何比别人更快拿到好的offer
【软件测试教程】移动端自动化测试-使用APPIUM实现电商APP下单流程
【软件测试教程】软件测试数据库-面试现写sql查询语句写不出来怎么办
【软件测试教程】高级测试开发教程-Docker一条命令搭建测试流程管理环境
【软件测试教程】软件测试高薪秘籍-零基础学测试如何比别人拿到更高薪的offer
【软件测试教程】自动化测试教程-经典面试题java多线程你熟悉吗?
【软件测试教程】高级软件测试开发-面试官都喜欢问的高级定位原理你知道吗
【软件测试教程】appium移动端自动化测试实现电商app下单流程
【软件测试教程】自动化测试必备-面试官问java如何读写文件,你怎么回答
【软件测试教程】软件测试开发持续集成利器-jenkins快速上手
【软件测试教程】自动化测试-Python与经典面试题手写冒泡排序
【软件测试教程】软件测试数据库专题-面试现写sql查询语句写不出来怎么办
【软件测试教程】软件测试之shell实战项目-实现脚本抽奖小程序
【软件测试教程】软件测试实战项目系列-老板让我自己组建测试流程
【软件测试教程】自动化测试基础教程-如何使用自动化工具投简历
【软件测试教程】帮你搞定自动化测试平台与兼容性测试-stf平台
【软件测试教程】高级性能测试-JMeter+InfluxDB+Grafana压测数据展示
【软件测试教程】Java自动化测试平台开发入门篇之初识springboot
【软件测试教程】web自动化测试框架selenium-UI自动化测试如何绕过二维码登录
【软件测试教程】httprunner使用HttpRunner高效实现接口测试自动化
【软件测试教程】移动端自动化测试-Appium环境搭建及入门
【软件测试教程】自动化测试入门教程-python分支结构和循环结构
【软件测试教程】自动化测试入门教程-python模块与输入输出
【软件测试教程】软件测试零基础自学教程-linux系统 与shell环境准备
【软件测试教程】Java测试平台开发入门篇之vue基础语法实战
【软件测试教程】自动化测试教程-pageobject企业微信实战
【软件测试教程】APP自动化测试-appium原理解析与九宫格解锁
【软件测试教程】接口测试教程-httprunner的基础使用
【软件测试教程】软件测试教程-mysql数据库环境搭建与表结构创建修改操作
【软件测试教程】自动化测试入门教程-seleniumIDE录制以及常用api
【软件测试教程】Python自动化测试入门-python字符串数据结构
【软件测试教程】web自动化测试selenium高级用法-CssSelector
【软件测试教程】移动端app自动化测试-Appium环境搭建及入门
【软件测试教程】接口测试入门实战-基于企业微信api进行接口测试
【软件测试教程】自动化测试selenium高级用法-xpath定位
【软件测试教程】自动化测试必会-python条件、循环表达式
【软件测试教程】接口测试工具之charles高级用法代理抓包+数据篡改
【软件测试教程】Java自动化测试平台初识springboot
【软件测试教程】高级软件测试开发服务集群架构docker+k8s
【软件测试教程】自动化测试平台与兼容性测试-STF多设备管理平台
【测试教程】APP自动化测试 Page Object实战-思寒
【测试教程】Linux三剑客实战--shell经典面试题大解密
【APP自动化测试教程】使用Page Object设计模式提高自动化测试脚本的可维护性
接口测试
【接口测试】rest-assured高级进阶-对接口时间进行断言、导出数据【软件测试】
【接口测试】rest-assured高级进阶-发送json请求【软件测试】
【接口测试】移动端代理抓包-数据拦截与修改实战演练【软件测试】
【接口测试】移动端代理抓包-数据拦截与修改方法教学【软件测试】
【接口测试】HTTP协议组成及客户端模拟请求工具【软件测试】
【接口测试】HTTP协议-代理工具抓包和篡改结果【软件测试】
【软件测试】接口测试入门到实战精通-协议、框架、持续集成、断言、运行与维护-教你如何从零开始搞定接口测试
【软件测试】java语言rest-assured框架进行接口测试实战
【测吧】软件测试开发BAT一线名企面试指南-小白慎点-(霍格沃兹测试学院)
6.【测吧】软件测试开发-研发阶段的质量保证(测试左移)-【7小时入门软件测试】
7.【测吧】测试开发-发布后的质量监控(测试右移)-【7小时入门软件测试】
9.【测吧】企业招人标准--软件测试高薪秘诀-【7小时入门软件测试】
10.【测吧】如何写好简历--软件测试高薪秘诀-【7小时入门软件测试】
11.【测吧】面试技能技巧--软件测试高薪秘籍-【7小时入门软件测试】
12.【测吧】真实案例分析--软件测试高薪秘籍-【7小时入门软件测试】
【测吧】手机浏览器、webview、微信小程序自动化软件测试
Java语法基础
软件测试/测试开发/Java语法基础-list集合-linkList集合
软件测试/测试开发/Java语法基础-集合-Iterator
软件测试/测试开发/Java语法基础-集合-常用方法+数组转换
软件测试/测试开发/Java语法基础-集合-集合声明、元素添加
软件测试/测试开发/Java语法基础-包装类-Integer+自动拆装箱
软件测试/测试开发/Java语法基础-内部类-静态内部类+局部内部类
软件测试/测试开发/Java语法基础-static下-静态方法
软件测试/测试开发/Java语法基础-static上-静态变量
软件测试/测试开发/Java语法基础-常用标准库:输入与输出
软件测试/测试开发/Java语法基础-常用标准库:文件的处理
软件测试/测试开发/Java语法基础-List集合-ArrayList
职业发展面试求职
【软件测试 | 测试开发】能拿高薪的技术简历,究竟有什么秘密?
招聘JD里写要求3年经验,1年经验可不可以面试?【软件测试 | 测试开发】
[史上最强] 软件测试面试技巧,简历撰写,面试题分享(内附答案,建议收藏)
测试行业领域很多,如果换领域会不会影响我的职业发展?【软件测试 | 测试开发】
年龄偏大了,想从技术转管理,应该如何在工作中锻炼自己的管理能力?【软件测试 | 测试开发】
【软件测试 | 测试开发】测试工期被压缩,来不及写测试用例怎么办?
测试投入度多少合适?偶发性的bug要不要投入时间解决?如何高效解决?【软件测试 | 测试开发】
常见面试题:常见的HTTP状态码你知道么?【软件测试 | 测试开发】
浏览页面过程突然变卡顿是什么原因呢?【软件测试 | 测试开发】
如果开发人员认为你提交的 bug 不是一个 bug,这时候你怎么办【软件测试 | 测试开发】
【软件测试 | 测试开发】实际工作中,你是如何开展自动化工作的?
【软件测试 | 测试开发】面试官问我app测试如何查看log,我不会
公开课
软件测试 / 测试开发 / Java web自动化测试公开课
【软件测试 | 测试开发】Python中如何将字符串转化为整形?
【软件测试 | 测试开发】HTTP是什么?SSL和TLS又是什么?
软件测试/测试开发/利用Python与Allure2打造强大的测试报告
什么样的功能适合做自动化测试-new【软件测试 | 测试开发】
如何使用 pytest 控制测试用例的顺序?-修改后【软件测试 | 测试开发】
自动化测试中常用的三种等待方式?他们有什么特点-修改后【软件测试 | 测试开发】
五款好用的App自动化测试工具-修改后【软件测试 | 测试开发】
Android与iOS在app测试时有哪些区别【软件测试 | 测试开发】
get请求和post请求的区别是什么【软件测试 | 测试开发】
【软件测试 | 测试开发】UI自动化中怎样解决页面跳转后元素不生效?
给你一个购物车界面,如何测试-new【软件测试 | 测试开发】
数据库中左连接,右连接,内连接是什么?【软件测试 | 测试开发】
什么是SeleniumGrid?它是做什么用的?【软件测试 | 测试开发】
【软件测试 | 测试开发】Android与iOS在app测试时有哪些区别?
【软件测试 | 测试开发】一节课带你理清接口测试用例设计思路
【软件测试 | 测试开发】pytest_allure接口自动化测试
【软件测试 | 测试开发】接口测试入门 - 关于AI图文识别的接口测试
【软件测试 | 测试开发】开源工具JMeter搭建及源码修改的套路,定制专属JMeter压测工具
【软件测试 | 测试开发】JMeter入门实操,教你使用Grafana生成JMeter图形化压测报告
【软件测试 | 测试开发】Xpath的多种定位方法助你搞定自动化测试
【软件测试 | 测试开发】一小时快速掌握app自动化测试神器Airtest
【软件测试 | 测试开发】一节课带你掌握面试官常问的adb命令
【软件测试 | 测试开发】Appium自动化测试之九宫格解锁实战
【软件测试 | 测试开发】基于图像识别的app自动化测试工具airtest
【软件测试 | 测试开发】一节课入门最火的测试框架pytest
【软件测试 | 测试开发】Python测试框架的高收益体现在哪里
【软件测试 | 测试开发】Pytest +allure 十行代码生成高大上的测试报告
【软件测试 | 测试开发】RobotFramework框架应用
软件测试/测试开发/工程效能与测试平台开发CI、CD、DevOps公开课
【软件测试 | 测试开发】快速构建高校测试平台,推动测试中台化发展
【软件测试 | 测试开发】Docker搭建分布式UI自动化及监控体系
软件测试 / 测试开发/自学/压力/性能/入门到精通/别再用LoadRunner了
【软件测试 | 测试开发】性能测试发现的问题,是开发解决,还是测试解决
软件测试/测试开发/工程效能与测试平台开发CI、CD、DevOps公开课
【软件测试 | 测试开发】Jenkins搭建测试环境及自动发布
【软件测试 | 测试开发】领导要求CICD,还不会搭建环境怎么弄
【软件测试 | 测试开发】如何使用docker完成应用的部署
【软件测试 | 测试开发】Web测试和App兼容性测试需要考虑什么
【软件测试 | 测试开发】BAT等一线大厂如何做APP的稳定性测试
【软件测试 | 测试开发】uiautomator2小而美的app自动化测试工具
【软件测试 | 测试开发】一节课入门 python 接口自动化测试
【软件测试 | 测试开发】python 操作 excel 完成接口测试
【软件测试 | 测试开发】亿级流量App前端性能测试,只需10行代码?
【软件测试 | 测试开发】马斯克为什么要淘汰不常写代码的管理者