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),
    ],
)
相关推荐
狼爷11 小时前
从零用 Java 构建 AI Agent 框架:JavaManus 设计与实现深度解析
后端·langchain·aigc
桃西西呀11 小时前
LangChain 之七:回调与可观测
人工智能·langchain·llm
桃西西呀12 小时前
LangChain 之六:记忆与历史
人工智能·langchain·llm
打工仔折腾 AI14 小时前
把AI Agent托管在家用电脑:UU远程终端与端口映射实测记录
人工智能·后端·python·langchain·ai agent 实战
打工仔折腾 AI16 小时前
LLaMA 1 到 LLaMA 3 架构演进拆解:从 RoPE、GQA 到词表扩张
人工智能·后端·python·深度学习·langchain·llama
打工仔折腾 AI19 小时前
把 AI Agent 托管到家里电脑:UU远程端口映射与CLI实测记录
人工智能·后端·python·langchain·电脑·ai agent 实战
染指111021 小时前
135.Agent-多Agent框架-LangChain多智能体(SubAgents子代理)
数据库·人工智能·设计模式·langchain·agent·agents
用户31346721435421 小时前
Agent相关 - agent_scratchpad 到底该放哪?一个隐蔽的顺序坑
langchain·llm·agent
逆风飞翔的小叔1 天前
【AI大模型】Langchain 多类型对话消息使用实战操作详解
langchain·langchain 消息类型·langchain 消息使用·langchain 消息详解·langchain 消息·langchain 消息总结
染指11101 天前
134.Agent-多Agent框架-LangChain多智能体
人工智能·中间件·langchain·agents