首页 > 其他分享 >你要了解的2种AI思维链

你要了解的2种AI思维链

时间:2024-08-15 13:54:17浏览次数:10  
标签:思维 AI agent 2024 了解 langchain executor import tools

我们使用的AI助手,一般是经过了预训练和微调这2个步骤,尽管训练出的模型能回答许多通用类问题,但是在遇到复杂问题时还是束手无策。

直到有人提出了思维链方式,才解决了模型在面对复杂问题时的推理能力。

1、什么是思维链

思维链(Chain of Thought, CoT)是用于提高AI模型推理能力的方式。其核心原理就8个字:化繁为简、逐个击破

思维链的工作原理是,模拟人类思考问题的过程,通过将复杂的问题逐步分解,然后逐个向前解决这些简单问题,从而得出最终答案。

2、实现智能体的方式

智能体(AI Agent)用于更加智能 更加强调推理的场景,思维链便是用于AI Agent的场景,在这种场景下可以发挥它的优势。

在AI Agent领域里,常见的实现思维链的机制有2种,Plan-and-Executor机制和ReAct机制。

2.1、Plan-and-Executor机制

Plan-and-Executor机制是分离规划 和 执行这2个环节。它将问题解决过程分为两个阶段:规划和执行

规划阶段:

在这个阶段,主要是在智能体里分析问题,制定一个详细的解决方案计划。这个阶段通常会涉及到大量的计算过程,用来确定出最优的行动计划。规划的结果是:输出一个具体的行动计划

执行阶段:

在这个阶段,智能体按照规划阶段生成的行动计划去逐步执行每个步骤。并在执行过程中监控和调整,确保计划的顺利执行。

优点

这种机制的特点就是规划和执行的分离,这种分离可以使每个阶段更加专注于当前任务,从而提高效率。适用于需要复杂度较高,需要提前做复杂规划的任务。

缺点

在执行过程中,可能存在不确定因素,这种方式因为是提前规划好的,所以可能不适应变化,需要频繁调整计划。

举例说明Plan-and-Executor步骤

比如,我想知道2024年周杰伦最新的演唱会是时间和地点是什么,通过Plan-and-Executor机制,会被拆解成以下步骤:

计划阶段:

1. 在搜索引擎上查找“2024年周杰伦最新演唱会时间和地点”。
2. 查看官方网站或可信的新闻网站的相关信息。
3. 汇总并记录演唱会的时间和地点。

执行阶段:

1. 在搜索引擎上查找“2024年周杰伦最新演唱会时间和地点”。
   - 结果:找到了一些相关的网页链接。
2. 查看官方网站或可信的新闻网站的相关信息。
   - 结果:在周杰伦的官方网站上找到了2024年最新演唱会的时间和地点。
3. 汇总并记录演唱会的时间和地点。
   - 结果:2024年周杰伦最新演唱会将在2024年5月20日于北京举行。

2.2、ReAct机制

ReAct机制是一种将推理(Reasoning)和行动(Action)结合在一起的实现方式,同时还引入了观察(Observation)环节,在每次执行(Action)之后,都会先观察(Observation)当前现状,然后再进行下一步的推理(Reason)。

它强调的是在感知环境变化后,立即做出反应并采取行动,而不是先制定一个详细的计划。

优点

适应性强,能够快速响应环境变化。更适合动态和不确定性高的环境。

缺点

由于没有预先规划,可能在复杂任务中效率较低,每一步都在执行:观察、推理、行动。

举例说明ReAct步骤

比如,我要知道2024年周杰伦最新的演唱会是时间和地点是什么,通过ReAct机制,会被拆解成以下步骤:

推理1:用户想知道2024年周杰伦最新的演唱会是时间和地点是什么,需要查找最新的信息。
行动1:调用Google的搜索API进行搜索。
观察1:搜索结束,搜索的结果中出现一些关于《2024年周杰伦最新的演唱会》的网页信息。

推理2:搜索出来的网页较多,大概浏览前6个网页的具体内容。
行动2:点击第一个网页,开始浏览。
观察2:浏览结束,浏览的网页内容提及到了2024年周杰伦最新的演唱会信息。

推理3:针对网页的内容进行,问题的总结。
结果:将最终的答案输出给用户。

3、代码示例

3.1、Plan-and-Executor机制

LangChain框架已经实现了Plan-and-Executor机制,三行代码即可调用:

核心代码:

# 加载计划
planner = load_chat_planner(model)
# 加载执行器
executor = load_agent_executor(model, tools, verbose=True)
# 加载代理
agent = PlanAndExecute(planner=planner, executor=executor, verbose=True)

完整代码:

from langchain_openai import ChatOpenAI
from langchain_experimental.plan_and_execute import (
    PlanAndExecute, load_agent_executor, load_chat_planner
)
from langchain.tools import BaseTool
from langchain_experimental.tools import PythonREPLTool

model = ChatOpenAI(
    model="gpt-3.5-turbo",
    openai_api_key="sk-xxxxxx",
    openai_api_base="https://api.xiaoai.plus/v1",
)

# 定义工具
class SumNumberTool(BaseTool):
    name = "数字相加计算工具"
    description = "当你被要求计算2个数字相加时,使用此工具"

    def _run(self, a, b):
        return a["title"] + b["title"]

# 加入到工具合集
tools = [SumNumberTool()]

# 加载计划
planner = load_chat_planner(model)
# 加载执行器
executor = load_agent_executor(model, tools, verbose=True)
# 加载代理
agent = PlanAndExecute(planner=planner, executor=executor, verbose=True)

agent.run("你帮我算下 3.941592623412424 + 4.3434532535353的结果")

执行过程:

执行过程见下图,从过程中,我们可以看出,Agent确实是先规划了N个steps,然后一步步执行step

3.2、ReAct机制

LangChain框架已经实现了ReAct机制,两行代码即可调用:

核心代码:

# 使用reAct的提示词
prompt = hub.pull("hwchase17/structured-chat-agent")
# 创建Agent
agent = create_structured_chat_agent(llm=model, tools=tools, prompt=prompt)

完整代码:

from langchain import hub
from langchain.agents import create_structured_chat_agent, AgentExecutor, tool
from langchain.memory import ConversationBufferMemory
from langchain.schema import HumanMessage
from langchain.tools import BaseTool
from langchain_openai import ChatOpenAI

model = ChatOpenAI(
    model="gpt-3.5-turbo",
    openai_api_key="sk-xxxxxx",
    openai_api_base="https://api.xiaoai.plus/v1",
)

# 定义工具
class SumNumberTool(BaseTool):
    name = "数字相加计算工具"
    description = "当你被要求计算2个数字相加时,使用此工具"

    def _run(self, a, b):
        return a["title"] + b["title"]

# 加入到工具合集
tools = [SumNumberTool()]

# 使用reAct的提示词
prompt = hub.pull("hwchase17/structured-chat-agent")

# 创建Agent
agent = create_structured_chat_agent(llm=model, tools=tools, prompt=prompt)

# 创建记忆组件
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

# 创建Agent执行器
agent_executor = AgentExecutor.from_agent_and_tools(
    agent=agent, tools=tools, memory=memory, verbose=True, handle_parsing_errors=True
)

agent_executor.invoke({"input": "你帮我算下 3.941592623412424 + 4.3434532535353的结果"})

执行过程:

ReAct机制的执行过程,读者自行尝试。与Plan-and-Executor相比,ReAct机制少了规划steps这个环节。

4、完结

本篇主要聊了思维链、AI Agent场景下思维链的2种实现机制、代码示例,具体选择取决于应用场景和问题的复杂性。希望对你有帮助!

本篇完结!欢迎 关注、加微信(yclxiao)交流、全网可搜(程序员半支烟)

原文链接:https://mp.weixin.qq.com/s/MTh0x9RYwnLNvaV_U1jOcQ

最近推出了知识星球开发者AI加持》,一个AI应用开发专栏,旨在助力开发者在这个艰难和变革的时代多一技傍身。还有1V1技术咨询,扫清职业发展和技术道路上的障碍。早鸟价9元,加微信(yclxiao)咨询。

标签:思维,AI,agent,2024,了解,langchain,executor,import,tools
From: https://www.cnblogs.com/mangod/p/18360771

相关文章

  • 容器引擎说明——Contianerd与Docker的区别以及Containerd换源操作
    容器引擎是Kubernetes最重要的组件之一,负责管理镜像和容器的生命周期。Kubelet通过ContainerRuntimeInterface(CRI)与容器引擎交互,以管理镜像和容器。表1容器引擎对比Containerd和Docker组件常用命令对比表2镜像相关功能表3容器相关功能表4Pod相关功能说明:Cont......
  • SLF4J: Class path contains multiple SLF4J bindings. 运行报错 表示在您的应用程序
    java使用SLF4J时出现下面的错误,是因为项目中使用了多个SLF4J的类库SLF4J:ClasspathcontainsmultipleSLF4Jbindings.SLF4J:Foundbindingin[jar:file:/D:/%e5%bd%93%e5%89%8d%e5%b7%a5%e4%bd%9c/SipPBX%e8%ae%af%e6%97%b6/JoinCallOMCC/JoinCallOMCC/out/artifacts/......
  • 为您的网站或博客添加AI:智能优化提升用户体验
    前提一个网站或者一个博客可以下载插件安装插件插件部署创建工具把插件安装到WordPress并启用。填写回调密钥,回调密钥是随便写的,主要用于认证。到LeaflowAmber中点击左侧菜单中的登录来登录LeaflowUserLand账户。登录后点击左侧 工具,然后 新建一个工具,工具名称你可......
  • Android笔试面试题AI答之Kotlin(6)
    文章目录24.以下代码执行的结果是什么?25.解释一下下述Kotlin代码有什么问题?26.如何在Kotlin中创建常量?示例注意事项总结27.Koltin可以互换使用IntArray和Kotlin中的Array吗?IntArrayArray<Int>互换使用从IntArray到Array<Int>从Array<Int>到IntArra......
  • 新工种,AI商业化变现思路
    本文由ChatMoney团队出品AI变现,你我都能成为创收高手!不必是科技大咖,也无需深厚背景,让我们一起探索Chatmoney全能知识库AI的奥秘,轻松步入收益之门!想象一下,你的智慧和创意通过ChatmoneyAI技术转化为可观的收益,这一切并非遥不可及。现在,就让我们揭开ChatmoneyAI变现的神秘面......
  • AI大模型零基础入门学习路线(非常详细)从入门到精通,看这篇就 够了
    学习AI大模型从零基础入门到精通是一个循序渐进的过程,涉及到理论知识、编程技能和实践经验。下面是一份详细的指南,帮助你从头开始学习并逐步掌握AI大模型的构建与应用。第一阶段(10天):初阶应用该阶段让大家对大模型AI有一个最前沿的认识,对大模型AI的理解超过95%的人,可......
  • 了解PD取电快充协议芯片
    快充协议芯片作为现代电子设备充电技术的关键部分,随着智能手机,平板电脑等携便电子的普及,人们对充电效率要求也越来越高,PD快充协议芯片就能实现人们对充电效率的要求。快充充电协议芯片不仅能达到快速充电,同时还能保护电池在充电的同时不被损坏。XSP04芯片它具有过压保护(OVP)......
  • 自动化科学发现的未来:AI科学家的崛起
    引言近年来,人工智能的迅猛发展为科学研究带来了巨大的变革。尤其是在人工智能领域,研究人员一直在探索如何利用AI技术来加速科学发现的过程。本文探讨了一个新兴的概念——AI科学家,它以全面自动化的方式执行科学研究,推动科学发现的开放性和无穷创造力。通过结合大型语言模......
  • Vitis AI 基本认知(线性回归)
    目录1.目的2.TensorFlow2.1 Sequential2.2 Functional3.PyTorch4. 欠定系统4.1方程的解4.2 欠定系统与过拟合5.总结1.目的学习不同深度学习框架下构建模型的区别。以简单的线性回归模型为例:欠定系统与过拟合2.TensorFlow在Keras中,介绍Sequent......
  • 只知道什么是 AI,没有听说过 LLM?只是其中一部分罢了
    什么是LLM呢?在人工智能(AI)领域,近年来最引人注目的技术之一就是大型语言模型(LLM,LargeLanguageModel)。随着自然语言处理(NLP)技术的发展,LLM逐渐成为了许多AI应用的核心驱动力。大型语言模型是一类基于深度学习的算法,旨在处理和生成自然语言。这些模型通过大量的文本数据进行......