1、什么是中间件?

Middleware(中间件),简单说就是Agent 执行过程中的钩子函数,是 LangChain 1.x 的“王牌”工程化能力。

借助中间件,开发者可以高度定制和控制Agent运行的每一个环节,是处理 Agent 生命周期的标准方式

中间件的使用场景:

  • • 通过日志记录、分析和调试跟踪Agent行为

  • • 转换提示符、工具选择和输出格式

  • • 添加重试、回退和提前终止逻辑

  • • 应用速率限制、防护栏和 PII 检测

2、怎么调用中间件

通过 create_agent 来添加中间件:

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 核心循环流程:调用模型,由模型选择要执行的工具,当模型不再调用工具时,流程结束。

img

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

img

4、为什么需要中间件?

如果没有中间件,Agent 的执行流程通常比较直接:

用户输入 → 拼接提示词/消息 → 调用模型 → 如有需要调用工具 → 返回结果

这种方式对于简单场景已经足够,但一旦进入真实项目,往往会遇到很多额外需求,例如:

  • • 想根据问题复杂度动态切换模型

  • • 想限制某些用户只能调用部分工具

  • • 想在工具报错时自动重试或返回兜底结果

  • • 想在模型调用前插入额外的系统提示

  • • 想记录每一步的执行日志,方便排查问题

  • • 想在敏感信息出现时阻断执行

  • • 想在正式执行工具前增加人工审批

5、中间件的分类

自定义中间件:允许开发者自定义,

内置中间件:LangChain实现并提供的

  • • 模型供应商定制的中间件:依赖于特定模型服务的实现

  • • 模型供应商无关的中间件:由LangChian提供

6、LangChain官方提供的中间件

参考链接:https://docs.langchain.com/oss/python/langchain/middleware/built-in

img

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 只是个“直来直去”的聊天机器人;有了中间件,才能应对真实生产环境中的动态路由、容错重试、安全风控和成本控制

  • • 官方六件套:LangChain 提供了六大类与供应商无关的内置中间件,覆盖了从控本、维稳、安保、提智、扩能到调试的全链路需求。

一句话概括:如果说 Agent 是大脑,工具是手脚,那中间件就是神经系统和免疫系统。

中间件用得好,下班回家早。 欢迎在评论区分享你的实战经验,如果觉得这篇总结够干,别忘了点赞、在看、转发三连支持~

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐