青训营X豆包MarsCode技术训练营第六课|豆包MarsCode Al刷题

46 阅读6分钟

什么是 Chain of Thought

CoT这个概念来源于学术界,是谷歌大脑的Jason Wei等人于2022年在论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models(自我一致性提升了语言模型中的思维链推理能力)》中提出来的概念。它提出,如果生成一系列的中间推理步骤,就能够显著提高大型语言模型进行复杂推理的能力。

Few-Shot CoT

Few-Shot CoT 简单的在提示中提供了一些链式思考示例(Chain-of-Thought Prompting),足够大的语言模型的推理能力就能够被增强。简单说,就是给出一两个示例,然后在示例中写清楚推导的过程。

论文中给出了一个大模型通过思维链做数学题的示例。图左和图右,大模型都读入了OneShot示例,但是图左只给出了答案,而图右则在OneShot示例中给出了解题的具体思路。结果,只给出了答案的模型推理错误,而给出解题思路后,同一个模型生成了正确的答案。

在三种大型语言模型的实验中,CoT在一系列的算术、常识和符号推理任务中都提高了性能。在GSM8K数学问题基准测试中,通过CoT指导后,大模型的表现可以达到当时最先进的准确性。

CoT从概念上非常容易理解,从应用上非常容易操作。虽然简单,但这种思想可以给我们的开发过程带来很多启发。

比如,假设我们正在开发一个AI花店助手,它的任务是帮助用户选择他们想要的花,并生成一个销售列表。在这个过程中,我们可以使用CoT来引导AI的推理过程。

? 整体指导:你需要跟着下面的步骤一步步的推理。

  1. 问题理解:首先,AI需要理解用户的需求。例如,用户可能会说:“今天要参加朋友的生日Party,想送束花祝福她。”我们可以给AI一个提示模板,里面包含示例:“遇到XX问题,我先看自己有 没有 *相关知识,有的话,就提供答案;没有,就调用工具搜索,有了知识后再试图解决。 *”—— 这就是给了AI一个思维链的示例。  
  2. 信息搜索:接下来,AI需要搜索相关信息。例如,它可能需要查找哪些花最适合生日派对。  
  3. 决策制定:基于收集到的信息,AI需要制定一个决策。我们可以通过思维链让他详细思考决策的流程,先做什么后做什么。例如,我们可以给它一个示例:“*遇到生日派对送花的情况,我先考虑用户的需求,然后查看鲜花的库存,最后决定推荐一些玫瑰和百合,因为这些花通常适合生日派对。 *”—— 那么有了生日派对这个场景做示例,大模型就能把类似的思维流程运用到其它场景。  
  4. 生成销售列表:最后,AI使用OutputParser生成一个销售列表,包括推荐的花和价格。

在这个过程中,整体上,思维链引导AI从理解问题,到搜索信息,再到制定决策,最后生成销售列表。这种方法不仅使AI的推理过程更加清晰,也使得生成的销售列表更加符合用户的需求。具体到每一个步骤,也可以通过思维链来设计更为详细的提示模板,来引导模型每一步的思考都遵循清晰准确的逻辑。

其实LangChain的核心组件Agent的本质就是进行好的提示工程,并大量地使用预置的FewShot和CoT模板。这个在之后的课程学习中我们会理解得越来越透彻。

Zero-Shot CoT

下面的这两个CoT提示模板的例子,来自于Google Research和东京大学的论文《大语言模型是零样本推理者》。

图中的(d)示例非常非常有意思,在Zero-Shot CoT中,你只要简单地告诉模型“让我们一步步的思考(Let's think step by step) ”,模型就能够给出更好的答案!

哈哈哈,这样太神奇了吧,这不由得让我联想起最简单的提示工程,角色设定——模型回答之前,先告诉它“你是一个很有经验的XX专家”,模型应该就会在开始胡说八道之前三思。

简单总结一下:Few-Shot CoT,指的就是在带有示例的提示过程中,加入思考的步骤,从而引导模型给出更好的结果。而Zero-Shot CoT,就是直接告诉模型要一步一步地思考,慢慢地推理。

Chain of Thought 实战

现在,就让我带着你完成一次Chain of Thought的LangChain应用开发实战。

项目需求:在这个示例中,你正在开发一个AI运营助手,我们要展示AI如何根据用户的需求推理和生成答案。然后,AI根据当前的用户请求进行推理,提供了具体的花卉建议并解释了为什么选择这些建议。

在这个过程中,AI需要理解客户的需求之后,按部就班的思考,然后给出最符合逻辑的回答。

CoT的模板设计

针对这个聊天机器人的需求,我设计了下面这样的思维链模板。

作为一个为花店电商公司工作的AI助手,我的目标是帮助客户根据他们的喜好做出明智的决定。  

我会按部就班的思考,先理解客户的需求,然后考虑各种鲜花的涵义,最后根据这个需求,给出我的推荐。  

同时,我也会向客户解释我这样推荐的原因。  

示例 1:

人类:我想找一种象征爱情的花。

AI:首先,我理解你正在寻找一种可以象征爱情的花。在许多文化中,红玫瑰被视为爱情的象征,这是因为它们的红色通常与热情和浓烈的感情联系在一起。因此,考虑到这一点,我会推荐红玫瑰。红玫瑰不仅能够象征爱情,同时也可以传达出强烈的感情,这是你在寻找的。  

示例 2:

人类:我想要一些独特和奇特的花。

AI:从你的需求中,我理解你想要的是独一无二和引人注目的花朵。兰花是一种非常独特并且颜色鲜艳的花,它们在世界上的许多地方都被视为奢侈品和美的象征。因此,我建议你考虑兰花。选择兰花可以满足你对独特和奇特的要求,而且,兰花的美丽和它们所代表的力量和奢侈也可能会吸引你。

AI的模板开始于对其角色的阐述,并给出了一些先前的对话示例(Few-Shot Learning)来帮助AI理解如何处理这种类型的请求。这些示例展示了AI如何根据思维链进行思考,给出深思熟虑之后的答案。