发布时间:2026-02-26 21:35:22编辑:123阅读(18)
LangChain 1.0 中间件核心功能介绍
中间件Middleware是LangChain 1.0更新中上线的一个重大功能,根据官网的说明,借助中间件,开发者可以高度定制和控制Agent运行的每一个环节。
通过在Agent实际运行过程中设置一些钩子,来更改原始程序运行的行为。
LangChain 1.0的中间件能实现如下功能
| 功能类别 | 功能说明 | 常用钩子 |
| 监控/日志/指标 | 跟踪Agent的行为、模型调用次数、token使用量、工具调用频率等。 | before_model、 after_model、 wrap_model_call |
| 修改输入/上下文工程 | 在模型调用前修改消息历史、添补系统提示、裁剪上下文、替换模型参数等。 | before_model、 modify_model_request |
| 动态模型/工具路由 | 根据当前状态决定使用哪个模型、启用哪些工具,动态调整调用策略。 | modify_model_request、 wrap_model_call |
| 控制流程/限流/重试/降级 | 对模型或工具调用加上重试机制、超时、降级方案、跳转结束、提前中断。 | wrap_model_call、 before_model |
| 合规/审核 | 在调用工具前或后插入人工审核、敏感内容检查、Pll检测、安全过滤。 | after_model、 wrap_tool_call |
| 摘要/上下文裁剪 | 当对话变长或token靠近限制时,自动摘要历史、压缩上下文以维持性能。 | before_model |
| 工具选择与调用管理 | 在模型调度工具前决定哪些工具可用、它们是否被选中、限制调用频率。 | modify_model_request、 wrap_tool_call |
| 结构化输出/响应格式控制 | 在请求模型之前或之后规范输出格式、校验结构化数据。 | modify_model_request、 after_model |
| 状态扩展 | 自定义Aaent的状态schema(如调用次数、用户偏好、认证状态),中间件可以读写这些状态。 | before_model、 after_model |
钩子是框架或系统在某些关键执行点暴露的扩展接口。开发者可以“挂上”自己的逻辑,在那些点上插入、修改或替换行为,而无需改变主流程代码。就像在流水线上某个环节设置了一个“检查点”或“插入器”。
在LangChain的Agent执行循环中,比如“调用模型前”,“模型调用后”,“工具调用前后”都是可能挂钩子的点。
总的来说,Middlewaer"模型相关"钩子归纳为三种:before_model、modify_model_request、after_model(可三选其一或组合实现)。它们对应 "模型调用前——— 请求修改 ——— 模型返回后" 的三个阶段。
典型用途如下:
before_model:总结/裁剪历史、注入系统指令、敏感信息脱敏、状态校验、条件分支跳转。
modify_model_request:对即将发送的请求做精准改写(模型名、参数、工具列表、message等)。
after_model:做人审(HITL)、输出校验/重写、添加安全标签或生成可观测数据。
wrap_model_call:在一次模型调用外层加壳,可动态换模型/改温度/改tools,也可做A/B、回退策略。1.0版本把“动态模型选择”正式迁入这里。
wrap_tool_call:统一处理工具调用的超时、重试、白/黑名单、错误上报,或在人审批准前阻断高风险工具(写文件、SQL、HTTP)。
并且在LangChain 1.0中,还允许开发者自定义中间件,从而实现更加灵活的Agent行为管理。
模型动态选择
上一篇: LangChain1.0-Agent-部署/上线(开发人员必备)
下一篇: 没有了
52157
52056
42242
39086
33604
30557
29219
24213
24111
22451
18°
262°
295°
301°
276°
315°
283°
314°
318°
328°