南庄营销网站建设辽宁省建设工程招投标协会网站

张小明 2026/1/14 4:30:36
南庄营销网站建设,辽宁省建设工程招投标协会网站,做网站法律条文,城乡住房和城乡建设网站查询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
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

软件下载类型网站怎么做百度关键词流量查询

文章目录 1. Docker 网络架构概述 一、Linux 内核网络命名空间(Network Namespace):容器网络隔离的“独立房间” 1. 原理拆解 2. Docker 中的应用 3. 通俗类比 4. 实操验证(Linux 命令直接感受 netns) 二、veth pair 虚拟网卡对:容器与外部通信的“专用网线” 1. 原理拆解…

张小明 2026/1/10 18:16:43 网站建设

广西玉林建设厅官方网站重庆公司网站

如何用一个“缩放魔法”解决大屏适配的千年难题?你有没有遇到过这样的场景:团队加班一个月,终于把数据大屏做出来了——图表精美、动效流畅、领导看了都说好。结果一到客户现场,投影仪一接,满屏错位、文字模糊、图表被…

张小明 2026/1/10 18:16:46 网站建设

网站没被收录拓客公司联系方式

Node.js应用打包终极指南:一键生成跨平台可执行文件 【免费下载链接】nexe 🎉 create a single executable out of your node.js apps 项目地址: https://gitcode.com/gh_mirrors/ne/nexe 你是否曾经为Node.js应用的部署而烦恼?需要确…

张小明 2026/1/10 18:16:45 网站建设

特效网站模板软件工程公司有哪些

还在为Proxmox VE中LXC容器挂载NFS网络存储而头疼吗?权限配置复杂、重启后挂载丢失、性能调优困难,这些困扰无数用户的存储难题,现在有了更优雅的解决方案。本文将带你通过Proxmox VE Helper-Scripts项目,实现LXC容器的NFS挂载自动…

张小明 2026/1/10 18:16:44 网站建设

政务公开网站开发哪个网站可以做翻译兼职

Wan2.2-T2V-A14B 是否适合实时视频生成?性能测试报告 在短视频、直播和交互式内容爆发的今天,用户对“即时创作”的期待正不断攀升。我们已经能在几秒内生成一张高质量图像,那为什么还不能随心所欲地“说一句话就出一段视频”?这…

张小明 2026/1/10 18:16:46 网站建设

led 网站模板贵州人才网最新招聘建筑类

第一章:数据脱敏与还原的挑战与机遇在数字化转型加速的今天,数据安全成为企业信息系统建设的核心议题。数据脱敏作为保护敏感信息的关键技术,广泛应用于开发测试、数据分析和第三方共享等场景。然而,在实现高效脱敏的同时&#xf…

张小明 2026/1/12 23:18:58 网站建设