AI创想

标题: LangGraph 和 LangChain 的区别 [打印本页]

作者: 米落枫    时间: 2025-9-7 23:36
标题: LangGraph 和 LangChain 的区别
节点自由组合:
  1. workflow.add_node("node1", func1)
  2. workflow.add_node("node2", func2)
  3. workflow.add_edges(["node1","node2"])
复制代码
</ul>3. 状态管理能力

特性LangChainLangGraph
自动记忆管理
自定义状态对象
多轮次状态追踪有限强大
中间结果访问困难直接
LangGraph状态示例
  1. classState(TypedDict):input:str
  2.     messages: List[dict]
  3.     agent_out: Optional[str]defnode1(state: State):return{"agent_out":"结果"}
复制代码
4. 典型使用场景

适合LangChain的情况
适合LangGraph的情况
5. 代码风格对比

LangChain典型代码
  1. # 线性链式结构
  2. chain =(
  3.     load_documents
  4.     | split_text
  5.     | embed
  6.     | store_vector
  7.     | query_chain
  8. )
复制代码
LangGraph典型代码
  1. # 图结构工作流
  2. builder = Graph()
  3. builder.add_node("preprocess", preprocess_input)
  4. builder.add_node("retrieve", retrieve_docs)
  5. builder.add_node("generate", generate_response)
  6. builder.add_conditional_edges("generate",lambda x:"需要修正"in x["output"],{"True":"correct","False": END})
复制代码
6. 集成关系

7. 性能考量

维度LangChainLangGraph
启动速度快(预构建链)稍慢(需编译图)
复杂流程效率线性执行可能效率低可并行优化
调试难度简单较复杂(需可视化工具)
何时选择哪种工具?

两者结合使用的完整示例:
  1. from langchain_core.prompts import ChatPromptTemplate
  2. from langchain_openai import ChatOpenAI
  3. from langgraph.graph import Graph
  4. # LangChain组件
  5. prompt = ChatPromptTemplate.from_template("回答关于{topic}的问题")
  6. llm = ChatOpenAI()
  7. chain = prompt | llm
  8. # LangGraph工作流
  9. workflow = Graph()
  10. workflow.add_node("generate",lambda x: chain.invoke(x))
  11. workflow.add_node("review", human_review_func)
  12. workflow.add_conditional_edges("generate",
  13.     needs_review,{"True":"review","False": END})
复制代码
总结来说,LangChain是"乐高积木",提供预制组件;LangGraph是"蓝图",让你自由设计这些积木的组合方式。根据项目复杂度选择,它们通常协同工作而非二选一。




欢迎光临 AI创想 (http://llms-ai.com/) Powered by Discuz! X3.4