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