随着chatGPT的火爆,大家越来越认识到到语言大模型的潜力,国内的类chatGPT的生成式语言大模型(LLM)也如雨后春笋般冒出来。
如今大家都在探索各种prompt的技巧,其实从我个人看来,LLM其实也是一种检索模型,只不过它的检索粒度更加细致,更加语义化,尽管如此,现如今的LLM其实远没有达到人类大脑的理解能力,其生成能力仍然很大程度受到它们的模型机制以及训练预料的数据分布的限制。
下面我就结合使用文心一言编写代码的实践,来谈一下自己的prompt经验。先看具体case:
好了,大家可以看到通过我的promt,文心一言给出的答案还是比较不错的,当然这里不得不提一下文心一言目前在代码生成方面和chatGPT差距还是比较大的,尽管如此,如果有好的prompt,文心一言仍然可以给出相对不错的代码。
下面我就谈一下我在设计出这样的propmt的时候是怎么想的。
- 对答案进行拆分,克服长答案中断的问题。当前文心一言的上下文长度还比较小,在答案内容很多的情况下,经常中断,如果用“继续”等prompt往往不能很好地衔接,尤其是代码相关的内容。所以我的prompt中,明确的要求文心一言将答案拆分成多个部分(
代码包括html、css和javascript三部分,下面请先单独给出html代码,等我再次给出指令时再给出其余代码。
),分步给出答案,每个部分相对独立,这样当一次输出的答案不完整时再补全就比较容易了。 - 要求尽量详细,同时给出专业的术语词汇。比如我结合前端的领域知识给出了
配色
、间距
、布局
等要求。如果没有的话,很可能css样式就被文心一言给忽略了。 - 立人设(
充当一个工作10年以上的资深前端开发工程师
),这个是借鉴的别人经验,我也说不上缘由,但是既然大家都有这样的共识,那就用吧。后面我猜大模型可能会针对这种形式的prompt进行优化训练。