LangChain 知识点总结与思考(3) | 豆包MarsCode AI刷题

146 阅读3分钟

在前两篇笔记中,已经先系统地总结了LangChain的全流程操作,在这篇笔记中则针对其中的提示工程部分进行深入探索。虽然最基本的提示使用已经能满足大模型的使用需要,但有很多工作也在提示工程上下了很多功夫,旨在让模型产生更好的表现,其中比较有代表性的是少样本提示(Few Shot Prompt)、思维链(Chain of Thought, CoT)和思维树(Tree of Thoughts, ToT)。

少样本提示

通常情况下,普通用户使用大模型时,都是直接提出问题,让大模型进行解答。若要大模型执行更复杂的任务,可以在提示中加入一定的样例供大模型参考,这样大模型就能有的放矢,生成更准确的回答,这就是少样本提示。所以说,如何通过构建提示来提升大模型的性能也是一件很重要也很有想象力的事情。

LangChain中也已经提供好了FewShotPromptTemplate这一用于生成少样本提示的模板,用户可以组织好样例后将其和其他参数一起传入该模板,就生成了所需的少样本提示。在这一方面,LangChain也算是节省了一定的边缘工作,不需要用户再考虑如何通过措辞将样例和问题、需求等连接起来,而只用思考最核心的内容就可以了。

除此之外,LangChain还提供了多种示例选择器,让用户能够有选择性地指定提供给大模型的样例输入,这类封装好的函数也能满足用户不同的需求,实属方便。其中,语义相似性示例选择器能够根据输入的问题选择最相关的样例加入到提示模板中,这也是通过向量化比较来实现的。

思维链

思维链主要基于的想法是,只要大模型在推理过程中给出中间步骤,一步一步来,就能够提高大模型的生成能力。思维链的实现方式也分为少样本(Few-Shot)和零样本(Zero-Shot)。

少样本就如前所述,给出几个“一步一步推理”的例子,让大模型理解这种推理方式,而零样本则是直接在提示中给出“一步一步推理”的命令,如“让我们一步步的思考”,而这种方法也确实是有效的。仅仅一句话就能提升大模型的生成质量,也不免让人感受到提示工程的神奇和重要,其中关键的是一种推理方式的提出,如思维链的“一步一步推理”的想法。

思维树

顾名思义,思维树算是思维链的一种升级版,它为思维链引入了分支,结合了广度优先搜索或深度优先搜索,从而能够处理更复杂的任务,比如需要进行探索或有多种不同选择路径的任务。思维树不仅给模型指定了具体的思维步骤,也指定了每个步骤后续的候选路径数量,并告诉模型可以保留前几个最优的解决方案。

这样一来,思维树所需要的提示示例也就更多,用户需要在每一个可能的分支点给出一定的选择例子,让模型知道如何进行探索和评估。就我理解而言,模型选择分支的过程其实也就是在对自己前几步的推理进行评估,而不只是从输入一路走到输出,这就给了模型更好解决复杂问题的可能。