随着ChatGPT的火爆,Prompts概念开始被大家所熟知。早期类似如BERT模型的微调都是通过有监督学习的方式进行。但是随着模型越来越大,冻结大部分参数,根据下游任务做微调对模型的影响越来越小。大家开始发现,让下游任务适应预训练模型的训练结果有更好的性能。而ChatGPT的火爆让大家知道,虽然ChatGPT的能力很强,但是需要很好的提问方式才能让它为你所服务。
例如,当我们问ChatGPT如何用Python读取http.Request的body的时候,默认情况它给的内容如下:
但是实际上,我们写代码的时候只是忘了写法,并不是让它解释,或者增加注释。这也会影响效率。那么,上述问题可以在提问之前给ChatGPT做一个设定:
I want you to act as a stack-overflow post. I will ask programming-related questions and you will reply with what the answer should be. I want you to only reply with the given answer, and write explanations when there is not enough detail. do not write explanations. When I need to tell you something in English, I will do so by putting text inside curly brackets {like this}.
这个是告诉ChatGPT不要写注释,也不要过多解释,并且只需要给出一个答案即可。然后提问上述问题,我们可以得到如下结果:
可以看到,ChatGPT返回的结果与刚才相比,最大的区别是代码没有注释,且解释也很简洁。这样做有2个好处:
会提问在基于Prompts调教的预训练大模型中十分重要,合适的提问会让你得到更好的结果。很多时候,NLP的预训练模型比我们想象地能力更强,但前提是你可以将问题转换成适合预训练模型处理的那种方式;
节省成本,包括时间成本和金钱。因为ChatGPT这种接口都是根据tokens收费的,合适的提问设定可以让ChatGPT更加精准的答案,且更少的内容。
推友AiHandbook收集了1000多个提问ChatGPT的模板,免费开放了500多个优质的结果,其内容包括如下:
可以看到,这些模板十分丰富,包含了:
编程
内容创作
博客写作
健康
私信助手
教育
音乐
……