架构与核心概念

本章说明 LangChain 1.0 的分层设计、Agent 循环,以及何时使用 LangGraph。


分层架构

┌─────────────────────────────────────────┐
│  应用层:你的业务代码 / API / UI         │
├─────────────────────────────────────────┤
│  LangChain:create_agent、Middleware    │
├─────────────────────────────────────────┤
│  LangGraph:StateGraph、Checkpointer    │
├─────────────────────────────────────────┤
│  langchain-core:Messages、Tools、Runnable│
├─────────────────────────────────────────┤
│  集成包:langchain-openai、anthropic…   │
└─────────────────────────────────────────┘
  • langchain-core:与厂商无关的抽象(消息、Runnable 协议、工具接口)
  • LangGraph:有状态、可循环、可持久化的执行引擎
  • LangChain 1.0:在 LangGraph 之上提供「标准 Agent 循环 + Middleware 扩展点」

Agent = Model + Harness

官方定义 Harness 负责:在任务的每个阶段,为模型准备正确的上下文

Harness 包含:

组件作用
Model推理与 tool calling
Tools模型可调用的外部能力
System prompt行为与边界
Middleware在循环各阶段注入逻辑
State消息历史与自定义字段
Checkpointer跨轮次持久化
from langchain.agents import create_agent

agent = create_agent(
    model="openai:gpt-4.1",
    tools=[...],
    system_prompt="...",
    middleware=[...],
    checkpointer=...,
)

LangGraph 上的 Agent 循环

create_agent 内部是 LangGraph 图,典型节点:

  • model:调用 LLM,可能产生 tool_calls
  • tools:执行工具,结果写回 messages

Middleware 可在进入/离开 model 节点前后运行,相当于在「Web 中间件」模型下包装 Agent 循环。


LangChain vs LangGraph

LangChain create_agentLangGraph 自定义图
上手低,几行代码中,需理解 State / Node
灵活性Middleware + 组合子图完全自定义拓扑
适用标准工具 Agent、RAG Agent确定性步骤 + Agent 步骤混合、编排者-工作者
持久化传 checkpointer 即可原生支持

官方建议:

  • 先用 LangChain 起步
  • 需要 固定流程 + 条件分支 + 并行工作者 时,用 LangGraph 建图
  • 可将 create_agent 作为 子图 嵌入大图(可组合、不锁定)

工作流 vs Agent

工作流 (Workflow)Agent
控制流代码预定义顺序模型动态决定
可预测性中(依赖模型)
示例翻译 → 润色 → 质检搜索 → 读页 → 再搜索

LangGraph 同时支持二者:Prompt chaining、路由、Orchestrator-Worker 等模式见 LangGraph 工作流


Runnable 与 LCEL(遗留概念)

0.x 时代的 LCEL(LangChain Expression Language)用 | 管道组合 Runnable:

chain = prompt | model | parser

1.0 仍以 Runnable 为底层协议,但 Agent 开发的主路径是 create_agent。许多 LCEL Chain 场景可被 Agent 或 LangGraph 节点替代;集成包中的 ChatOpenAI 等仍是 Runnable,可与图节点共用。


包版本与兼容

  • langchain 1.x 与 langgraph 1.x 对齐
  • 旧版 AgentExecutorinitialize_agent 等已 deprecated,新项目勿用
  • 文档入口:docs.langchain.com

下一步