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),
    ],
)
相关推荐
大模型真好玩3 天前
LangChain DeepAgents 速通指南(九)—— 生产级智能体框架 DeepAgents Code 源码导读
人工智能·langchain·agent
早点睡啊5 天前
精读 LangChain 官方文档(二)Model 篇:把模型调用升级成工程化推理接口
人工智能·langchain
星始流年7 天前
从 Tool 到 Skill——基于 LangChain 的服务端Skill实现
前端·langchain·agent
codedx7 天前
LangChain 和 LangGraph 构建的 Agent 项目模版
后端·langchain·agent
颜酱8 天前
LangGraph 入门指南
langchain
武子康9 天前
调查研究-186 LangChain 和 LangGraph 的区别:从快速构建 Agent 到生产级工作流编排
人工智能·langchain·llm
葫芦和十三11 天前
渐进发现|代码库不是文档库
langchain·agent·ai编程
柒和远方12 天前
LangGraph 深度解析:从增强型 LLM 到生产级 Agent
langchain·llm·agent
沪漂阿龙13 天前
《LangChain》成本、限流、缓存、降级:AI 应用上线要考虑的问题
人工智能·langchain
段一凡-华北理工大学13 天前
LangChain框架在高炉炼铁智能化领域的应用~系列文章09:工具调用Tool — 让AI学会操作高炉仪表盘
网络·人工智能·架构·langchain·高炉炼铁·高炉智能化·高炉智能体