Middleware 中间件
Middleware 是 LangChain 1.0 的核心扩展机制:在 Agent 循环的固定阶段插入逻辑,解决 0.x 时代「一用就毕业到自写循环」的问题。
为什么需要 Middleware?
Agent 生产化常见需求:
- 对话摘要(防 context 溢出)
- 长期记忆加载
- 人机协同(敏感工具前暂停)
- 子 Agent 委派
- 动态 system prompt / 换模型
- 限步数、限工具
Middleware 在 model 节点与 tool 节点之间 提供钩子,多个 Middleware 可组合(类似 Web 中间件洋葱模型)。
钩子类型(概念)
多个 Middleware:进入顺序正序,离开时逆序。
概念示例:限制步数
具体基类名与方法签名以你安装的
langchain版本文档为准;1.0 仍在快速迭代,请以 Agent Middleware 文档 为权威。
官方与社区 Middleware
LangChain 提供/计划提供开箱即用 Middleware,例如:
- Human-in-the-loop:
after_model中断待审批 tool call - Summarization:历史压缩
- Model fallback:主模型失败切换备用
- PII 过滤、prompt caching 等
社区 Middleware 列表见官方博客与 GitHub。
Middleware vs LangGraph 节点
复杂 Orchestrator-Worker 往往用 LangGraph;单 Agent 增强优先 Middleware。
子 Agent 与委派
Middleware 可在 after_model 检测「任务过大」,触发 子 Agent(独立 thread / 隔离 context)执行后把结果合并回主 Agent——官方 Deep Agents / 委派类 Middleware 封装此模式。
调试建议
- 在 LangSmith 中查看每步 Middleware 前后的 state diff
- 一次只加一个 Middleware,验证行为
- 避免在 Middleware 中做重型同步 IO(阻塞整个循环)