北京平台网站建设公司,如何引流被动加好友,站内seo怎么做,建工之家什么是 Chain of Thought
CoT这个概念来源于学术界#xff0c;是谷歌大脑的Jason Wei等人于2022年在论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models#xff08;自我一致性提升了语言模型中的思维链推理能力#xff09;》中提出来的概念。它…
什么是 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足够大的语言模型的推理能力就能够被增强。
假设我们正在开发一个AI花店助手它的任务是帮助用户选择他们想要的花并生成一个销售列表。在这个过程中我们可以使用CoT来引导AI的推理过程。
问题理解首先AI需要理解用户的需求。例如用户可能会说“今天要参加朋友的生日Party想送束花祝福她。”我们可以给AI一个提示模板里面包含示例“遇到XX问题我先看自己有没有相关知识有的话就提供答案没有就调用工具搜索有了知识后再试图解决。”—— 这就是给了AI一个思维链的示例。信息搜索接下来AI需要搜索相关信息。例如它可能需要查找哪些花最适合生日派对。决策制定基于收集到的信息AI需要制定一个决策。我们可以通过思维链让他详细思考决策的流程先做什么后做什么。例如我们可以给它一个示例“遇到生日派对送花的情况我先考虑用户的需求然后查看鲜花的库存最后决定推荐一些玫瑰和百合因为这些花通常适合生日派对。”—— 那么有了生日派对这个场景做示例大模型就能把类似的思维流程运用到其它场景生成销售列表最后AI使用OutputParser生成一个销售列表包括推荐的花和价格。
Zero-Shot CoT
下面的这两个CoT提示模板的例子来自于Google Research和东京大学的论文《大语言模型是零样本推理者》。在Zero-Shot CoT中你只要简单地告诉模型“让我们一步步的思考Let’s think step by step” Chain of Thought 实战
项目需求在这个示例中你正在开发一个AI运营助手我们要展示AI如何根据用户的需求推理和生成答案。然后AI根据当前的用户请求进行推理提供了具体的花卉建议并解释了为什么选择这些建议。
CoT的模板设计
针对这个聊天机器人的需求我设计了下面这样的思维链模板。
作为一个为花店电商公司工作的AI助手我的目标是帮助客户根据他们的喜好做出明智的决定。我会按部就班的思考先理解客户的需求然后考虑各种鲜花的涵义最后根据这个需求给出我的推荐。同时我也会向客户解释我这样推荐的原因。
示例 1人类我想找一种象征爱情的花。 AI首先我理解你正在寻找一种可以象征爱情的花。在许多文化中红玫瑰被视为爱情的象征这是因为它们的红色通常与热情和浓烈的感情联系在一起。因此考虑到这一点我会推荐红玫瑰。红玫瑰不仅能够象征爱情同时也可以传达出强烈的感情这是你在寻找的
# 设置环境变量和API密钥
import os
os.environ[OPENAI_API_KEY] 你的OpenAI API Key# 创建聊天模型
from langchain.chat_models import ChatOpenAI
llm ChatOpenAI(temperature0)# 设定 AI 的角色和目标
role_template 你是一个为花店电商公司工作的AI助手, 你的目标是帮助客户根据他们的喜好做出明智的决定# CoT 的关键部分AI 解释推理过程并加入一些先前的对话示例Few-Shot Learning
cot_template
作为一个为花店电商公司工作的AI助手我的目标是帮助客户根据他们的喜好做出明智的决定。 我会按部就班的思考先理解客户的需求然后考虑各种鲜花的涵义最后根据这个需求给出我的推荐。
同时我也会向客户解释我这样推荐的原因。示例 1:人类我想找一种象征爱情的花。AI首先我理解你正在寻找一种可以象征爱情的花。在许多文化中红玫瑰被视为爱情的象征这是因为它们的红色通常与热情和浓烈的感情联系在一起。因此考虑到这一点我会推荐红玫瑰。红玫瑰不仅能够象征爱情同时也可以传达出强烈的感情这是你在寻找的。示例 2:人类我想要一些独特和奇特的花。AI从你的需求中我理解你想要的是独一无二和引人注目的花朵。兰花是一种非常独特并且颜色鲜艳的花它们在世界上的许多地方都被视为奢侈品和美的象征。因此我建议你考虑兰花。选择兰花可以满足你对独特和奇特的要求而且兰花的美丽和它们所代表的力量和奢侈也可能会吸引你。from langchain.prompts import ChatPromptTemplate, HumanMessagePromptTemplate, SystemMessagePromptTemplate
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_prompt ChatPromptTemplate.from_messages([system_prompt_role, system_prompt_cot, human_prompt])prompt chat_prompt.format_prompt(human_input我想为我的女朋友购买一些花。她喜欢粉色和紫色。你有什么建议吗?).to_messages()# 接收用户的询问返回回答结果
response llm(prompt)
print(response)关键在于system_prompt_role, system_prompt_cot。还可以设置进去
Tree of Thought
CoT这种思想为大模型带来了更好的答案然而对于需要探索或预判战略的复杂任务来说传统或简单的提示技巧是不够的。基于CoT的思想Yao和Long等人几乎在同一时间在论文《思维之树使用大型语言模型进行深思熟虑的问题解决》和《大型语言模型指导的思维之树》中进一步提出了思维树Tree of ThoughtsToT框架该框架基于思维链提示进行了总结引导语言模型探索把思维作为中间步骤来解决通用问题。ToT是一种解决复杂问题的框架它在需要多步骤推理的任务中引导语言模型搜索一棵由连贯的语言序列解决问题的中间步骤组成的思维树而不是简单地生成一个答案。ToT框架的核心思想是让模型生成和评估其思维的能力并将其与搜索算法如广度优先搜索和深度优先搜索结合起来进行系统性地探索和验证。
应用ToT的思想给出一个鲜花运营方面的示例假设一个顾客在鲜花网站上询问“我想为我的妻子购买一束鲜花但我不确定应该选择哪种鲜花。她喜欢淡雅的颜色和花香。” AI使用ToT框架 思维步骤1理解顾客的需求。 顾客想为妻子购买鲜花。 顾客的妻子喜欢淡雅的颜色和花香。
思维步骤2考虑可能的鲜花选择。 候选1百合因为它有淡雅的颜色和花香。 候选2玫瑰选择淡粉色或白色它们通常有花香。 候选3紫罗兰它有淡雅的颜色和花香。 候选4桔梗它的颜色淡雅但不一定有花香。 候选5康乃馨选择淡色系列它们有淡雅的花香。 思维步骤3根据顾客的需求筛选最佳选择。 百合和紫罗兰都符合顾客的需求因为它们都有淡雅的颜色和花香。 淡粉色或白色的玫瑰也是一个不错的选择。 桔梗可能不是最佳选择因为它可能没有花香。 康乃馨是一个可考虑的选择
思维步骤4给出建议。 “考虑到您妻子喜欢淡雅的颜色和花香我建议您可以选择百合或紫罗兰。淡粉色或白色的玫瑰也是一个很好的选择。希望这些建议能帮助您做出决策”这个例子可以作为FewShot示例之一传递给模型让他学着实现ToT。 总结
CoT的核心思想是通过生成一系列中间推理步骤来增强模型的推理能力。在Few-Shot CoT和Zero-Shot CoT两种应用方法中前者通过提供链式思考示例传递给模型后者则直接告诉模型进行要按部就班的推理。ToT进一步扩展了CoT的思想通过搜索由连贯的语言序列组成的思维树来解决复杂问题。我通过一个鲜花选择的实例展示了如何在实际应用中使用ToT框架。有朋友在GitHub上开了一个 Repo专门给大家介绍ToT的应用方法和实例他们还给出了几个非常简单的通用ToT提示语就像下面这样。