LangChain内置中间件总结

一、核心定位

LangChain 内置中间件是Agent 的通用增强插件 ,不用改核心逻辑,就能给智能体加上下文管理、安全管控、容错重试、成本限制、人工审核等能力,适配所有 LLM ,开箱即用。


二、高频中间件速览(通俗版)

中间件 一句话作用 核心场景
Summarization 快超 token 时自动压缩历史 长对话、多轮交互
Human-in-the-loop 工具调用前要人审批 金融、写库、发邮件等高风险操作
Model Call Limit 限制模型调用次数 防死循环、控成本
Tool Call Limit 限制工具调用次数 防高频调用外部 API
Model Fallback 主模型挂了自动切备用 提升服务稳定性
PII Detection 识别并脱敏隐私信息 合规、日志清洗
Model Retry 模型调用失败自动重试 网络波动、限流场景
Tool Retry 工具调用失败自动重试 第三方接口不稳定
LLM Tool Selector 先选有用工具再跑主模型 工具多、省 token、提精度
Context Editing 清理旧工具结果保最新 长对话控上下文大小

三、核心中间件 + 优化代码(直接复制用)

1. 上下文压缩:SummarizationMiddleware

  • 作用:快超 token 自动总结旧消息,保最近对话

  • 优化点:用轻量模型做摘要,触发阈值合理,保留最近消息

    from langchain.agents import create_agent
    from langchain.agents.middleware import SummarizationMiddleware

    agent = create_agent(
    model="gpt-4.1",
    tools=[],
    middleware=[
    SummarizationMiddleware(
    model="gpt-4.1-mini", # 轻量模型降本
    trigger=("tokens", 3500), # 触达阈值
    keep=("messages", 15), # 保留最新15条
    trim_tokens_to_summarize=3500,
    )
    ],
    )

2. 人工审核:HumanInTheLoopMiddleware

  • 作用:敏感工具必须人同意 / 编辑 / 拒绝

  • 优化点:只对高危工具开启,配检查点存状态

    from langchain.agents import create_agent
    from langchain.agents.middleware import HumanInTheLoopMiddleware
    from langgraph.checkpoint.memory import InMemorySaver

    模拟发邮件工具(高危)

    def send_email(recipient: str, subject: str, body: str) -> str:
    return f"发送给 {recipient} 的邮件已发出"

    agent = create_agent(
    model="gpt-4.1",
    tools=[send_email],
    checkpointer=InMemorySaver(), # 必须存状态
    middleware=[
    HumanInTheLoopMiddleware(
    interrupt_on={
    "send_email": {"allowed_decisions": ["approve", "edit", "reject"]}
    }
    )
    ],
    )

3. 调用次数限制:ModelCallLimitMiddleware

  • 作用:防无限循环、控 API 成本

  • 优化点:单轮 + 会话双限制,超量优雅结束

    from langchain.agents import create_agent
    from langchain.agents.middleware import ModelCallLimitMiddleware
    from langgraph.checkpoint.memory import InMemorySaver

    agent = create_agent(
    model="gpt-4.1",
    checkpointer=InMemorySaver(),
    middleware=[
    ModelCallLimitMiddleware(
    thread_limit=15, # 整个会话最大调用
    run_limit=5, # 单次请求最大调用
    exit_behavior="end", # 超量优雅终止
    )
    ],
    )

4. 模型容错:ModelFallbackMiddleware

  • 作用:主模型不可用自动切备用

  • 优化点:按优先级排序,主→轻量→其他厂商

    from langchain.agents import create_agent
    from langchain.agents.middleware import ModelFallbackMiddleware

    agent = create_agent(
    model="gpt-4.1",
    middleware=[
    ModelFallbackMiddleware(
    "gpt-4.1-mini", # 第一备用
    "claude-3-5-sonnet-20241022", # 第二备用
    )
    ],
    )

5. 隐私脱敏:PIIMiddleware

  • 作用:自动识别邮箱、身份证、银行卡等并脱敏

  • 优化点:支持自定义正则,输入输出双检测

    from langchain.agents import create_agent
    from langchain.agents.middleware import PIIMiddleware
    import re

    agent = create_agent(
    model="gpt-4.1",
    middleware=[
    # 内置类型:邮箱脱敏
    PIIMiddleware("email", strategy="redact", apply_to_input=True),
    # 自定义:API Key 拦截
    PIIMiddleware(
    "api_key",
    detector=r"sk-[a-zA-Z0-9]{32}",
    strategy="block",
    ),
    ],
    )

6. 失败重试:ModelRetryMiddleware

  • 作用:模型调用失败指数退避重试

  • 优化点:只重试网络 / 限流异常,防雪崩

    from langchain.agents import create_agent
    from langchain.agents.middleware import ModelRetryMiddleware

    agent = create_agent(
    model="gpt-4.1",
    middleware=[
    ModelRetryMiddleware(
    max_retries=3,
    backoff_factor=2,
    initial_delay=1,
    max_delay=30,
    jitter=True, # 随机抖动防扎堆
    )
    ],
    )

7. 工具筛选:LLMToolSelectorMiddleware

  • 作用:工具多时先筛有用的,降 token、提准确率

  • 优化点:限定最大工具数,必选工具固定

    from langchain.agents import create_agent
    from langchain.agents.middleware import LLMToolSelectorMiddleware

    agent = create_agent(
    model="gpt-4.1",
    tools=["search", "calc", "weather", "email", "db"],
    middleware=[
    LLMToolSelectorMiddleware(
    model="gpt-4.1-mini",
    max_tools=3, # 最多选3个
    always_include=["search"], # 必带搜索
    )
    ],
    )


四、生产最佳实践

  1. 组合使用:上下文压缩 + 次数限制 + 重试 + 脱敏,一套稳如狗
  2. 分层防护:普通工具不审核,高危工具强制人审
  3. 成本控制:摘要 / 工具筛选用轻量模型,主模型用强模型
  4. 异常兜底:模型回退 + 重试双重保障,不崩服务

五、快速集成模板(万能组合)

复制代码
from langchain.agents import create_agent
from langchain.agents.middleware import (
    SummarizationMiddleware,
    ModelCallLimitMiddleware,
    ModelRetryMiddleware,
    PIIMiddleware,
)
from langgraph.checkpoint.memory import InMemorySaver

# 生产级 Agent 中间件套餐
agent = create_agent(
    model="gpt-4.1",
    tools=[],
    checkpointer=InMemorySaver(),
    middleware=[
        # 1. 隐私脱敏
        PIIMiddleware("email", strategy="redact"),
        # 2. 上下文压缩
        SummarizationMiddleware(model="gpt-4.1-mini", trigger=("tokens", 3500), keep=("messages", 15)),
        # 3. 调用次数限制
        ModelCallLimitMiddleware(thread_limit=15, run_limit=5),
        # 4. 模型重试
        ModelRetryMiddleware(max_retries=3),
    ],
)
相关推荐
哥本哈士奇10 小时前
LangChain Deepagent 版本0.6.1中间件一个bug
中间件·langchain·bug
秦jh_12 小时前
【LangChain】流式传输
langchain
前端小超人rui12 小时前
AI Agent对比 / Coze Dify LangChain LangGraph的区别
langchain·a i agent
Restart-AHTCM14 小时前
LangChain学习之环境搭建与基础概念(1/8)
学习·langchain
米小虾14 小时前
从 ReAct 到 Multi-Agent:AI Agent 架构设计的演进与实践
langchain·jetbrains
小趴菜不能喝15 小时前
LangChain 开发Agent基础
langchain
云姜.16 小时前
如何快速使用Langchain上手编程
python·langchain
情绪总是阴雨天~16 小时前
深度解析:LangChain、Agent、RAG、FC、ReAct、LangGraph、A2A、MCP — 区别、联系与全景图
python·langchain·agent·rag·langgraph·mcp·a2a
赢乐17 小时前
AI大模型学习笔记:LangChain核心组件-工具(Tools)
langchain·大模型·agent·function_call·工具(tools)·tool装饰器·定义工具
逍遥德17 小时前
SpringBoot自带TaskScheduler 接口使用详解:(02)微服务多实例模式下,爆发任务重复执行问题
spring boot·分布式·后端·微服务·中间件