LangChain v1第 11 篇

第 6 章:预制 Middleware

Middleware 在模型或工具节点前后执行,解决横切问题,不承担业务状态机。按顺序传入 middleware=[...];顺序会影响谁先观察和修改请求。

本站只展示学习文档。示例不会在构建或部署时执行;手动运行可能需要 API Key 并产生模型费用。

约 283 字·预计阅读 1 分钟

Middleware 在模型或工具节点前后执行,解决横切问题,不承担业务状态机。按顺序传入 middleware=[...];顺序会影响谁先观察和修改请求。

middleware = [
    SummarizationMiddleware(model=model, trigger=("messages", 8), keep=("messages", 4)),
    ModelCallLimitMiddleware(run_limit=4, thread_limit=12, exit_behavior="end"),
]
agent = create_agent(model, tools=tools, middleware=middleware)
Middleware 关键参数 适用场景
SummarizationMiddleware model、trigger、keep、summary_prompt 历史接近上下文预算时总结旧消息;trigger 可为 ("messages", n)、("tokens", n)、("fraction", f)
ModelCallLimitMiddleware run_limit、thread_limit、exit_behavior 防止单次运行或一段会话无限模型调用;end 正常结束,error 让调用方处理

摘要是有损压缩,不是审计归档;重要事实应有独立 Store/数据库来源。调用上限也不等于费用上限,工具、输入 token 和不同模型仍可能产生不同成本。运行 10_prebuilt_middleware.py 以低阈值展示 call limit 的确定性边界;真实模型调用只发生在正常路径。

当前 deep_researcher.py 用 max_react_tool_calls 和 max_researcher_iterations 手工终止循环,功能上类似限制,但它们是该图的显式业务控制,不能误称为 LangChain middleware。

参考资源与示例代码