本文深入探讨AI智能体开发中的上下文工程,解释了如何在LangChain中通过瞬态和持久上下文构建可靠的智能体。文章详细介绍了上下文的数据来源(运行时上下文、状态和存储)、生命周期管理,并提供了代码示例和避坑指南,帮助开发者解决Agent从原型到生产环境的"翻车"问题,实现更稳定、高效的AI应用。
01 前言
这是 2026 年的第一篇文章,首先祝大家新年快乐!愿我们在新的一年里,继续在 AI 的浪潮中并肩前行。
在前两篇关于 LangChain V1.0 的文章中,我们聊了如何通过create\_agent极简构建智能体以及运行时模型。但在实战中发现,Agent 往往在原型阶段表现惊艳,一到生产环节就容易“翻车”或“断片”。
Agent 失败的主要原因是什么?
通常并非模型不够聪明,而是因为我们没能把“正确”的信息,在“正确”的时间,以“正确”的格式喂给它。这种缺乏“正确上下文”的现状是构建可靠智能体的最大阻碍。
今天,我们就来看看 AI 工程师的核心基本功:上下文工程(Context Engineering),以及在Langchain中是如何使用的。
02 概览
在 LangChain 的设计哲学中,Agent 的核心是一个闭环:模型调用(Model call)与工具执行(Tool execution)。上下文工程的任务,就是在这两步之间建立高效的数据流动机制。
我们可以从**“数据来源”和“生命周期”两个维度来理解上下文**:
- 数据来源(Data Sources)
这是上下文的“原材料”,LangChain 将其分为三类:
- 运行时上下文 (Runtime Context):外部注入的静态配置(如用户 ID、API 密钥、当前时间、权限 Scope)。
- 状态 (State):对话作用域内的短期记忆(如当前消息历史、上传的文件引用、工具中间结果)。
- 存储 (Store):跨对话的长期记忆(如用户画像、历史偏好、提取的知识库)。
- 上下文生命周期(Context Lifecycle)
基于上述数据源,在 Agent 的执行环中,可以通过两种方式使用上下文(将在下文详细展开):
- 瞬态上下文(Transient Context):仅影响当前单次模型调用的视角,不改变系统状态。主要是**模型上下文(01)。**例如:动态注入 System Prompt 或过滤敏感工具。
- 持久上下文(Persistent Context):会将变更写入状态或存储,影响未来所有的交互。包括工具上下文(02)和生命周期上下文(03)。例如:工具执行结果回写、对话历史的自动总结压缩。
上下文类型包括模型上下文、工具上下文、生命周期上下文。
数据流动过程如下图所示:输入 -> 处理 -> 输出/回写
03 瞬态上下文
瞬态上下文(Transient Context)指的是模型在单次调用(Run)中看到的内容。它的特点是“阅后即焚”—我们可以灵活修改传给模型的信息,而不会污染系统中永久保存的状态。
通过Langchain的中间件(Middleware)机制,我们可以动态干预**模型上下文(Model Context)**的四个关键要素:
**1、**System Prompt:动态设定行为边界。例如根据用户 VIP 等级动态注入服务指令。
2、Messages:临时修剪或增强历史记录。例如在发送前隐藏某些敏感报错信息。
3、Tools:动态过滤工具集。例如用户未登录时,从 prompt 中移除“支付工具”的定义。
4、Response Format:强制结构化输出,确保返回结果符合业务 Schema。
一个示例:根据运行时权限动态注入提示词
from langchain.agents.middleware import dynamic_prompt, ModelRequest from langchain.agents import create_agent import os from dataclasses import dataclass @dataclass classContext: user_role: str # 假设我们定义了一个上下文感知的 Prompt 函数 @dynamic_prompt defcontext_aware_prompt(request: ModelRequest) -> str: # 1. 从运行时上下文(Runtime Context)中读取用户元数据 user_role = request.runtime.context.user_role base_prompt = "你是一个专业的AI助手。" # 2. 根据角色动态调整 System Prompt (瞬态修改) # 这个修改只影响本次请求,不会修改数据库里的用户角色 if user_role == "admin": base_prompt += "\n当前用户拥有管理员权限,可以使用系统级工具。" elif user_role == "viewer": base_prompt += "\n当前用户仅有只读权限,涉及修改的操作请礼貌拒绝。" print(base_prompt) return base_prompt # 定义agent os.environ["DEEPSEEK_API_KEY"] = "sk-..." agent = create_agent("deepseek-chat", middleware=[context_aware_prompt], context_schema=Context) # 调用 response = agent.invoke( {"messages": [{"role": "user", "content": "我有什么权限"}]}, context=Context(user_role="admin") ) print(response)示例首先定义一个上下文类Context,可以传入用户角色,然后定义一个上下文感知的 Prompt 函数动态修改系统提示词,并由**@dynamic_prompt**修饰作为中间件,最后定义agent对象并进行调用。
最终输出部分文本如下所示:
根据您的身份,您拥有**管理员权限**, 可以使用以下系统级工具...04 持久上下文
与单次调用的“瞬态”不同,**持久上下文(Persistent Context)**的目标是永久改变 Agent 的认知或记忆,使其具备连续性和学习能力。
这主要通过以下两种机制实现:
1、工具回写 (Tool Writes)
工具不仅仅是执行动作,它还是更新状态的桥梁。工具可以通过返回特殊的Command对象,将结构化结果(如“用户手机号已验证”)回写到 State 中,或者将用户偏好存入 Store。
2、生命周期管理 (Life-cycle Management)
发生在模型与工具调用之间的自动化维护逻辑。
最典型的应用是自动总结(Summarization):当对话历史过长时,系统自动调用轻量级模型生成摘要,并永久性地在 State 中替换掉原始的陈旧消息,防止 Token 溢出并降低成本。
一个示例片段:使用内建中间件实现自动总结
from langchain.agents import create_agent from langchain.agents.middleware import SummarizationMiddleware # 初始化 Agent agent = create_agent( model="gpt-4o", tools=[...], middleware=[ # 注册总结中间件 SummarizationMiddleware( # 使用廉价模型进行总结 model="gpt-4o-mini", # 触发阈值:当历史记录超过 4000 token trigger={"tokens": 4000}, # 策略:总结旧消息,但保留最近 20 条原文 keep={"messages": 20} ), ], )05 避坑指南
在构建生产级上下文管道时,可以参考官方经验指南:
**1、**先静态,后动态:不要一上来就设计复杂的动态路由。先用固定的 System Prompt 跑通业务闭环,再逐步增加上下文逻辑。
2、****分清“阅后即焚”与“永久铭刻”:仅影响本轮调用的逻辑(如权限校验提示)放在瞬态上下文;需要未来都“记得”的信息(如用户昵称)必须写入持久状态。
**3、**标准化内容格式:充分利用 LangChain 标准的content\_blocks消息格式,这能确保你的 Agent 在切换不同模型(如从 GPT-4 切换到 DeepSeek)时,多模态内容和工具调用依然稳定。
**4、**善用内建中间件:除非业务逻辑极度特殊,否则优先选择SummarizationMiddleware等经过社区验证的成熟方案,避免重复造轮子。
5、监控与度量:上下文工程直接关联成本。务必追踪每次调用的 Token 消耗和延迟,防止因为 Prompt 注入过多导致上下文过载。
06 总结
上下文工程不再是简单的“拼凑字符串”,它是对 Agent 数据流动的精细化治理。
在 LangChain V1.0+ 的体系下,通过清晰划分数据来源,并灵活组合瞬态与持久两种处理模式,我们才能构建出既“聪明”又“稳重”的智能体。
当下基础模型已经很强了,工程化的过程中,不再纠结于基础模型的微小差异,而是把精力放在构建更稳定、可靠的上下文环境上。
如何系统的学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
01.大模型风口已至:月薪30K+的AI岗正在批量诞生
2025年大模型应用呈现爆发式增长,根据工信部最新数据:
国内大模型相关岗位缺口达47万
初级工程师平均薪资28K(数据来源:BOSS直聘报告)
70%企业存在"能用模型不会调优"的痛点
真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!
02.大模型 AI 学习和面试资料
1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工
📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。