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),
    ],
)
相关推荐
阳区欠9 小时前
【LangChain】LLM基础介绍
开发语言·python·langchain
动能小子ohhh11 小时前
DocForge平台的设计与开发--文件上传接口的实现
开发语言·人工智能·python·langchain·ocr·fastapi
颜酱12 小时前
LangChain LCEL Chain 零基础入门指南
langchain
颜酱14 小时前
LangChain调用向量模型,存入向量数据库
python·langchain
wuhen_n15 小时前
RAG 核心:向量嵌入与本地向量数据库实战
前端·langchain·ai编程
冷小鱼15 小时前
LangChain 系统性科普:从入门到架构设计
langchain
wuhen_n15 小时前
RAG 关键环节:文本分块策略与最优参数配置
前端·langchain·ai编程
我是一颗柠檬19 小时前
【Java项目技术亮点】分布式锁实现与优化:从Redisson到ZooKeeper,彻底搞懂分布式锁的底层原理
java·redis·分布式·中间件·java-zookeeper
矩阵科学20 小时前
Langchain.js 实战四:工具的使用
langchain·node.js
P-ShineBeam21 小时前
智能体-LangChain框架-Tools工具的使用指南
数据库·人工智能·语言模型·自然语言处理·langchain