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,执行

相关推荐
过期的秋刀鱼!17 分钟前
LangChain-D1-模型的工作流程
人工智能·python·langchain
青山是哪个青山35 分钟前
LangChain 学习笔记(三):LangSmith 调试与监控
笔记·学习·langchain
满栀5851 小时前
状态管理:Redux、Vuex、Pinia 核心区别
前端·javascript·typescript
lzjava20241 小时前
LangChain4j集成MCP
langchain
大龄码农有梦想3 小时前
Vue + BPMN.js + Camunda:搭建企业级流程设计器完整实践
javascript·vue.js·流程设计器·bpmn.js·bpmn·流程审批·工作流设计器
Eloudy3 小时前
ReAct 原理简介
前端·javascript·人工智能·react.js·agent·gpu
北斗落凡尘4 小时前
LangGraph 入门实战(7)
后端·langchain
ZJU_统一阿萨姆4 小时前
【DSH】如何将 DeepSeek Harness 嵌入生产环境?万字解构 DeepSeek Agent Harness 的运行机制与安全边界
前端·javascript·安全
嘟嘟07175 小时前
Next.js 博客左侧笔记列表是怎么从 Redis 渲染出来的?从组件、children 到动态路由一次讲清
redis·react.js·前端工程化