|
用简单提示词完成复杂操作逻辑,提升 ChatGPT 对话体验。
我们先来做一个对比实验。这里咱们让 ChatGPT 执行一个很简单的任务 —— 介绍一下 AI 生成内容(AIGC)。为了能够让 ChatGPT 查询资料,咱们给它提供了 Web Pilot 插件。但是 ChatGPT 并没有主动调用插件,而是直接给出了解释。
看了 ChatGPT 给出的答案,你有什么感觉?这其实就是很多人对 ChatGPT 的诟病 —— 回答四平八稳,可惜言之无物。
ChatGPT 在多数时候,总是只满足于给你提供一个定义作为解释。然后标准的套路,是稍稍展开举出不同形式(或分类),再之后说明优缺点,最后一定要使用传统艺能郑重其事写上一段「总的来说」。ChatGPT 给你介绍的东西里面,往往缺乏细节,基本都是比较空泛的词汇和语句。有的人甚至就通过「总的来说」这个关键词,来判定内容是不是 AI 生成的,还挺准,哈哈。
我们来看看稍加调整之后,ChatGPT 输出的结果。
注意这里提示词完全一样,插件也还是跟刚才一样。不过你看看它如何反复调用插件,生成了多少内容。一页都显示不开,于是我在后面加了一句:「请继续,之前内容未完全显示。」 下面是最终的输出结果。
你可以看到,ChatGPT 给我回溯了 AIGC 的历史,对未来做了展望。把答案中红框部分放大一点,你看得更加清楚。
这次的回答内容更为具体,ChatGPT 还对内容的来源给出说明。这样一来,可以保证 ChatGPT 回答的内容及时准确。还便于你按图索骥,依靠来源链接查询更多的相关内容。
你可能会纳闷儿,ChatGPT 这是撒呓症吗?为什么前后两次回答的质量差那么多?
其实如果你仔细观察,就会发现,唯一的小差别出现在这里。
这个特殊的设置,叫做 Custom Instructions。
OpenAI 推出这个设置还不久。下面是官网的说明。
翻译过来,Custom Instructions 可以叫做「定制指令」,用户可以通过它定制 ChatGPT 的行为。OpenAI 目前还不支持用户利用自己的独有数据去微调 ChatGPT 或者 GPT-4 模型。你要是想让它更加地了解你的需求,和你独特的资料,原来只能在输入对话的同时,提供大量的上下文作为背景。
例如说我原先得把自己的文章先「灌」进去,让 ChatGPT 去学我写作的风格,后面才能要求它按照这种风格来加以润色和转写。
不过你也看到了,在刚才的例子里,你在写提示词的时候,并没有加上任何特殊的设定和说明。
为什么呢?
这是因为,需要提供给 ChatGPT 的上下文,都在 Custom Instructions(定制指令)里进行了设定。
我们来看看 OpenAI 官方给的 Custom Instructions 例子。
这个例子是说,某用户跟ChatGPT说明,自己是一名软件开发者,专门使用 Go 语言。并且他跟ChatGPT指明,希望回应的方式是「找你要代码的时候,你就给我代码就好,不要解释如何工作,偏向最高效的解决方案」。这样可以避免ChatGPT回答的时候给出大量的解释,从而提升工作效率。
我们来看看 OpenAI 给出的例子。这里用户说「给我写一个获取斐波纳契数列中第 N 个数字的代码」。ChatGPT 的回答,就是用 Go 语言代码回应。
你可以在这个测试里,尝试一下把定制指令 Custom Instructions 关掉,明显的效果就是界面变灰了。
同样的提示词,关闭 Custom Instructions 后,你看 ChatGPT 输出的是什么。
我一看结果就乐了 —— 默认输出的代码没有问题,只不过是用 Python 写的。可见 Python 现在是多么的热门。ChatGPT 默认只要用户不提,编程问题一律用 Python 来输出,这让其他语言的使用者情何以堪啊。
如果人家是个 Go 的程序员,那么就只好在一次次和 ChatGPT 对话里,都说明「请用 Go 语言给出答案」,很是麻烦。
现在不用了。只要用户把 Custom Instructions 开启并且按照上面的样例设定,后面所有的返回代码就都按照他的要求,统一用 Go 语言展示。
我们来看看在你自己的 ChatGPT 里如何打开和设置 Custom Instructions。需要说明的是,目前 Custom Instructions 这个新功能只有 Plus 用户可以使用,但是 OpenAI 承诺,后续会推广给全部免费用户。
在 ChatGPT 界面左下角菜单栏 Settings & Beta 里面打开 Beta Features,你会看到 Custom Instructions 项目,开启即可。
开启之后左下角菜单会多出来一项 Custom Instructions,在这里我们需要进行具体的设置。
OpenAI 对 Custom Instructions 做了一些介绍。
我们把它翻译过来(当然是用 ChatGPT),是这么说的:
自定义指令允许您分享任何您希望 ChatGPT 在其回复中考虑的内容。
您的指令将被添加到以后的新对话中,您可以随时编辑或删除它们。
注意:除非您选择退出,否则这些信息将用于改进模型性能,并且还可能与您启用的插件共享 - 请访问我们的帮助中心了解更多信息。
关于第三项,咱们后面会专门讨论到。
我们先看看 Custom Instructions 的设置界面。
设置分为上下两个文本框。
第一个文本框负责告诉 ChatGPT,你想让他知道哪些你的信息。例如你常住在哪儿,做什么工作,有什么兴趣爱好。你喜欢讨论什么样的主题,有什么样的目标等。从前面 Go 程序员的例子里,你不难看出 ChatGPT 越了解你,给出的答案就会越符合你的口味。
第二个文本框,则是直截了当告诉 ChatGPT,你希望它如何回答你的问题。
这里,你可以做出如下设定:
你希望 ChatGPT 的回答更加严肃、正式,还是轻松随意些?
你希望 ChatGPT 答案长一些,还是精炼一些?
你希望 ChatGPT 的回答时刻保持客观中立,还是该有一些倾向性?
……
下面是我设置 Custom Instructions 的例子。
我把自己的工作,还有平时做的一些兴趣爱好都告诉它了。包括我教的深度学习课程、喜欢倒腾效率工具等。特别地,我还说明了自己的人设 —— 高效学习和工作的懒人。写完这句话,我慨叹自己的脸皮真是越来越厚了,哈哈。
之后,我提出了对 ChatGPT 输出的要求。这里的设定限制是 1500 字,可我已经写了 1063 字,着实不少啊。具体内容咱们后面一一讲解,别着急。
咱们首先分析一下,Custom Instructions 究竟起到了什么作用?
我觉得说穿了,就是允许用户用自然语言定义上下文内容,以及让用户灵活设定宏命令,从而大幅提升ChatGPT的理解和工作效率。
定义上下文内容,你前面已经看到了 Go 语言程序员的例子。所以咱们这里着重说一下「宏命令」。
看到这个词儿,你可能有关闭这篇文章的冲动 —— 我用 ChatGPT,不就是不想自己学编程吗?你倒好,介绍了个新词儿,还想悄悄骗我学「宏命令」?
且慢,谁说定义宏命令,一定要用编程的方式?自然语言不行吗?
下面咱们来看看,这里的自然语言「宏命令」是怎么定义出来的。
首先,咱们定义 ChatGPT 输出语言「我喜欢的风格」。
我喜欢的输出风格为「使用简单通俗的词语,不要使用太艰深的词汇。句子要简洁明快,不要太长或太复杂。语气要平和一些,不要带太多个人色彩。要注重条理清晰,每个段落有一个中心思想。不需要有太多细节描写,抓住重点即可。要注意语法准确、避免错误。如果觉得语句生硬,可以加入一些简单的比喻,增加些许生动性。但不要过于花哨。总体来说,要做到言简意赅,容易被普通读者所理解」
这样一来,只要你说一句用「我喜欢的风格」,ChatGPT 自然就知道该怎么调整和润色文字了。这就是一个「宏命令」。你看,咱们确实不用编程吧?
看到上面定义里这里一堆字儿,你可能还是觉得麻烦 —— 是不是我自己也得认真总结我的多篇文章,然后提炼成 ChatGPT 能够理解的风格要求啊?这得鼓捣老半天吧?
我当然不是让你自己搜肠刮肚提炼风格了。咱们有 AI 啊!
可惜 ChatGPT token 限制问题比较明显。目前 GPT-4 最大的 token 数量也就 32K ,而且调用这个模型还特别贵。ChatGPT 16K 版本便宜一些,但是 3.5 版本的逻辑能力比起 GPT-4 差距较大,不建议使用。至于普通的 GPT-4 ,输入加输出一共才允许 3000 多字儿,总结一篇文章风格都不够用,更别提从你的多篇文章提炼自己一贯的风格要素了。
所以,咱们得用 Claude 2 100K 。现在有两种方式:
官方网站,免费;
Poe 免费版,每天可以使用 30 条
100K 对比 4K ,那可是 25 倍的差距啊。想想看, Claude 2 100K 能多分析多少篇文章啊。
我把自己 3、4 篇文章一股脑扔了进去,然后总结出来的,就是你刚才看到的这一段:
使用简单通俗的词语,不要使用太艰深的词汇。句子要简洁明快,不要太长或太复杂。语气要平和一些,不要带太多个人色彩。要注重条理清晰,每个段落有一个中心思想。不需要有太多细节描写,抓住重点即可。要注意语法准确、避免错误。如果觉得语句生硬,可以加入一些简单的比喻,增加些许生动性。但不要过于花哨。总体来说,要做到言简意赅,容易被普通读者所理解
你觉得,Claude 分析得准确吗?😜
定义了风格,下面咱们就可以继续定义「润色」这个「宏命令」:
当我需要你润色文章时,请使用我喜欢的语言风格,并且对输入文稿中可能的拼写或者听写错误大胆纠正,注意中文文章使用中文标点。润色完之后,一定要附带写明都做了哪些修改以及原因
注意这里,咱们直接调用了刚才定义好的「我喜欢的语言风格」。
之后咱们定义「查询」命令。注意 ChatGPT 总会认为自己啥都知道,所以即便你给了它联网插件,你若不提它就按照自己预训练时候看到的老材料,连蒙带猜来回答问题,都不肯上网查一查。这就像很多自信爆棚的人买来新电器,从来都把说明书扔在一旁,直接动手瞎试一样。
ChatGPT 的这种毛病带来的结果,显然与你的期望不符。你肯定希望他查询最新的资料,避免使用过期的信息对吧?所以咱们需要这样定义「查询」:
当我请你查询资料的时候,请查询最新英文资料,然后对你有信心的部分用中文回答。在答案中,对你查询而来的内容要在紧随其后的括号中列出具体的来源链接,方便查验
我觉得这里面「有信心的部分」以及「列出具体的来源链接」非常重要,你可以删去这部分对比看看。
下面咱们定义「解释概念」:
当我请你解释概念的时候,请分别用通俗易懂(大一新生可以听懂)的语言,以及形象生动的例子解释
这样的要求,就尽量避免 ChatGPT 使用空洞专业大词儿来蒙事了。
再之后,咱们定义「审视」:
当我请你审视内容的时候,请你把自己当成一个经验丰富的相关领域专业评论家,仔细审视前面的回答,思考该介绍是否错误或者有需要补充的地方。如有,根据查询资料结果来替换或者添加内容
这简直就是「吾日三省吾身」的活学活用。
你没有写一行代码,复杂执行逻辑的基础预制件就都有了,下面咱们该综合一下了。
我在这里面定义一个新的「宏命令」叫「介绍」:
当我请你介绍某个主题时,请分别就主题中出现的主要概念先联网查询资料,然后一一解释概念。之后查询最新资料,解释该主题的由来、发展、意义和应用。之后审视前面的回答。之后,以我喜爱的写作风格对答案进行润色输出。
你看简短的一段话当中,刚才一系列预先定义的宏命令都被调用激活了。我把它们标注出来,让你看得更加清楚:
当我请你介绍某个主题时,请分别就主题中出现的主要概念先联网查询(注意查询刚才我们定义了)资料,然后一一解释(解释我们也定义了)概念。之后查询最新资料,解释该主题的由来、发展、意义和应用。之后审视(已定义)前面的回答。之后,以我喜爱的写作风格(已定义)对答案进行润色(也已定义)输出。
这样一来你就能明白,为什么同样的一个简短指令,有了 Custom Instructions ,输出结果发生了显著变化吧?
咱们来看看 ChatGPT 实际的执行过程。
首先,你输入这样的一个简短的指令,让 ChatGPT 介绍 AIGC 的概念。
ChatGPT 查阅 Custom Instructions ,立即明白这是在调用「介绍」函数。然后很快把任务规划做好了。
ChatGPT 自己罗列了 1、2、3、4,步骤非常清晰。
下面开干,ChatGPT 首先调用联网插件 Web Pilot 去对 AIGC 的概念进行查询,并且输出结果。
你看,ChatGPT 把来源都标注得一清二楚。
之后,ChatGPT 自动开始调用插件查询 AIGC 的由来、发展、意义和应用。
因为有了明确的指引,你会看到 ChatGPT 的输出不再是文章开头演示的那种空洞结果,而是非常具体。回顾历史的时候从 50 年代开始讲起,提到 80 年代转折点,以及 90 年代和 2000 年代的突破等。你会注意到,ChatGPT 讲解完毕后,依然不忘标记来源。这并非 ChatGPT 开了天目突然变聪明,而是我们在 Custom Instructions 里给出了明确而具体的「宏命令」定义。
只不过,到这里可能是遇到了 token 限制,ChatGPT 需要我们手动输入「请继续」,才能继续对话。
ChatGPT 严格按照它自己的规划来行动,这一步就是要审视回答了。它说前面的回答相当全面,已经有了概念解释、历史发展、意义应用、未来展望,没有必要修改和补充,因此直接润色输出。
不过你会看到,润色这一步只是整合了前面的内容,似乎没有怎么修改遣词造句。原因也不难理解 —— ChatGPT 一上来回答问题时,就是按照咱们预定义的「我喜欢的风格」输出,因此这里没有继续改动内容以适应风格的必要。
从这个样例的过程分析,你能看到一旦 ChatGPT 清楚了解你具体需要它做什么,完成任务的质量就会大有不同。这也是为什么 AutoGPT 和 Code Interpreter 出现时,人们会如此兴奋 —— 我们都希望 AI 变得更聪明,这样我们自己就可以放心大胆做个懒人了,哈哈。
总结本文以前,我们有必要探讨一个问题 ——Custom Instructions 掌握这么多的信息,咱们的隐私会不会受到侵犯?许多小伙伴看到这里,可能都有相同的疑问。
OpenAI 直白了当说明了它如何利用你的敏感信息。
例如你通过 Custom Instructions 告诉 ChatGPT 自己所在城市,它后续调用插件的时候就会用上这个信息,寻找餐厅时会更加聚焦,提升准确度和效率。这当然会让你的生活更加方便。只不过就像我们对大数据应该保持足够警惕一样,你也需要了解这些信息的提供给 ChatGPT,也会给你自己带来的潜在影响。
ChatGPT 会用这些信息改善模型性能,并且部分信息会在调用第三方插件时分享。
请注意下图中红框部分。
Custom Instructions 目前在英国和欧盟尚未可用。为什么?这不由得让我联想起一个词儿 ——GDPR,这是欧盟高标准严格的隐私保护设定。至少在目前,OpenAI 面对 GDPR ,可能还做不到完全合规。
那怎么办?是不是咱们就该放弃 Custom Instructions 了?
当然不要。咱们不能因噎废食。面对风险要小心,但是也不能太过度谨慎保守,否则进步从何而来呢?
我的做法,是对 Custom Instructions 设置输入框的上下两部分,采用不同态度处理。
对于「宏命令」定义,我设置得尽可能详细,写了 1000 多字,因为此处是你对 ChatGPT 提出的要求,并不会过多暴露你的隐私,即便像本文这样公开分享,都不会有太大问题。
但是,我建议你像我一样,对上一部分的输入框,也就是「让 ChatGPT 认识你」这部分,填写时尽量简洁、克制,减少不必要的输入内容。
你或许不怕 ChatGPT 认识你,因为它只是个 AI ,但是你不想让所有的 ChatGPT 第三方插件开发者都对你的偏好了如指掌,对吧?
本文给你介绍了 OpenAI 推出的新设置 Custom Instructions。它可以让 ChatGPT 在今后的对话中持续记忆你的偏好特点和输出要求。你可以通过自然语言定义「宏命令」,综合嵌套调用,从而用简单提示词完成复杂的操作逻辑,帮助你提升 ChatGPT 对话体验,进而提高工作效率。
欢迎你尝试 Custom Instructions 后,把感受写在留言区,咱们一起交流讨论。
祝 AI 问答使用愉快!
如果你觉得本文有用,请点赞。
如果本文可能对你的朋友有帮助,请转发给他们。
欢迎关注我的专栏,以便及时收到后续的更新内容。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 11:04
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社