螺旋钢管网站建设营销培训学院
2026/1/8 8:06:00 网站建设 项目流程
螺旋钢管网站建设,营销培训学院,wordpress企业中文模板下载,c 做网站看什么书LangChain v1.1.0 于 2025 年 11 月 25 日发布#xff0c;中间件#xff08;Middleware#xff09;作为 create_agent 的核心特性#xff0c;为 Agent 开发带来了前所未有的灵活性和可扩展性。本文将深入解读中间件机制#xff0c;并通过实战示例帮助你快速上手。 一、什么…LangChain v1.1.0 于 2025 年 11 月 25 日发布中间件Middleware作为create_agent的核心特性为 Agent 开发带来了前所未有的灵活性和可扩展性。本文将深入解读中间件机制并通过实战示例帮助你快速上手。一、什么是中间件中间件Middleware是 LangChain v1 引入的核心抽象它允许开发者在 Agent 执行流程的各个阶段插入自定义逻辑实现上下文工程Context Engineering——在正确的时间将正确的信息传递给模型。中间件的核心价值动态提示词管理根据上下文动态调整系统提示对话历史压缩自动摘要过长的对话历史工具访问控制根据用户权限选择性暴露工具状态管理跨执行周期维护自定义状态安全护栏输入输出验证、PII 脱敏、内容审核Agent FlowYesNobefore_agentInputbefore_modelwrap_model_callModel Callafter_modelTool Call?wrap_tool_callTool Execafter_agentOutput二、中间件钩子详解LangChain 中间件提供6 个核心钩子覆盖 Agent 执行的完整生命周期钩子执行时机典型用例before_agentAgent 调用前加载记忆、验证输入before_model每次 LLM 调用前更新提示词、裁剪消息wrap_model_call包裹 LLM 调用拦截/修改请求和响应wrap_tool_call包裹工具调用拦截/修改工具执行after_model每次 LLM 响应后验证输出、应用护栏after_agentAgent 完成后保存结果、清理资源三、内置中间件一览3.1 SummarizationMiddleware - 对话历史摘要当对话历史接近 Token 上限时自动使用 LLM 压缩旧消息保留近期上下文。fromlangchain.agentsimportcreate_agentfromlangchain.agents.middlewareimportSummarizationMiddleware agentcreate_agent(modelgpt-4o,tools[weather_tool,calculator_tool],middleware[SummarizationMiddleware(modelgpt-4o-mini,# 用于生成摘要的模型trigger{tokens:4000},# 触发摘要的 Token 阈值keep{messages:20},# 保留最近 20 条消息),],)v1.1 增强支持基于模型 Profile 的灵活触发点配置实现上下文感知的摘要策略。3.2 PIIMiddleware - PII 敏感信息处理检测并处理个人身份信息PII支持脱敏redact、掩码mask、阻断block等策略。fromlangchain.agents.middlewareimportPIIMiddleware agentcreate_agent(modelclaude-sonnet-4-5-20250929,tools[read_email,send_email],middleware[# 脱敏邮箱地址PIIMiddleware(email,strategyredact,apply_to_inputTrue),# 使用正则检测并阻断电话号码PIIMiddleware(phone_number,detectorr(?:\?\d{1,3}[\s.-]?)?(?:\(?\d{2,4}\)?[\s.-]?)?\d{3,4}[\s.-]?\d{4},strategyblock),])3.3 HumanInTheLoopMiddleware - 人机协作审批对敏感工具调用暂停执行等待人工审批。fromlangchain.agents.middlewareimportHumanInTheLoopMiddleware agentcreate_agent(modelclaude-sonnet-4-5-20250929,tools[read_email,send_email],middleware[HumanInTheLoopMiddleware(interrupt_on{send_email:{description:请审核此邮件后再发送,allowed_decisions:[approve,edit,reject]}})])3.4 TodoListMiddleware - 任务规划为 Agent 提供任务规划和跟踪能力自动注入write_todos工具和相关系统提示。fromlangchain.agents.middlewareimportTodoListMiddleware agentcreate_agent(modelgpt-4o,tools[read_file,write_file,run_tests],middleware[TodoListMiddleware()],)适用场景需要跨多个工具协调的复杂多步骤任务需要进度可见性的长时间运行操作3.5 ModelRetryMiddleware - 模型调用重试v1.1 新增自动重试失败的模型调用支持可配置的指数退避策略提升 Agent 可靠性。fromlangchain.agents.middlewareimportModelRetryMiddleware agentcreate_agent(modelgpt-4o,tools[...],middleware[ModelRetryMiddleware(max_retries3,backoff_factor2.0,# 指数退避因子),],)3.6 OpenAI Content Moderation - 内容审核v1.1 新增使用 OpenAI 的审核端点检测和处理不安全内容支持检查用户输入、模型输出和工具结果。fromlangchain.agents.middlewareimportOpenAIModerationMiddleware agentcreate_agent(modelopenai:gpt-4o,tools[search_tool,database_tool],middleware[OpenAIModerationMiddleware(modelopenai:gpt-4o,moderation_modelomni-moderation-latest,check_inputTrue,# 检查用户输入check_outputTrue,# 检查模型输出exit_behaviorend,),],)四、自定义中间件实战4.1 基础结构自定义中间件需要继承AgentMiddleware类并实现所需的钩子方法fromlangchain.agentsimportcreate_agentfromlangchain.agents.middlewareimportAgentMiddleware,AgentStatefromtypingimportAnyclassMyCustomMiddleware(AgentMiddleware):defbefore_model(self,state:AgentState,runtime)-dict[str,Any]|None:在每次模型调用前执行print(f即将调用模型当前消息数:{len(state[messages])})returnNone# 返回 None 表示不修改状态defafter_model(self,state:AgentState,runtime)-dict[str,Any]|None:在每次模型响应后执行print(模型调用完成)returnNone4.2 实战案例调用计数器中间件实现一个跟踪模型调用次数并在超限时终止的中间件fromlangchain.agentsimportcreate_agentfromlangchain.messagesimportHumanMessagefromlangchain.agents.middlewareimportAgentState,AgentMiddlewarefromtyping_extensionsimportNotRequiredfromtypingimportAny# 扩展状态 SchemaclassCustomState(AgentState):model_call_count:NotRequired[int]user_id:NotRequired[str]classCallCounterMiddleware(AgentMiddleware[CustomState]):调用计数器中间件限制模型调用次数state_schemaCustomStatedef__init__(self,max_calls:int10):self.max_callsmax_callsdefbefore_model(self,state:CustomState,runtime)-dict[str,Any]|None:countstate.get(model_call_count,0)ifcountself.max_calls:print(f已达到最大调用次数{self.max_calls}终止执行)return{jump_to:end}# 跳转到结束节点returnNonedefafter_model(self,state:CustomState,runtime)-dict[str,Any]|None:current_countstate.get(model_call_count,0)return{model_call_count:current_count1}# 使用中间件agentcreate_agent(modelgpt-4o,middleware[CallCounterMiddleware(max_calls5)],tools[],)# 调用时传入自定义状态resultagent.invoke({messages:[HumanMessage(你好请介绍一下自己)],model_call_count:0,user_id:user-123,})4.3 实战案例基于用户等级的动态模型选择根据用户专业等级动态切换模型和工具fromdataclassesimportdataclassfromtypingimportCallablefromlangchain_openaiimportChatOpenAIfromlangchain.agents.middlewareimportAgentMiddleware,ModelRequestfromlangchain.agents.middleware.typesimportModelResponsedataclassclassUserContext:user_expertise:strbeginner# beginner | expertclassExpertiseBasedMiddleware(AgentMiddleware):根据用户等级动态选择模型和工具defwrap_model_call(self,request:ModelRequest,handler:Callable[[ModelRequest],ModelResponse])-ModelResponse:user_levelrequest.runtime.context.user_expertiseifuser_levelexpert:# 专家用户更强大的模型 高级工具modelChatOpenAI(modelgpt-4o)tools[advanced_search,data_analysis,code_execution]else:# 初学者轻量模型 基础工具modelChatOpenAI(modelgpt-4o-mini)tools[simple_search,basic_calculator]returnhandler(request.override(modelmodel,toolstools))agentcreate_agent(modelgpt-4o,tools[simple_search,advanced_search,basic_calculator,data_analysis,code_execution],middleware[ExpertiseBasedMiddleware()],context_schemaUserContext)五、中间件组合与执行顺序多个中间件按照列表顺序依次执行形成洋葱模型agentcreate_agent(modelgpt-4o,tools[...],middleware[PIIMiddleware(email,strategyredact),# 第 1 层SummarizationMiddleware(modelgpt-4o-mini),# 第 2 层HumanInTheLoopMiddleware(interrupt_on{...}),# 第 3 层CallCounterMiddleware(max_calls10),# 第 4 层],)执行流程进入阶段按顺序执行before_*钩子1→2→3→4核心执行模型调用 / 工具调用退出阶段按逆序执行after_*钩子4→3→2→1六、最佳实践从简单开始先使用静态提示词和工具仅在必要时添加动态特性增量测试每次只添加一个中间件验证其行为监控性能跟踪模型调用次数、Token 使用量和延迟善用内置中间件优先使用SummarizationMiddleware、PIIMiddleware等成熟方案区分瞬态与持久化瞬态Transientbefore_model中的消息裁剪仅影响当前调用持久化PersistentSummarizationMiddleware会永久更新状态七、总结LangChain 1.1 的中间件系统为 Agent 开发提供了强大的扩展能力特性说明可组合性多个中间件可自由组合各司其职生命周期钩子6 个钩子覆盖完整执行流程状态扩展自定义状态 Schema 支持跨调用数据传递生产就绪内置中间件经过充分测试可直接用于生产环境无论是实现对话历史压缩、敏感信息脱敏、人机协作审批还是构建复杂的动态上下文工程策略中间件都能帮助你以优雅、可维护的方式实现目标。参考资料LangChain v1.1.0 ChangelogLangChain Middleware DocumentationCustom Middleware GuideWhat’s new in LangChain v1

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询