langChain与langGraph的关系与区别
概念介绍
LangChain是一个专门为开发AI应用而设计的开源框架。它是模块化链条编排的先驱,简化了LLM和传统工具再AI应用中的集成。但在Agent概念成为了AI应用开发的核心方向后,LangChain无法支持其开发。
LangGraph作为其进化的产物。它引入了图计算与状态管理的概念,用于完成Agent架构中复杂的流程构建与流转。再实际的应用中,其能将复杂的任务拆解成多个节点,每个节点代表着一个操作或者一个智能体,通过边定义节点间的依赖关系实现数据流向。这种方式可以是Agent架构的设计与调试更加高效,尤其是多智能体协作和长流程任务处理等场景中。
核心架构介绍
LangChain :标准化的AI应用开发框架,提供模块化组件和接口层
代码示例:
from langchain.chains import create_retrieval_chain
from langchain_community.document_loaders import WebBaseLoader
from langchain_openai import ChatOpenAI# 1. 加载文档
loader = WebBaseLoader("https://xxxx/news")
docs = loader.load()# 2. 构建链式工作流
chain = (create_retrieval_chain(retriever) # 检索模块| ChatOpenAI(model="gpt-4o") # LLM生成摘要| lambda x: x["answer"][:200] # 结果截断
)# 3. 执行链
result = chain.invoke({"input": "总结核心内容"})
print(result) # 输出:'文章讨论AI伦理...'
LangGraph:基于图结构的Agent流程建模与执行引擎。
- 节点:是LangGraph的基本元素,Agent/Tool/END等执行单元。
- 边:带条件的状态流转路径(可以通过模型回答选择通过if-else选择下所走边,并且支持循环、并行)。
- 状态:贯穿流程的上下文容
不可替代的三类场景
-
多Agent协作
builder.add_node("sales_agent", sales_processor)
builder.add_node("support_agent", support_processor)
builder.add_conditional_edges("router", route_by_intent) # 动态路由
- 带状态的长时任务
# 持久化检查点(支持服务重启续传)
memory = SqliteSaver.from_conn_string(":memory:")
graph = builder.compile(checkpointer=memory)
- 人工介入流程
# 敏感操作前暂停等待审批
graph.compile(interrupt_before=["refund_payment"])
框架定位本质差异
维度 | LangChain | LangGraph |
---|---|---|
核心定位 | AI应用开发基础框架 | 复杂工作流编排引擎 |
核心价值 | 提供原子能力(模型/工具/组件) | 构建状态感知的动态流程 |
类比角色 | 乐高积木库(提供标准化零件) | 机械传动系统(控制零件协作方式) |
LangChain 0.2+已深度集成LangGraph,可通过
@chain
装饰器直接将LangChain链转为LangGraph节点,实现无缝协作。