当前位置: 首页 > news >正文

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), ], )
http://www.jsqmd.com/news/501681/

相关文章:

  • 2026年阿里云企业邮箱配置指南:套餐解析与协同办公价值 - 品牌2026
  • 金仓数据库在MySQL迁移中的实践复盘:一家三甲医院电子病历系统性能与成本优化实录
  • C++多态入门(下):抽象类与多态原理,从纯虚函数到虚表机制深度解析(附高频面试题)
  • 支付宝立减金快速回收攻略:轻松变现无需等待 - 团团收购物卡回收
  • 属电子信息类专业电子信息工程(Electronic Information Engineering,简称 EE)专业是什么?
  • 初学者必备的BUCK DCDC转换器学习指南:基于TSMC18工艺恒定时间控制,涵盖设计仿真、...
  • 2026 成都化妆美甲培训学校排名:本地实战与就业推荐 - 梅1梅
  • 网页绘图,无需注册
  • 在上海怎么买腾讯企业邮箱?2026年最新联系方式与报价指南 - 品牌2026
  • pmsm基于新型非奇异快速终端的滑模+dpc无差电流预测控制。 速度控制器采用新型非奇异滑模面...
  • 金仓数据库在MySQL迁移中的技术观察:高兼容性与平滑替代路径实践
  • openclaw 本地部署ollama模型使用
  • 计算机毕业设计之springboot学生会事务管理平台的设计与实现
  • 选购塑料托盘如何选择靠谱品牌 - 工业推荐榜
  • 2026年阿里云企业邮箱收费标准详解:标准版、集团版与尊享版价格全解析 - 品牌2026
  • android java设置控件不可见+高度=0
  • 全面理解MySQL架构
  • 深度学习野外环境下野生动物检测(YOLOv12/v11/v8/v5模型+数据集)(源码+lw+部署文档+讲解等)
  • 国内代理IP地域选择与降低延迟方法
  • 北京对不同材质清洁专业的家政公司收费贵吗,推荐哪家 - mypinpai
  • 2026年阿里企业邮箱联系电话查询指南:官方服务渠道与套餐价格解析 - 品牌2026
  • 微信私域流量经营:构建“引流-沉淀-转化”闭环,赋能品牌长效增长
  • 【C++项目】从零实现高并发内存池(一):核心原理与设计思路
  • 在 SAP BTP 上选对开发武器:从 No/Low Code 到 Pro-Code 的项目落地指南
  • 079基于spring+boot的快递分拣管理系统-springboot+vue
  • COMSOL激光淬火相变模拟
  • 基于跨模态医学图像生成模型的早期肺癌风险评估研究-(resnet)-大数据深度学习算法毕设毕业设计项目-含完整论文源码
  • 2389168‑47‑0,18:1 PE-PEG2000-benzylguanine:脂质体靶向递送 SNAP‑抗体偶联专用辅料
  • 2026年低噪音运行风机排名,哪个品牌性价比高 - myqiye
  • 永磁同步电机的无传感器控制就像给电机装上隐形的眼睛,不需要物理编码器就能感知转子位置。今天咱们聊聊全速域控制的实战经验,重点看看不同转速区间怎么玩转算法