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),
    ],
)
相关推荐
霍格沃兹测试学院-小舟畅学1 小时前
LangChain + DeepSeek 实战拆解:从 LCEL 到智能体,如何真正“做出”一个可控 AI 系统?
java·人工智能·langchain
marsh02062 小时前
12 openclaw中间件开发:打造可复用的业务逻辑组件
ai·中间件·编程·技术
爱喝可乐的老王2 小时前
LangChain自定义中间件
中间件·langchain
汀沿河2 小时前
3 LangChain 1.0 中间件(Middleware)- after_model、after_agent
前端·中间件·langchain
java1234_小锋3 小时前
基于LangChain的RAG与Agent智能体开发 - 使用LangChain调用大语言模型
人工智能·语言模型·langchain·rag
chaors3 小时前
从零学RAG0x0c:AdvancedRAG检索优化-混合检索
langchain·llm·ai编程
chaors3 小时前
从零学RAG0x08:AdvancedRAG摘要索引 & 父子索引优化
人工智能·langchain·ai编程
chaors3 小时前
从零学RAG0x0a:AdvancedRAG查询优化-问题丰富 & 问题拆解
人工智能·langchain·ai编程
chaors3 小时前
从零学RAG0x09:AdvancedRAG假设性文档 & 元数据索引优化
人工智能·langchain·ai编程