前言
LangChain 1.0的Agent框架引入了中间件(Middleware)机制,作为增强智能体可扩展性和管理性的关键组件。这一入门文章将详细阐述中间件的概念、工作原理、内置支持、自定义开发以及最佳实践。无论你是初学者还是经验开发者,本文都能帮助你快速上手中间件,构建更健壮的Agent系统。
1、LangChain Agent 中间件概述
在LangChain 1.0的Agent框架中,中间件被定义为一种可插拔的扩展机制,类似于“神经系统”,它允许开发者在Agent的生命周期中介入逻辑,如模型调用前后或工具执行过程中。根据官方文档(Middleware Overview),中间件的核心作用是拦截和修改请求/响应流,从而实现日志记录、速率限制、内容审查等功能,而不破坏核心Agent逻辑。
中间件的重要性在于它提升了Agent的灵活性和生产就绪性。在LangChain 0.x时代,扩展Agent行为往往需要重写整个流程;而在1.0中,通过中间件,你可以轻松添加自定义逻辑,使Agent更像一个可管理的“微型操作系统进程”。例如,中间件可以动态选择模型、处理工具错误或压缩记忆状态,确保Agent在复杂任务中高效运行。
官方文档强调,中间件集成于LangGraph-based的Agent Runtime中,支持在create_agent API中直接配置。它适用于各种场景,如企业级应用中的PII(个人身份信息)审查或AI系统的速率控制。通过中间件,LangChain Agent从静态执行体转变为高度可定制的自治系统。
2、中间件工作原理与集成方式
中间件在Agent Runtime中的工作机制基于LangGraph的图结构:每个中间件作为一个节点或装饰器,拦截状态流转。官方文档(Middleware Overview)描述了其核心流程——中间件可在模型调用(Model Call)、工具调用(Tool Call)或提示生成(Prompt Generation)阶段介入,修改输入/输出参数或添加侧效逻辑。
中间件Middleware是本次LangChain 1.0更新中上线的一个重大功能,根据官网的说明,借助中间件,开发者可以高度定制和控制Agent运行的每一个环节。简而言之,借助中间件,一个ReAct Agent的运行模型如下:通过在Agent实际运行过程中设置一些钩子,来更改原始程序运行的行为。钩子是框架或系统在某些关键执行点暴露的扩展接口。开发者可以“挂上”自己的逻辑,在那些点上插入、修改或替换行为,而无需改变主流程代码。就像在流水线上某个环节设置了一个“检查点”或“插入器”。在LangChain的Agent执行循环中,比如“模型调用前”“模型调用后”“工具调用前后”都是可能挂钩子的点。
为了更好理解这一点,我们用流程图来理解:
这是之前的智能体调用流程:

LangChain v1.0引入中间件Middleware后,智能体调用流程变更如下:

集成方式也比较简单,主要通过装饰器(如@wrap_model_call、@wrap_tool_call)或create_agent的参数传入。中间件支持链式组合,允许多个中间件顺序执行。
以下是一个极简调用流程实例,演示如何集成一个内置中间件(日志记录)到Agent中:
# 1. 导入相关库from langchain.agents import create_agentfrom langchain_openai import ChatOpenAI # 示例模型,可替换from langchain_community.tools.tavily_search import TavilySearchResults # 示例工具from langchain.middleware import wrap_model_call # 中间件装饰器# 2. 定义一个简单日志中间件(自定义示例)def log_middleware(inputs): print(f"Model input: {inputs}") return inputs # 返回修改后的输入,或直接传递# 3. 初始化模型、工具和中间件model = ChatOpenAI(model="gpt-4o")web_search = TavilySearchResults(max_results=2)wrapped_model = wrap_model_call(model, log_middleware) # 应用中间件到模型# 4. 创建Agent并集成中间件agent = create_agent( model=wrapped_model, # 使用包装后的模型 tools=[web_search], system_prompt="你是一名智能助手,使用工具解决问题。")# 5. 运行Agentresult = agent.invoke( {"messages": [{"role": "user", "content": "2024年诺贝尔物理学奖得主是谁?"}]})print(result['messages'][-1].content) # 输出结果
在这个示例中,wrap_model_call装饰器拦截模型输入并打印日志。官方文档指出,中间件通过LangGraph的状态图实现:输入流经中间件节点后,继续到模型或工具节点,支持异步和流式操作(如stream模式)。这确保了无缝集成,同时保持Agent的ReAct(Reasoning + Acting)循环。
3、内置中间件详解
LangChain 1.0提供了若干内置中间件,覆盖常见生产需求。根据官方文档(Built-in Middleware),这些中间件可直接导入并应用,无需自定义开发。它们包括日志、速率限制、记忆管理和内容审查等。以下表格列出关键内置中间件,按领域分类,包括名称和功能说明:
| 领域 | 中间件名称 | 功能说明 |
|---|---|---|
| 日志与监控 | Logging Middleware | 在模型/工具调用前后记录输入输出,支持自定义日志级别和格式,便于调试和审计。应用场景:开发阶段追踪Agent决策过程。 |
| 速率控制 | Rate Limiting Middleware | 限制调用频率(如每秒N次),防止API滥用或成本超支。支持令牌桶算法。应用场景:集成高成本模型如GPT-4时控制支出。 |
| 记忆管理 | Memory Compression Middleware | 压缩历史消息,减少上下文长度,优化模型性能。支持摘要或截断策略。应用场景:长对话Agent中防止令牌溢出。 |
| 内容安全 | PII Detection Middleware | 检测并屏蔽个人身份信息(如邮箱、手机号),确保合规。支持正则或ML-based检测。应用场景:企业应用中隐私保护。 |
| 错误处理 | Error Handling Middleware | 捕获工具/模型错误,重试或回退到备用逻辑。支持自定义重试次数。应用场景:不稳定API集成时提升鲁棒性。 |
| 提示优化 | Prompt Rewriting Middleware | 动态重写提示模板,注入上下文或优化查询。应用场景:多语言支持或个性化提示生成。 |
例如,使用内置日志中间件的一个代码片段(参考官网):
from langchain.middleware.built_in import logging_middleware# 应用到模型wrapped_model = logging_middleware(model, level="DEBUG")
这些内置中间件可组合使用,如先应用PII审查再日志记录,确保Agent安全高效。官方建议从简单场景起步,逐步扩展。
4、自定义中间件开发指南
对于特定需求,LangChain 1.0允许开发者创建自定义中间件。自定义中间件本质是一个可调用函数,接受输入字典并返回修改版,支持装饰器模式。
LangChain 1.0的中间件能实现如下功能,这里以列表形式呈现:功能列表、功能说明、常用钩子。
- 功能列表:模型相关钩子归纳为三种:before_model、modify_model_request、after_model(可三选其一或组合实现)。它们对应“模型调用前 → 请求修改 → 模型返回后”的三个阶段。
- 功能说明:
- before_model:总结/裁剪历史、注入系统指令、敏感信息脱敏、状态校验、条件分支跳转。
- modify_model_request:对即将发送的请求做精准改写(模型名、参数、工具列表、messages 等)。
- after_model:做人审(HITL)、输出校验/重写、添加安全标签或生成可观测数据。
- 常用钩子:此外,开发者还能用包装器把一次模型/工具调用整体“包起来”,实现重试、熔断、缓存、降级与动态路由:
- wrap_model_call:在一次模型调用外层加壳,可动态换模型/改温度/改 tools,也可做 A/B、回退策略。v1 把“动态模型选择”正式迁入这里。
- wrap_tool_call:统一处理工具调用的超时、重试、白/黑名单、错误上报,或在人审批准前阻断高风险工具(写文件、SQL、HTTP)。
开发步骤:
- 定义中间件函数:输入为字典(如
{"input": ..., "context": ...}),输出为修改后的字典或None(表示中断)。 - 使用装饰器包装:如
@wrap_model_call用于模型、@wrap_tool_call用于工具。 - 集成到Agent:传入
create_agent或直接包装组件。
以下是一个自定义中间件示例,实现动态模型选择(根据任务复杂度切换模型,参考官网自定义示例):
from langchain.middleware import wrap_model_callfrom langchain_openai import ChatOpenAI# 定义自定义中间件函数(结合modify_model_request钩子)def dynamic_model_selector(inputs): # 根据输入复杂度选择模型 if len(inputs.get("messages", [])) > 5: # 复杂任务用强大模型 inputs["model"] = ChatOpenAI(model="gpt-4o") else: inputs["model"] = ChatOpenAI(model="gpt-3.5-turbo") return inputs# 包装模型base_model = ChatOpenAI(model="gpt-3.5-turbo") # 默认模型wrapped_model = wrap_model_call(base_model, dynamic_model_selector)# 然后用于create_agent,如上文示例
另一个示例:工具错误处理中间件(结合wrap_tool_call和after_model钩子):
from langchain.middleware import wrap_tool_calldef error_retry_middleware(inputs, max_retries=3): for attempt in range(max_retries): try: # 模拟工具调用 return inputs["tool"].invoke(inputs["args"]) except Exception as e: if attempt == max_retries - 1: raise e print(f"Retry {attempt + 1} due to: {e}")# 包装工具wrapped_tool = wrap_tool_call(web_search, error_retry_middleware)
官方文档强调,自定义中间件应保持轻量,避免引入性能瓶颈。测试时,使用LangGraph的检查点功能验证状态流。
5、中间件的最佳实践与注意事项
在生产环境中使用中间件时,遵循以下最佳实践:
首先,优先使用内置中间件减少自定义代码;
其次,链式组合时注意顺序(如先安全审查再日志);
最后,监控性能——过多中间件可能增加延迟,使用异步模式缓解。
潜在注意事项包括:兼容性问题(确保中间件与模型/工具API匹配);性能开销(基准测试每个中间件);以及状态管理(中间件应无副作用或正确处理共享状态)。官方文档建议结合LangServe部署中间件增强Agent,实现云端可观察性。
此外,与LangChain生态集成时,可将中间件扩展到LangGraph节点,支持多Agent协作。避免过度使用,以免复杂化系统。
总之,LangChain 1.0的Agent中间件机制标志着智能体开发的成熟化,通过内置和自定义支持,不仅简化了扩展流程,还显著提升了系统的安全性和效率。这一功能将Agent从基础执行者转变为高度可控的智能平台,能够应对从简单查询到企业级自动化等多种挑战。开发者们可参考官方文档实践,探索中间件的潜力,构建更可控更可靠的AI智能体应用。
普通人如何抓住AI大模型的风口?
为什么要学AI大模型
当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!
DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。

与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。

AI大模型开发工程师对AI大模型需要了解到什么程度呢?我们先看一下招聘需求:

知道人家要什么能力,一切就好办了!我整理了AI大模型开发工程师需要掌握的知识如下:
大模型基础知识
你得知道市面上的大模型产品生态和产品线;还要了解Llama、Qwen等开源大模型与OpenAI等闭源模型的能力差异;以及了解开源模型的二次开发优势,以及闭源模型的商业化限制,等等。

了解这些技术的目的在于建立与算法工程师的共通语言,确保能够沟通项目需求,同时具备管理AI项目进展、合理分配项目资源、把握和控制项目成本的能力。
产品经理还需要有业务sense,这其实就又回到了产品人的看家本领上。我们知道先阶段AI的局限性还非常大,模型生成的内容不理想甚至错误的情况屡见不鲜。因此AI产品经理看技术,更多的是从技术边界、成本等角度出发,选择合适的技术方案来实现需求,甚至用业务来补足技术的短板。
AI Agent
现阶段,AI Agent的发展可谓是百花齐放,甚至有人说,Agent就是未来应用该有的样子,所以这个LLM的重要分支,必须要掌握。
Agent,中文名为“智能体”,由控制端(Brain)、感知端(Perception)和行动端(Action)组成,是一种能够在特定环境中自主行动、感知环境、做出决策并与其他Agent或人类进行交互的计算机程序或实体。简单来说就是给大模型这个大脑装上“记忆”、装上“手”和“脚”,让它自动完成工作。
Agent的核心特性
自主性: 能够独立做出决策,不依赖人类的直接控制。
适应性: 能够根据环境的变化调整其行为。
交互性: 能够与人类或其他系统进行有效沟通和交互。

对于大模型开发工程师来说,学习Agent更多的是理解它的设计理念和工作方式。零代码的大模型应用开发平台也有很多,比如dify、coze,拿来做一个小项目,你就会发现,其实并不难。
AI 应用项目开发流程
如果产品形态和开发模式都和过去不一样了,那还画啥原型?怎么排项目周期?这将深刻影响产品经理这个岗位本身的价值构成,所以每个AI产品经理都必须要了解它。

看着都是新词,其实接触起来,也不难。
从0到1的大模型系统学习籽料
最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师(吴文俊奖得主)

给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】
适学人群
应届毕业生: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。

AI大模型系统学习路线
在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。
- 基础篇,包括了大模型的基本情况,核心原理,带你认识了解大模型提示词,Transformer架构,预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门AI大模型
- 进阶篇,你将掌握RAG,Langchain、Agent的核心原理和应用,学习如何微调大模型,让大模型更适合自己的行业需求,私有化部署大模型,让自己的数据更加安全
- 项目实战篇,会手把手一步步带着大家练习企业级落地项目,比如电商行业的智能客服、智能销售项目,教育行业的智慧校园、智能辅导项目等等

但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。
AI大模型入门到实战的视频教程+项目包
看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

海量AI大模型必读的经典书籍(PDF)
阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。

600+AI大模型报告(实时更新)
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

AI大模型面试真题+答案解析
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下


AI时代,企业最需要的是既懂技术、又有实战经验的复合型人才,**当前人工智能岗位需求多,薪资高,前景好。**在职场里,选对赛道就能赢在起跑线。抓住AI这个风口,相信下一个人生赢家就是你!机会,永远留给有准备的人。
如何获取?
这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】
907

被折叠的 条评论
为什么被折叠?



