1、什么是中间件?
Middleware(中间件),简单说就是Agent 执行过程中的钩子函数,是 LangChain 1.x 的"王牌"工程化能力
借助中间件,开发者可以高度定制和控制Agent运行的每一个环节,是处理 Agent 生命周期的标准方式
中间件的使用场景:
- 通过日志记录、分析和调试跟踪Agent行为
- 转换提示符、工具选择和输出格式
- 添加重试、回退和提前终止逻辑
- 应用速率限制、防护栏和 PII 检测
2、怎么调用中间件
通过 create_agent 来添加中间件:
Python
from langchain.agents import create_agent
from langchain.agents.middleware import SummarizationMiddleware, HumanInTheLoopMiddleware
agent = create_agent(
model="gpt-5.5",
tools=[...],
middleware=[
SummarizationMiddleware(...),
HumanInTheLoopMiddleware(...)
],
)
3、Agent 调用中间件 VS. 无调用中间件
Agent 核心循环流程:调用模型,由模型选择要执行的工具,当模型不再调用工具时,流程结束。

中间件会在每一个步骤的前后暴露钩子函数:

在 LangGraph 工作流中使用中间件
中间件并非独立运行时 :钩子函数运行在
create_agent返回的已编译对象内部。可以将整个Agent(连同中间件全部逻辑)作为节点或子图,嵌入到更大的
StateGraph当中,所有中间件钩子仍会正常执行。当整体拓扑结构超出标准的「循环直至完成」模式时,可以采用该方案:例如路由到多个智能体之前对输入做分类 、并行分发任务 ,或是把Agent调用和确定性步骤拼接组合。
4、为什么需要中间件?
如果没有中间件,Agent 的执行流程通常比较直接:
Python
用户输入 → 拼接提示词/消息 → 调用模型 → 如有需要调用工具 → 返回结果
这种方式对于简单场景已经足够,但一旦进入真实项目,往往会遇到很多额外需求,例如:
- 想根据问题复杂度
动态切换模型 - 想限制某些用户
只能调用部分工具 - 想在工具报错时
自动重试或返回兜底结果 - 想在模型调用
前插入额外的系统提示 - 想记录每一步的
执行日志,方便排查问题 - 想在敏感信息出现时
阻断执行 - 想在正式执行工具前增加
人工审批
5、中间件的分类
自定义中间件:允许开发者自定义,
内置中间件:LangChain实现并提供的
- 模型供应商定制的中间件:依赖于特定模型服务的实现
- 模型供应商无关的中间件:由LangChian提供
6、LangChain官方提供的中间件
参考链接:https://docs.langchain.com/oss/python/langchain/middleware/built-in

7、LangChain官方提供的中间件分类
LangChain 提供了六类与模型供应商无关的内置中间件,分别解决 Agent 在生产环境中的不同问题:
1. 成本与资源控制类
核心目标:控成本、控配额、避免无限调用
解决 Agent 太贵、太能跑、停不下来的问题,包括:
- Model call limit:限制模型调用次数,防止费用失控
- Tool call limit:限制工具调用次数,避免死循环
- Summarization:上下文快满时自动总结,减少 token 消耗
- Context editing:裁剪上下文,节省成本
适用场景:生产环境成本治理、长会话优化、SaaS 产品控费。
2. 稳定性与容错保障类
核心目标:保证服务不中断,失败后自动恢复
解决调用失败、模型挂了、工具超时的问题,包括:
- Model fallback:主模型失败时切换备用模型
- Model retry / Tool retry:调用失败后自动重试
适用场景:线上生产系统,尤其是多模型、多工具依赖的 Agent,本质是构建高可用、容灾能力。
3. 安全与合规风控类
核心目标:让 Agent 可控、可审、合规
解决乱执行、泄露敏感信息、做危险操作的问题,包括:
- Human-in-the-loop:关键工具调用前暂停,等待人工审批
- PII detection:检测和处理个人敏感信息
适用场景:企业内部系统、客服系统、审批流,尤其是涉及发邮件、调数据库、导出敏感信息等高风险操作。
4. 决策增强与智能编排类
核心目标:提升 Agent 的决策质量和任务拆解能力
解决不够聪明、不会规划、不会筛选工具的问题,包括:
- To-do list:增强任务规划和状态跟踪
- LLM tool selector:工具过多时,用子模型筛选最相关的工具
- Subagent:生成子 Agent,拆分复杂任务给不同角色
适用场景:研究型 Agent、多步骤分析、多角色协作等复杂任务流,本质是增强 Agent 的"组织能力"。
5. 执行能力扩展类
核心目标:给 Agent 更多"手脚"
解决**只能聊天,不能操作环境**的问题,包括:
- Shell tool:提供持久 shell,执行命令
- File search:提供 Glob/Grep 文件搜索能力
- Filesystem:提供文件读写与长期存储能力
适用场景:工程 Agent、代码 Agent、运维自动化,本质是将 Agent 从"纯推理"扩展为"可操作环境的执行体"。
6. 开发调试与测试辅助类
核心目标:方便开发、测试、验证 Agent 行为
主要**服务研发和调试阶段**,包括:
- LLM tool emulator:用 LLM 模拟工具执行,便于测试
- Summarization / Context editing:辅助调试长会话和上下文裁剪效果
- Human-in-the-loop:调试高风险步骤
适用场景:开发阶段快速验证流程、做 mock、减少对真实工具的依赖。
8、总结
- 中间件是什么? 它是 Agent 执行过程中的钩子函数,是 LangChain 1.x 最核心的工程化能力。它让开发者能在 Agent 生命周期的每一个环节"插手干预"。
- 为什么需要它? 没有中间件,Agent 只是个"直来直去"的聊天机器人;有了中间件,才能应对真实生产环境中的动态路由、容错重试、安全风控和成本控制。
- 怎么用? 通过
create_agent的middleware参数注入,像搭积木一样组合。并且它可以无缝嵌入更大的 LangGraph 工作流中,作为子图或节点运行。 - 官方六件套:LangChain 提供了六大类与供应商无关的内置中间件,覆盖了从**控本(限流/摘要)、维稳(降级/重试)、安保(人工审批/PII检测)、提智(任务拆解/工具筛选)、扩能(Shell/文件操作)到调试(Mock测试)**的全链路需求。
一句话概括:如果说 Agent 是大脑,工具是手脚,那中间件就是神经系统和免疫系统------它决定了这个 Agent 是只能在实验室里跑跑,还是能真正扛住生产环境的压力。
中间件用得好,下班回家早。 你在实际项目中用过哪些中间件?又踩过哪些坑?欢迎在评论区 分享你的实战经验,如果觉得这篇总结够干,别忘了点赞、在看、转发三连支持~