“技术的核心只有两点,一个是把技术做好,一个是把技术用好”
在之前的文章中曾经说过,预训练和微调是为了打造一个更好用的大模型,而提示学习是为了更好的使用大模型,激发大模型的潜能。
而基于提示学习发展起来的提示词工程,也就是怎么写一个更好的提示词;网络上已经有很多经过检验的提示词框架,比如APE,BROKE等。
提示词工程是一门基于经验的科学,因此没有最好的提示词框架,只有不同任务下最合适的提示词框架。
而经过研究发现了提示词更加高级的玩法——样本提示和思维链。
样本提示
样本提示包括Zero-Shot,One-Shot,Few-Shot等多种形式,简单来说就是在提示词中加入一些例子。
比如
“whatpu” 是一种生长在坦桑尼亚的小型毛茸茸的动物。使用 whatpu 这个词的一个例子是:我们在非洲旅行,看到了这些非常可爱的 whatpu。--举例“farduddle” 的意思是快速跳跃。使用 farduddle 这个词的一个例子是:
这就是一个少样本提示的例子,上部分是例子,浅绿色部分就是大模型的回答。
根据不同的大模型和任务类型,可以适当的给出一个到多个例子,而我们平常直接问大模型的问题属于零样本提示,也就是不给出案例,直接让大模型回答。
因此样本提示就类似于我们人类平常讨论问题,可能对方对你的问题不是很了解,这时我们下意识的反应就是,我给你举个例子。
这就是样本提示的作用,在使用样本提示的过程中,可以适当的增加多个样本,Few-Shot中的few就是大于等于1的意思。
以下就是一个给出三个例子的少样本提示:
思维链
思维链是为了解决复杂问题而推出的一种方式,就是在提示词中加入思考过程。
举例如下:
这个是没用思维链的方式
问:小明有三个苹果,他的妈妈又给他买了两个苹果,小明吃掉了一个,小明还剩几个苹果?
答:4个
这个是使用思维链的方式
问:小明有三个苹果,他的妈妈又给他买了两个苹果,小明吃掉了一个,还剩几个苹果?
答:小明起初有三个苹果,他的妈妈又买了两个,之后又吃掉一个,因此3 + 2 - 1 = 4,所以小明有四个苹果。
问:小丽有三个网球,她又购买了两罐网球,每罐三个,这时小丽有几个网球?
在某些大模型中,如果不使用思维链的方式,关于小丽的问题,可能就会回答错误,而使用了思维链可以提升大模型回答的准确率,当然也不能完全避免回答错误的情况。
这里只是举个简单的例子,如果我们在执行更加复杂的任务时,使用思维链可以大大提升大模型的输出质量。特别是在Agent中,Agent利用思维链来优化大模型的推理规划能力和过程,这样就可以让Agent完成更加复杂的任务。
样本提示与思维链结合
样本提示和思维链是两种不同的优化大模型表现能力的方式,一个是给出案例,一个是逐步拆解,但它们的最终目的都是为了更好的使用大模型。
因此,在实际的应用过程中处理复杂任务时,一般会把样本提示与思维链两者相结合,即给出案例,又给出思考过程。
如下图所示:
在一些问答系统中,使用样本提示+思维链的方式能够更好的回答问题,以及做一些复杂任务的拆解。
而如果把样本提示+思维链的方式,再使用大模型的function call的方式来实现Agent,就可以让大模型完成一些更加复杂的任务,比如使用思维链做完规划之后,调用工具来完成每一步的任务。
通过这样的方式,就可以把大模型与具体的垂直领域相结合,创建垂直领域的智能体。
大模型技术的核心只有两点,一是怎么把模型做的更好,更强大;二是怎么用好大模型,让大模型解决具体领域的问题。
思维链和样本学习是解决两种不同问题而提出的技术,而且可以把两者结合起来,使得模型表现的更好。
原文链接: