先一句话分清三者不属于同一维度:
LangChain:LLM 应用开发工具框架(上层组件库)
LangGraph:Agent 工作流编排运行时(底层执行引擎)
ReAct:一种Agent 算法 / 范式(思考 + 行动循环逻辑)
通俗层级:
ReAct(一种智能体运行逻辑)
↓ 可以用两种方式实现
- 简易实现:LangChain 内置 ReActAgent
- 自定义可控实现:用 LangGraph 从零搭建 ReAct 循环
一、逐个定义
- LangChain
LangChain:一套模块化开发库,提供构建 LLM 应用的各类组件
核心组件:LLM 封装、Prompt 模板、Memory、Tools、Chains、内置 Agent、RAG 工具、LCEL 表达式语言。
- 编程模型:链式(Chain),默认偏向线性流程
- Agent:内置封装好的 ReActAgent、OpenAI ToolCalling Agent,开箱即用
- 优点:上手快、组件丰富,适合简单 RAG、问答、固定流水线
- 短板:原生 Chain 很难灵活实现复杂循环、分支、任务暂停、持久化断点
- LangGraph
LangGraph:LangChain 同公司推出的状态图编排引擎
核心抽象:StateGraph(状态 + 节点 + 条件边)
- 支持:循环、分支、并行、中断(人工介入 HITL)、状态持久化 Checkpointer、任务断点续跑
- 定位:底层运行时,可以独立使用,也可以直接复用 LangChain 的 LLM、Tool、Prompt
- LangChain v1 新版内置 Agent 底层其实就是基于 LangGraph 实现
关系类比:
LangChain = 各类零件(电机、传感器)
LangGraph = 电路板 / 控制器,可以自由把零件连接成带循环、分支的复杂电路

Chain线性流程 vs Graph图流程
- 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