LangChain 的内置中间件(Middleware)就像是给 AI Agent 配备的“交通警察”“全能秘书”。它们不需要你修改 Agent 的核心逻辑,就能在 Agent 执行任务的关键节点(比如调用模型前、调用工具后)自动插入各种增强功能。

这些中间件主要围绕上下文管理、安全管控、容错重试、成本控制四大核心需求设计。以下是 LangChain 中高频使用的内置中间件及其实际应用:

🛠️ LangChain 核心内置中间件速览

表格

中间件名称 核心作用 典型实际应用场景
SummarizationMiddleware 自动压缩历史对话,防止 Token 超限 客服机器人、长文多轮对话,避免上下文溢出报错
HumanInTheLoopMiddleware 敏感操作前暂停,等待人工审批 金融转账、删除数据库、发送邮件等高风险操作
ModelCallLimitMiddleware 限制模型调用次数,防止死循环 防止 Agent 陷入无限思考,严格控制 API 账单成本
ToolCallLimitMiddleware 限制工具调用次数 防止高频调用第三方付费 API(如天气、股票接口)
ModelFallbackMiddleware 主模型挂了自动切换备用模型 提升服务稳定性,当 GPT-4 宕机时自动降级到 GPT-3.5
PIIMiddleware 识别并脱敏隐私信息(PII) 合规审查,自动掩盖日志中的手机号、身份证、银行卡号
ModelRetryMiddleware 模型调用失败自动重试 应对网络波动或大模型服务商的临时限流(Rate Limit)
ToolRetryMiddleware 工具调用失败自动重试 第三方接口不稳定时,自动重新尝试获取数据

🚀 核心中间件的实际应用与代码示例

1. 上下文管理:自动摘要 (SummarizationMiddleware)

作用:当对话历史太长、Token 快要用完时,自动调用一个轻量级模型把旧消息总结成一段摘要,同时保留最新的几条消息。
实际应用:在长周期的心理咨询或客服对话中,既能记住之前的核心诉求,又不会因为上下文过长导致报错或费用激增。

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

agent = create_agent(
    model="gpt-4o",
    tools=[],
    middleware=[
        SummarizationMiddleware(
            model="gpt-4o-mini",  # 用便宜的小模型做摘要,省钱
            trigger={"tokens": 4000, "messages": 10}, # 达到4000 tokens或10条消息时触发
            keep={"messages": 5}, # 无论如何保留最新的5条消息不压缩
        )
    ],
)
2. 安全管控:人工介入 (HumanInTheLoopMiddleware)

作用:在 Agent 准备调用某些高危工具前强行“踩刹车”,等待人类批准、编辑或直接拒绝。
实际应用:你做了一个能自动写 SQL 删库的运维 Agent,为了防止它误删数据,必须在执行 delete_database 工具前加入人工审核。

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

# 必须配置 Checkpointer 来保存暂停时的状态
agent = create_agent(
    model="gpt-4o",
    tools=[send_email_tool, delete_data_tool],
    checkpointer=InMemorySaver(), 
    middleware=[
        HumanInTheLoopMiddleware(
            interrupt_on={
                "send_email_tool": {"allowed_decisions": ["approve", "reject"]},
                "delete_data_tool": False, # 设为 False 表示永远拦截,或按需配置
            }
        )
    ],
)
3. 成本与稳定:调用限制与降级 (Call Limit & Fallback)

作用ModelCallLimitMiddleware 给 Agent 的思考次数设上限;ModelFallbackMiddleware 提供备胎模型。
实际应用:防止 Agent 因为某个问题钻牛角尖,连续调用几十次模型导致一夜之间花光预算;或者在主模型(如 OpenAI)服务崩溃时,自动无缝切换到备用模型(如 Anthropic 或国内大模型)。

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

agent = create_agent(
    model="gpt-4o",
    tools=[],
    middleware=[
        # 限制单次请求最多调用 5 次模型,超过就优雅结束
        ModelCallLimitMiddleware(run_limit=5, exit_behavior="end"),
        
        # 如果 GPT-4o 挂了,自动切到 Claude,再挂了切到 GPT-3.5
        ModelFallbackMiddleware("claude-3-5-sonnet", "gpt-3.5-turbo"),
    ],
)
4. 隐私合规:隐私脱敏 (PIIMiddleware)

作用:在把用户的输入发给大模型之前,自动扫描并掩盖敏感信息(如邮箱、电话、身份证)。
实际应用:在处理用户工单或医疗咨询时,确保上传到云端的对话数据中不包含真实的个人隐私信息,满足 GDPR 等合规要求。

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

agent = create_agent(
    model="gpt-4o",
    tools=[],
    middleware=[
        PIIMiddleware(
            patterns=["email", "phone", "credit_card"], # 指定要脱敏的信息类型
            # 也可以自定义正则表达式
        )
    ],
)

💡 总结

LangChain 的中间件机制让你能以“插拔式”的方式为 Agent 赋能。在实际开发中,你通常会组合使用这些中间件:比如用 SummarizationMiddleware 控长度,用 HumanInTheLoopMiddleware 保安全,再用 ModelRetryMiddleware 提稳定性,从而构建出一个既健壮又省钱的企业级 AI Agent。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐