我们来继续看下如何使用思维链,也就是CoT(Chain of Thought)
其概念可以囊括为:如果生成一系列的中间推理步骤,就能够显著提高大型语言模型进行复杂推理的能力。
这里我们以一个示例举例
如果我们像图右一样给出了解题的具体思路,就可以帮助模型生成了正确的答案。
再比如假设我们正在开发一个AI花店助手,它的任务是帮助用户选择他们想要的花
那么我们可以首先给AI助手一个示例
遇到生日派对送花的情况,我先考虑玫瑰和百合两种花朵,然后查看鲜花的库存,最后根据库存决定推荐哪种花。
而这个过程的加入,让AI的推理过程更加清晰,也使得生成的销售列表更加符合用户的需求。
在LangChain之中,Agent的核心概念就是进行提示工程,使用COT能有效地帮助我们。
在正式讲解COT之前,我们还可以简单说下其中Zero-Shot CoT的概念
比如上面Zero-shot-Cot的讲解,其实也没做什么新的设定,就是告诉了模型,你要一步步的来,就能得到好的答案。
OK,回到COT的使用,在代码之前,我们先梳理下整体思维逻辑
- 你是一个为花店电商公司工作的AI助手,你的目标是帮助客户根据他们的喜好做出明智的决定。
- 给与一些示例:
我会按部就班的思考,先理解客户的需求,然后考虑各种鲜花的涵义,最后根据这个需求,给出我的推荐。
同时,我也会向客户解释我这样推荐的原因。 示例 1: 人类:我想找一种象征爱情的花。 AI:首先,我理解你正在寻找一种可以象征爱情的花。在许多文化中,红玫瑰被视为爱情的象征,这是因为它们的红色通常与热情和浓烈的感情联系在一起。因此,考虑到这一点,我会推荐红玫瑰。红玫瑰不仅能够象征爱情,同时也可以传达出强烈的感情,这是你在寻找的。 示例 2: 人类:我想要一些独特和奇特的花。 AI:从你的需求中,我理解你想要的是独一无二和引人注目的花朵。兰花是一种非常独特并且颜色鲜艳的花,它们在世界上的许多地方都被视为奢侈品和美的象征。因此,我建议你考虑兰花。选择兰花可以满足你对独特和奇特的要求,而且,兰花的美丽和它们所代表的力量和奢侈也可能会吸引你。 |
与此同时,我们先创建一个SystemMessagePromptTemplate声明AI角色的定位
system_prompt_role = SystemMessagePromptTemplate.from_template(role_template)
然后是一个示例
system_prompt_cot = SystemMessagePromptTemplate.from_template(cot_template)
之后就是用户的输入
human_template = “{human_input}”
human_prompt = HumanMessagePromptTemplate.from_template(human_template)
然后利用Chat模型的模板组合为一个提示
chat_prompt = ChatPromptTemplate.from_messages([system_prompt_role, system_prompt_cot, human_prompt])
这样就可以进行相关的使用
prompt = chat_prompt.format_prompt(human_input=”我想为我的女朋友购买一些花。她喜欢粉色和紫色。你有什么建议吗?”).to_messages()
在这种提示下,我们就可以让AI模型一步步的进行提示搜索。
在之后,就是Tree of Thought-思维树(ToT)框架
ToT是一种解决复杂问题的框架,它在需要多步骤推理的任务中,引导语言模型搜索一棵由连贯的语言序列(解决问题的中间步骤)组成的思维树。
其如果要解决一个数学推理任务,先把它分解为3个思维步骤,并为每个步骤提出多个方案,并保留最优的5个候选方案。然后在多条思维路径中搜寻最优的解决方案。
在这种模式下的模型,可以进一步提高搜索策略的性能,并让模型在解决新问题或面临未知情况时有更好的表现。
比如我们提供一个鲜花运营方面的示例。
假设一个顾客在鲜花网站上询问:“我想为我的妻子购买一束鲜花,但我不确定应该选择哪种鲜花。她喜欢淡雅的颜色和花香。”
AI(使用ToT框架):
思维步骤1:理解顾客的需求。
顾客想为妻子购买鲜花。
顾客的妻子喜欢淡雅的颜色和花香。
思维步骤2:考虑可能的鲜花选择。
候选1:百合,因为它有淡雅的颜色和花香。
候选2:玫瑰,选择淡粉色或白色,它们通常有花香。
候选3:紫罗兰,它有淡雅的颜色和花香。
候选4:桔梗,它的颜色淡雅但不一定有花香。
候选5:康乃馨,选择淡色系列,它们有淡雅的花香。
思维步骤3:根据顾客的需求筛选最佳选择。
百合和紫罗兰都符合顾客的需求,因为它们都有淡雅的颜色和花香。
淡粉色或白色的玫瑰也是一个不错的选择。
桔梗可能不是最佳选择,因为它可能没有花香。
康乃馨是一个可考虑的选择。
思维步骤4:给出建议。
“考虑到您妻子喜欢淡雅的颜色和花香,我建议您可以选择百合或紫罗兰。淡粉色或白色的玫瑰也是一个很好的选择。希望这些建议能帮助您做出决策!”
这就是ToT的基本使用方法。
那么总结一下,我们介绍了Chain of Thought(CoT,即“思维链”)和Tree of Thoughts(ToT,即“思维树”)这两个概念
CoT是通过给与一些中间推理过程,来增强模型的推理能力
ToT则是进一步扩展了CoT思想,利用连贯的语言序列来组成思维树来解决复杂问题。