Agent 框架别急着乱学:先用 LangChain 搞懂 7 个基本模块

先说结论。

如果你想系统理解 Python Agent 框架,LangChain 仍然值得作为第一篇。它不是最轻的,也不是最"自动化"的,但它把 Agent 应用里的关键零件都摆出来了:模型、工具、状态、记忆、middleware、多 Agent 路由和 tracing。

如果你只是想马上做一个复杂自动化 Agent,LangChain 本身可能不够省事,后面大概率会接 LangGraph 或 Deep Agents。但如果你想先看懂 Agent 应用到底由哪些模块组成,LangChain 是很好的入口。

1. 它到底解决什么问题

LangChain 解决的不是"调用一次大模型"。

它解决的是:当一个 LLM 应用开始需要工具、上下文、记忆、权限控制、调试追踪时,代码应该怎么组织。

最小 Agent 入口现在非常直接:

javascript 复制代码
from langchain.agents import create_agent

你给它模型、工具和系统提示词,它帮你跑一个基础 agent loop:模型先判断要不要调用工具,工具执行完把结果交回模型,模型继续推理,直到输出最终结果。

2. 先看架构:LangChain 把 Agent 拆成了什么

可以把 LangChain Agent 理解成一个预组装好的运行图:

perl 复制代码
用户输入
  ↓
messages / state
  ↓
模型节点:判断下一步
  ↓
工具节点:执行工具
  ↓
工具结果写回 messages / state
  ↓
继续模型调用或输出答案

它底层依赖 LangGraph,所以不是一个完全黑盒的"聊天机器人"。它更像一个预设好的 agent workflow。

几个核心模块:

  • model:负责推理和决定下一步
  • tools:让模型调用外部能力
  • state:保存 messages 和中间状态
  • checkpointer:保存短期会话状态
  • store:保存跨会话长期记忆
  • middleware:在模型调用、工具调用前后插入控制逻辑
  • LangSmith:看清每一步 trace

3. 记忆、工具、多 Agent 是怎么处理的

记忆

LangChain 把记忆分成短期和长期。

短期记忆就是当前会话里的上下文。它通常通过 checkpointer 保存,比如同一个 thread_id 下的历史 messages。开发时可以用内存版,生产环境通常要换成 Postgres 这类持久化方案。

长期记忆通过 store 做。它更像一个跨会话资料库,可以保存用户偏好、业务对象状态、历史任务结果等。

简单说:

ini 复制代码
checkpointer = 当前对话怎么接上
store = 跨对话的信息怎么留下

工具调用

LangChain 的工具可以直接用 Python 函数定义。

python 复制代码
def get_weather(city: str) -> str:
    """Get weather for a given city."""
    return f"It's always sunny in {city}!"

函数名、参数类型、docstring 都会影响模型是否能正确调用工具。一个好的工具不只是"能跑",还要让模型知道什么时候该用、参数该怎么传、结果代表什么。

多 Agent 交流

LangChain 的多 Agent 不是"几个机器人随便群聊"。官方更推荐几种工程化模式:

  • subagent:主 Agent 把子 Agent 当工具调用
  • handoff:通过工具调用切换当前负责的 Agent
  • router:先判断任务类型,再路由到专门 Agent
  • custom workflow:用 LangGraph 自己控制状态图

它的核心还是 state、tool call 和 routing。多个 Agent 的交流,本质上是状态和消息在不同 Agent 之间转移。

4. 最小上手示例

安装:

arduino 复制代码
pip install -qU langchain "langchain[openai]"

最小代码:

python 复制代码
from langchain.agents import create_agent

def get_weather(city: str) -> str:
    """Get weather for a given city."""
    return f"It's always sunny in {city}!"

agent = create_agent(
    model="openai:gpt-5.4",
    tools=[get_weather],
    system_prompt="You are a helpful assistant",
)

result = agent.invoke({
    "messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]
})

print(result["messages"][-1].content)

成功标志:模型能识别天气问题,调用 get_weather,最后输出带 San Francisco 的回答。官方示例里也会打印最后一条 message 的 content_blocks,方便你看到工具调用和最终文本。

5. 一个真实使用场景

我会用 LangChain 做一个"客服数据助手":

复制代码
用户问订单问题
  ↓
Agent 判断是否需要查订单
  ↓
调用 search_orders 工具
  ↓
调用 refund_policy 工具
  ↓
生成回复建议
  ↓
保存会话状态

这个场景里,LangChain 的价值不是回答得多聪明,而是你可以把工具、状态、权限、trace 拆开管理。

6. 它不适合什么

第一,不适合完全不想理解架构的人。LangChain 的概念不少,Agent、Tool、State、Middleware、Store、Checkpointer、LangGraph、LangSmith 都要看。

第二,不适合只想快速做一个"全自动复杂 Agent"的人。它是基础框架,不是成品 Agent。

第三,如果你的工作流本来就是复杂状态图,直接学 LangGraph 会更干脆。

7. 和同类框架比,它的位置在哪里

和 LangGraph 比:LangChain 更高层,LangGraph 更底层。LangChain 帮你预组装常见 agent loop,LangGraph 让你自己画状态图。

和 CrewAI 比:CrewAI 更像"组团队",LangChain 更像"搭运行时"。

和 AutoGen 比:AutoGen 更偏多 Agent 对话协作,LangChain 更偏工具、状态和生产可控性。

8. 结论

LangChain 适合作为 Agent 框架系列的第一篇。

它让你先建立这张地图:

复制代码
模型负责推理
工具负责行动
状态负责过程
记忆负责延续
middleware 负责控制
LangSmith 负责观察
LangGraph 负责底层运行

先用 LangChain 跑通一个单 Agent + 两个工具 + 短期记忆 + tracing,再看后面的 LangGraph、CrewAI、AutoGen,会清楚很多。

相关推荐
神奇小汤圆9 小时前
一次线上故障带你看懂 MySQL InnoDB 缓冲池
后端
啷里格啷9 小时前
第三章 Fast-DDS核心源码导读与流程拆解
后端·架构
爱编程的小新☆9 小时前
Spring-AI入门
java·后端·spring
蝎子莱莱爱打怪9 小时前
👋🏻👋🏻再见,拉勾网——那个"最懂互联网人"的招聘平台倒了😭
前端·后端·招聘
用户2986985301410 小时前
Java 获取 Word 文档中修订记录的实现方法
java·后端
TheRouter10 小时前
PromptCaching 工程实践:把LLM 调用成本砍掉80%
java·后端·spring·ai
Gopher_HBo10 小时前
Go pprof性能剖析
后端
IT策士10 小时前
Django 从 0 到 1 打造完整电商平台:个人中心与用户信息修改
后端·python·django
小明同学0110 小时前
C++后端项目:统一大模型接入 SDK(五)
服务器·c++·后端·计算机网络·语言模型