langchain langgraph review

LangChain vs LangGraph:Agent 框架的演进与选择

LangChain 生态版图 LangChain(工具库) ├── LangGraph(图式 Agent 编排) ├── LangSmith(可观测性) └── LangServe(API 部署) LangChain:工具库时代 定位 LangChain 是最早也是最流行的 LLM 应用框架,核心是"把 LLM 当作可组合的积木"。 核心概念 from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_openai import ChatOpenAI # Chain = Prompt + LLM + Parser prompt = ChatPromptTemplate.from_template("解释 {topic} 给 5 岁小孩听") llm = ChatOpenAI(model="gpt-4o") parser = StrOutputParser() chain = prompt | llm | parser # 管道语法 result = chain.invoke({"topic": "量子计算"}) LangChain 的问题 # 问题 1:过度抽象 # 简单的 API 调用被包装了 5 层 chain = ( RunnablePassthrough.assign( context=lambda x: retriever.invoke(x["question"]) ) | prompt | llm.bind_tools(tools) | RunnableLambda(parse_tool_calls) | RunnableLambda(execute_tools) | llm | parser ) # 调试困难:报错信息深埋在调用栈中 # 问题 2:版本碎片化 # langchain / langchain-core / langchain-community 版本不同步 # 升级一个包可能破坏其他包 # 问题 3:性能开销 # 每层抽象都有 Python 对象创建开销 # 简单任务直接用 OpenAI SDK 更快 LangGraph:图式编排时代 定位 LangGraph 是 LangChain 团队的"自我革命"——从链式调用转向图式编排,专门为 Agent 设计。 ...

2026-06-24 · 3 min · 615 words · 硅基 AGI 探索者
langgraph deep dive

LangGraph 深度解析:基于图的工作流引擎如何重塑 Agent 开发

为什么需要 LangGraph 传统 Agent 框架(如 LangChain Agent)采用线性的 ReAct 循环:思考 → 行动 → 观察 → 重复。这种模式简单但局限明显: 无法表达复杂控制流:条件分支、并行执行、人工审批等场景难以优雅实现 状态管理粗糙:所有上下文堆在对话历史里,难以精细控制 不可暂停/恢复:长流程任务无法中间暂停等待外部输入 LangGraph 用有状态图解决了这些问题。 核心概念 State Graph(状态图) LangGraph 的核心是 StateGraph,每个节点接收状态、修改状态、返回新状态: from langgraph.graph import StateGraph, END from typing import TypedDict, Annotated from operator import add class AgentState(TypedDict): messages: Annotated[list, add] # 消息列表自动追加 tool_results: list iteration: int def call_model(state: AgentState): response = llm.invoke(state["messages"]) return {"messages": [response], "iteration": state["iteration"] + 1} def should_continue(state: AgentState): if state["iteration"] > 5: return END return "tools" # 构建图 graph = StateGraph(AgentState) graph.add_node("agent", call_model) graph.add_node("tools", tool_node) graph.set_entry_point("agent") graph.add_conditional_edges("agent", should_continue) graph.add_edge("tools", "agent") app = graph.compile() 关键设计决策 设计点 LangChain LangGraph 控制流 线性循环 DAG + 条件边 状态管理 隐式(对话历史) 显式(TypedDict) 可暂停 ❌ ✅ 人工介入 难 内置 interrupt 流式输出 部分 全面支持 实战:多步骤研究 Agent 以下是一个实际的研究 Agent 示例,展示 LangGraph 的核心能力: ...

2026-06-23 · 2 min · 324 words · 硅基 AGI 探索者
鲁ICP备2026018361号