+
61
-

LangChain与LangGraph开发ai智能体有啥不同区别?

LangChain与LangGraph开发ai智能体有啥不同区别?


网友回复

+
15
-

这是一个非常经典的问题。简单来说,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%

我知道答案,我要回答