Langchain中内置的中间件,描述,作用,实际应用
LangChain 的内置中间件(Middleware)就像是给 AI Agent 配备的“交通警察”或“全能秘书”。它们不需要你修改 Agent 的核心逻辑,就能在 Agent 执行任务的关键节点(比如调用模型前、调用工具后)自动插入各种增强功能。
这些中间件主要围绕上下文管理、安全管控、容错重试、成本控制四大核心需求设计。以下是 LangChain 中高频使用的内置中间件及其实际应用:
🛠️ LangChain 核心内置中间件速览
表格
| 中间件名称 | 核心作用 | 典型实际应用场景 |
|---|---|---|
| SummarizationMiddleware | 自动压缩历史对话,防止 Token 超限 | 客服机器人、长文多轮对话,避免上下文溢出报错 |
| HumanInTheLoopMiddleware | 敏感操作前暂停,等待人工审批 | 金融转账、删除数据库、发送邮件等高风险操作 |
| ModelCallLimitMiddleware | 限制模型调用次数,防止死循环 | 防止 Agent 陷入无限思考,严格控制 API 账单成本 |
| ToolCallLimitMiddleware | 限制工具调用次数 | 防止高频调用第三方付费 API(如天气、股票接口) |
| ModelFallbackMiddleware | 主模型挂了自动切换备用模型 | 提升服务稳定性,当 GPT-4 宕机时自动降级到 GPT-3.5 |
| PIIMiddleware | 识别并脱敏隐私信息(PII) | 合规审查,自动掩盖日志中的手机号、身份证、银行卡号 |
| ModelRetryMiddleware | 模型调用失败自动重试 | 应对网络波动或大模型服务商的临时限流(Rate Limit) |
| ToolRetryMiddleware | 工具调用失败自动重试 | 第三方接口不稳定时,自动重新尝试获取数据 |
🚀 核心中间件的实际应用与代码示例
1. 上下文管理:自动摘要 (SummarizationMiddleware)
作用:当对话历史太长、Token 快要用完时,自动调用一个轻量级模型把旧消息总结成一段摘要,同时保留最新的几条消息。
实际应用:在长周期的心理咨询或客服对话中,既能记住之前的核心诉求,又不会因为上下文过长导致报错或费用激增。
from langchain.agents import create_agent
from langchain.agents.middleware import SummarizationMiddleware
agent = create_agent(
model="gpt-4o",
tools=[],
middleware=[
SummarizationMiddleware(
model="gpt-4o-mini", # 用便宜的小模型做摘要,省钱
trigger={"tokens": 4000, "messages": 10}, # 达到4000 tokens或10条消息时触发
keep={"messages": 5}, # 无论如何保留最新的5条消息不压缩
)
],
)
2. 安全管控:人工介入 (HumanInTheLoopMiddleware)
作用:在 Agent 准备调用某些高危工具前强行“踩刹车”,等待人类批准、编辑或直接拒绝。
实际应用:你做了一个能自动写 SQL 删库的运维 Agent,为了防止它误删数据,必须在执行 delete_database 工具前加入人工审核。
from langchain.agents import create_agent
from langchain.agents.middleware import HumanInTheLoopMiddleware
from langgraph.checkpoint.memory import InMemorySaver
# 必须配置 Checkpointer 来保存暂停时的状态
agent = create_agent(
model="gpt-4o",
tools=[send_email_tool, delete_data_tool],
checkpointer=InMemorySaver(),
middleware=[
HumanInTheLoopMiddleware(
interrupt_on={
"send_email_tool": {"allowed_decisions": ["approve", "reject"]},
"delete_data_tool": False, # 设为 False 表示永远拦截,或按需配置
}
)
],
)
3. 成本与稳定:调用限制与降级 (Call Limit & Fallback)
作用:ModelCallLimitMiddleware 给 Agent 的思考次数设上限;ModelFallbackMiddleware 提供备胎模型。
实际应用:防止 Agent 因为某个问题钻牛角尖,连续调用几十次模型导致一夜之间花光预算;或者在主模型(如 OpenAI)服务崩溃时,自动无缝切换到备用模型(如 Anthropic 或国内大模型)。
from langchain.agents import create_agent
from langchain.agents.middleware import ModelCallLimitMiddleware, ModelFallbackMiddleware
agent = create_agent(
model="gpt-4o",
tools=[],
middleware=[
# 限制单次请求最多调用 5 次模型,超过就优雅结束
ModelCallLimitMiddleware(run_limit=5, exit_behavior="end"),
# 如果 GPT-4o 挂了,自动切到 Claude,再挂了切到 GPT-3.5
ModelFallbackMiddleware("claude-3-5-sonnet", "gpt-3.5-turbo"),
],
)
4. 隐私合规:隐私脱敏 (PIIMiddleware)
作用:在把用户的输入发给大模型之前,自动扫描并掩盖敏感信息(如邮箱、电话、身份证)。
实际应用:在处理用户工单或医疗咨询时,确保上传到云端的对话数据中不包含真实的个人隐私信息,满足 GDPR 等合规要求。
from langchain.agents import create_agent
from langchain.agents.middleware import PIIMiddleware
agent = create_agent(
model="gpt-4o",
tools=[],
middleware=[
PIIMiddleware(
patterns=["email", "phone", "credit_card"], # 指定要脱敏的信息类型
# 也可以自定义正则表达式
)
],
)
💡 总结
LangChain 的中间件机制让你能以“插拔式”的方式为 Agent 赋能。在实际开发中,你通常会组合使用这些中间件:比如用 SummarizationMiddleware 控长度,用 HumanInTheLoopMiddleware 保安全,再用 ModelRetryMiddleware 提稳定性,从而构建出一个既健壮又省钱的企业级 AI Agent。
更多推荐


所有评论(0)