LangChain与LangGraph开发ai智能体有啥不同区别?
网友回复
这是一个非常经典的问题。简单来说,LangChain 是“地基和组件”,而 LangGraph 是基于这些组件构建的“高级架构图”。
如果你只需要一条直线走到底的任务,用 LangChain;如果你需要循环、纠错、复杂的判断跳转(即智能体 Agent),用 LangGraph。
以下是详细的对比和使用指南:
一、 核心区别:直线 vs. 循环
| 核心逻辑 | DAG (有向无环图) | Cyclic Graph (有环图/循环图) |
| 形态 | 像一条流水线。步骤 A -> 步骤 B -> 步骤 C。 | 像一个流程图或状态机。可以 A -> B -> A -> C。 |
| 状态管理 | 状态通常在步骤间传递,比较隐式,难以在复杂步骤间保留全局记忆。 | 显式状态 (Shared State)。所有节点共享并修改同一个 State,就像一个全局黑板。 |
| 主要用途 | 简单的 RAG(检索增强生成)、聊天机器人、数据提取。 | AI Agent (智能体)、多步推理、人机交互(Human-in-the-loop)、自我修正。 |
| 控制流 | 主要是线性的(虽然有 RunnableBranch,但写循环很痛苦)。 | 原生支持循环 (Loops) 和条件跳转。 |
一句话总结:
LangChain 适合:先把大象放进冰箱(打开门 -> 放进去 -> 关门)。
LangGraph 适合:先把大象放进冰箱,如果冰箱满了,就拿出来整理一下再试,或者换个冰箱(观察 -> 思考 -> 行动 -> 观察...)。
二、 为什么 LangChain 官方要推 LangGraph?
在 LangChain 早期,有一个叫 AgentExecutor 的东西用来做智能体。但它是一个“黑盒”,很难定制。比如:你想让 AI 在重试 3 次失败后人工介入,用 AgentExecutor 很难写。
LangGraph 就是为了解决“定制化 Agent”而生的。 它把控制权交还给开发者,让你明确定义:
有哪些节点(Nodes)?
节点之间怎么流转(Edges)?
什么时候循环?什么时候结束?
三、 怎么用?(代码实战对比)
假设我们要实现一个简单的功能:模型生成内容,如果太短,就要求它重写。
1. 使用 LangChain (LCEL)用 LangChain 实现“循环重写”非常别扭,通常只能硬写几层,或者写递归函数。这里展示最擅长的线性链:
# LangChain: 线性流水线
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
model = ChatOpenAI(model="gpt-4o")
prompt = ChatPromptTemplate.from_template("讲一个关于{topic}的笑话")
# 就像插积木一样串...点击查看剩余70%


