langchain 和 langgraph 和 react

先一句话分清三者不属于同一维度:

LangChain:LLM 应用开发工具框架(上层组件库)

LangGraph:Agent 工作流编排运行时(底层执行引擎)

ReAct:一种Agent 算法 / 范式(思考 + 行动循环逻辑)

通俗层级:

ReAct(一种智能体运行逻辑)

↓ 可以用两种方式实现

  • 简易实现:LangChain 内置 ReActAgent
  • 自定义可控实现:用 LangGraph 从零搭建 ReAct 循环

一、逐个定义

  1. LangChain

LangChain:一套模块化开发库,提供构建 LLM 应用的各类组件

核心组件:LLM 封装、Prompt 模板、Memory、Tools、Chains、内置 Agent、RAG 工具、LCEL 表达式语言。

  • 编程模型:链式(Chain),默认偏向线性流程
  • Agent:内置封装好的 ReActAgent、OpenAI ToolCalling Agent,开箱即用
  • 优点:上手快、组件丰富,适合简单 RAG、问答、固定流水线
  • 短板:原生 Chain 很难灵活实现复杂循环、分支、任务暂停、持久化断点
  1. LangGraph

LangGraph:LangChain 同公司推出的状态图编排引擎

核心抽象:StateGraph(状态 + 节点 + 条件边)

  • 支持:循环、分支、并行、中断(人工介入 HITL)、状态持久化 Checkpointer、任务断点续跑
  • 定位:底层运行时,可以独立使用,也可以直接复用 LangChain 的 LLM、Tool、Prompt
  • LangChain v1 新版内置 Agent 底层其实就是基于 LangGraph 实现

关系类比:

LangChain = 各类零件(电机、传感器)

LangGraph = 电路板 / 控制器,可以自由把零件连接成带循环、分支的复杂电路

Chain线性流程 vs Graph图流程

  1. ReAct(Reasoning + Acting)

ReAct 是论文提出的 Agent 范式(不是代码库!)

核心循环:

Thought(思考) → Action(调用工具) → Observation(工具返回结果) → 循环直至输出答案

Thought: 我需要搜索实时股价

Action: search("苹果公司当前股价")

Observation: 192.3 USD

Thought: 信息足够,可以整理答案

Final Answer: ...

特点:

  • 让模型显式写出思考过程,降低幻觉
  • 依靠外部工具获取实时信息,弥补 LLM 静态知识缺陷
  • 只是一套执行逻辑,不绑定任何框架

✅ 可以用 LangChain 一行调用内置 ReActAgent

✅ 也可以手动用 LangGraph 搭建节点,自己实现 ReAct 循环

二、三者关系图

【业务目标:实现一个能搜索资料的智能助手】

↓ 采用 ReAct 范式(决定智能体怎么思考行动)

├─快速方案:LangChain.create_react_agent()

│ 底层内部封装了简易循环

└─高度自定义方案:LangGraph 手动搭建

节点1:LLM生成Thought/Action

节点2:执行Tool

条件边:信息不足→回到LLM;信息充足→结束

三、关键对比表

四、如何选型(工程建议)

1.简单 RAG、问答、一次性工具调用

直接 LangChain LCEL / 内置 ReActAgent,开发最快。

2.需要:多轮反思、分支判断、中途人工审核、长时间任务、失败重试

LangGraph + LangChain 组件(LLM/Tools),自己搭建 ReAct 循环,获得完全控制权。

3.误区澄清

❌ 不是 "LangGraph 替代 LangChain";

✅ LangGraph 负责流程怎么跑,LangChain 提供各类 AI 基础组件;

✅ ReAct 只是你选择让智能体采用哪种思考模式。

五、极简代码示意(直观感受差异)

方式 1:LangChain 内置 ReAct(开箱即用)

from langchain.agents import create_react_agent

agent = create_react_agent(llm, tools, prompt)

agent.invoke({"input": "查询今天油价"})

方式 2:LangGraph 手写一套 ReAct 逻辑(完全可控)

from langgraph.graph import StateGraph, END

1.定义状态

2.添加节点:call_llm、run_tools

3.添加条件边:是否需要继续调用工具

4.编译graph,执行

相关推荐
Mr_Mao11 小时前
告别选型困难!集 VueUse、ahooks、Mantine 于一身:286 个 Hook 的 ReaUse 来了
前端·javascript·react.js
智鸟科技GemeOpen开发者智能设备11 小时前
智能插座二次开发如何接入Home Assistant,从零开始完整工程实现(Python+React)
开发语言·python·物联网·react.js·智能家居
不好听61312 小时前
LangSmith 入门:让你的Agent链路可追踪
langchain
默_笙12 小时前
🚙 一条腿走路会摔:ES 关键词检索、混合召回与 ReRank 裁判
前端·javascript
dsyyyyy110113 小时前
Vue 3 Watch 监视完全指南
前端·javascript·vue.js
u01110267515 小时前
Vue 3 实现图片裁剪框:拖动、缩放与固定宽高比
前端·javascript·vue.js
0nirvana015 小时前
从普通 script 到 ESM:一文搞懂 JavaScript 模块、IIFE 和 window
javascript
wshzd16 小时前
LLM之Agent(104)|DeepSeek-Harness(十三)ReactLoopAgent 总览:kick → turn → step
开发语言·前端·javascript
似梦的苏烟17 小时前
Langchain实战3-Model和Prompt
langchain·agent
天天喝旺仔18 小时前
浏览器渲染原理:从解析 HTML/CSS、构建渲染树到重排重绘与首屏优化
前端·javascript·css·性能优化·html