本文是对 LangChain 官方博客 Context Engineering for Agents 的中文解读,旨在帮助中文开发者更好地理解上下文工程的核心概念和实现。

1、TL;DR

智能体 (Agents) 在执行任务时需要上下文信息。上下文工程就是在智能体执行的每个步骤中,为其上下文窗口提供恰到好处的信息。这篇文章介绍了四种常见的上下文工程策略:写入 (write)、选择 (select)、压缩 (compress) 和隔离 (isolate)。通过分析当前流行的智能体系统和研究论文,文章展示了这些策略的实际应用,并说明了 LangGraph 框架如何支持这些策略的实现。

2、Context Engineering (上下文工程)

Andrej Karpathy 将大语言模型比作一种新型操作系统。在这个类比中,LLM 就像 CPU,而上下文窗口就像 RAM,充当模型的工作内存。正如 RAM 的容量有限,LLM 的上下文窗口也只能处理有限的信息源。就像操作系统需要管理 RAM 中的内容一样,上下文工程承担着类似的角色,决定什么信息应该被放入 LLM 的上下文窗口中。

在构建 LLM 应用时,我们需要管理三种主要的上下文类型:

  • 指令类:包括提示词、记忆、少样本示例、工具描述等
  • 知识类:包括事实信息、记忆等
  • 工具类:工具调用的反馈信息

3、Context Engineering for Agents (智能体的上下文工程)

随着 LLM 在推理和工具调用能力上的提升,智能体系统在今年受到了极大关注。智能体通过交替进行 LLM 调用和工具调用来完成任务,特别是在处理长时间运行的任务时。智能体会利用工具调用的反馈来决定下一步的行动。

长时间运行的任务和不断累积的工具反馈会导致智能体消耗大量的 token。这会带来多个问题:可能超出上下文窗口的限制、增加成本和延迟,或者降低智能体的性能。Drew Breunig 总结了长上下文可能导致的几种性能问题:

  • 上下文中毒:错误信息进入上下文
  • 上下文干扰:上下文信息压倒了模型的训练知识
  • 上下文混淆:无关的上下文影响了输出
  • 上下文冲突:上下文的不同部分相互矛盾

基于这些挑战,Cognition 公司指出上下文工程是构建 AI 智能体的首要任务。Anthropic 也明确表示,智能体经常需要进行数百轮的对话,这需要精心设计的上下文管理策略。

目前业界如何应对这些挑战?文章将常见的上下文工程策略归纳为四类:写入、选择、压缩和隔离。下面将通过实际案例详细介绍每种策略。

4、Write Context (写入上下文)

写入上下文是指将信息保存在上下文窗口之外,以帮助智能体完成任务。

Scratchpads (草稿本)

就像人类解决问题时会记笔记一样,智能体也在获得这种能力。Scratchpad 是一种在任务执行过程中持久化信息的方法。核心思想是将信息保存在上下文窗口之外,使智能体在需要时可以访问。Anthropic 的多智能体研究系统中有一个很好的例子:主研究员智能体会先思考解决方案,并将计划保存到内存中,因为当上下文窗口超过 20 万 token 时会被截断,一开始的计划就丢失了。

Scratchpad 可以通过多种方式实现:可以是一个简单写入文件的工具调用,也可以是运行时状态对象中的一个字段,在会话期间持续存在。无论采用哪种方式,scratchpad 都能让智能体保存有用的信息来帮助完成任务。

Memories (记忆)

Scratchpad 帮助智能体在单个会话中解决任务,但有时智能体需要跨会话记住信息。Reflexion 论文引入了反思机制,在每个智能体回合后进行反思并重用这些自生成的记忆。Generative Agents 则定期从过去的智能体反馈中合成记忆。

这些概念已经被应用到 ChatGPT、Cursor 和 Windsurf 等流行产品中,它们都具有基于用户与智能体交互自动生成长期记忆的机制,这些记忆可以跨会话持续存在。

5、Select Context (选择上下文)

选择上下文是指将相关信息拉入上下文窗口来帮助智能体执行任务。

Scratchpad

从 scratchpad 选择上下文的机制取决于其实现方式。如果是工具形式,智能体可以通过工具调用来读取。如果是运行时状态的一部分,开发者可以选择在每个步骤中向智能体暴露状态的哪些部分。这提供了细粒度的控制,可以在后续回合中精确地向 LLM 暴露 scratchpad 上下文。

Memories

如果智能体能够保存记忆,它们也需要能够选择与当前任务相关的记忆。这有几个用途:智能体可能会选择少样本示例 (情节记忆) 作为期望行为的例子、选择指令 (程序记忆) 来引导行为,或选择事实 (语义记忆) 作为任务相关的上下文。

如何选择相关记忆是一个挑战。一些流行的智能体简单地使用固定的文件存储记忆,这些文件总是被拉入上下文。例如,许多 coding agent 使用特定文件来保存指令 (程序记忆) 或示例 (情节记忆)。Claude Code 使用 CLAUDE.md 文件,Cursor 和 Windsurf 使用规则文件。

但如果智能体存储了大量的事实和关系 (如语义记忆),选择就变得更加困难。ChatGPT 是一个很好的例子,它存储并从大量用户特定记忆中进行选择。Embeddings 和知识图谱常用于辅助记忆索引和选择。然而,记忆选择仍然充满挑战。Simon Willison 在 AIEngineer 世界博览会上分享了一个选择出错的例子:ChatGPT 从记忆中获取了他的位置信息,并意外地将其注入到请求的图像中。这种意外或不期望的记忆检索会让用户感觉上下文窗口 “不再属于他们”。

Tools

智能体使用工具,但如果提供太多工具会导致过载。这通常是因为工具描述存在重叠,导致模型在选择工具时产生混淆。一种方法是对工具描述应用 RAG (Retrieval Augmented Generation) ,只获取与任务最相关的工具。最近的研究表明,这种方法可以将工具选择的准确性提高 3 倍。

Knowledge

RAG 是一个内容很多的主题,也是上下文工程的核心挑战。Coding Agent 是大规模生产环境中 RAG 应用的最佳例子。Windsurf 的 Varun 很好地总结了这些挑战:代码索引不等于上下文检索。他们使用 AST 解析代码并沿着语义边界进行分块,但随着代码库规模的增长,embedding 搜索作为检索启发式方法变得不可靠。必须依赖多种技术的组合,如 grep/文件搜索、基于知识图谱的检索,以及按相关性排序的重排序步骤。

6、Compressing Context (压缩上下文)

压缩上下文涉及只保留执行任务所需的 token。

Context Summarization (上下文总结)

智能体交互可能跨越数百轮对话并使用大量 token 的工具调用。总结是管理这些挑战的常见方法。如果你使用过 Claude Code,就会看到这个功能的实际应用。当超过上下文窗口的 95% 时,Claude Code 会运行 “自动压缩”,总结用户与智能体交互的完整轨迹。这种跨智能体轨迹的压缩可以使用递归或分层总结等多种策略。

在智能体设计的特定点添加总结也很有用。例如,可以用来后处理某些工具调用 (如消耗大量 token 的搜索工具)。Cognition 提到在智能体之间的边界进行总结,以减少知识传递时的 token 使用。如果需要捕获特定事件或决策,总结可能会成为挑战。Cognition 为此使用了微调模型,这突显了这一步骤所需的工作量。

Context Trimming (上下文修剪)

与使用 LLM 提炼最相关上下文片段的总结不同,修剪通常通过过滤或 “剪枝” 来处理上下文。这可以使用硬编码的启发式方法,如从列表中删除较旧的消息。Drew 还提到了 Provence,这是一个用于问答任务的训练过的上下文修剪器。

7、Isolating Context (隔离上下文)

隔离上下文涉及将其分割以帮助智能体执行任务。

Multi-agent (多智能体)

隔离上下文最流行的方法之一是将其分配给多个子智能体。OpenAI Swarm 库的动机之一就是关注点分离,让智能体团队处理特定的子任务。每个智能体都有特定的工具集、指令和自己的上下文窗口。

Anthropic 的多智能体研究系统证明了这一点:具有隔离上下文的多个智能体优于单智能体,主要是因为每个子智能体的上下文窗口可以专注于更小的子任务。子智能体并行运行,各自使用自己的上下文窗口,同时探索问题的不同方面。当然,多智能体架构的挑战包括 token 使用量 (Anthropic 报告称可能是聊天的 15 倍)、需要精心设计提示词来规划子智能体工作,以及子智能体之间的协调。

Context Isolation with Environments (使用环境进行上下文隔离)

HuggingFace 的 deep researcher 展示了另一个有趣的上下文隔离例子。大多数智能体带有 Tool Calling 功能的 LLM API,返回 JSON 对象作为工具参数。HuggingFace 使用 CodeAgent,输出包含所需工具调用的代码。代码在沙箱中运行,只有选定的上下文 (如返回值) 被传回 LLM。

这允许在环境中将上下文与 LLM 隔离。HuggingFace 指出,这特别适合隔离消耗大量 token 的对象:coding agent 可以更好地处理状态。需要存储图像、音频或其他内容供以后使用?没问题,只需将其分配为变量即可。

State (状态)

值得注意的是,智能体的运行时状态对象也是隔离上下文的好方法。这可以达到与沙箱相同的目的。状态对象可以设计成包含多个字段的模式,上下文可以写入这些字段。模式的某个字段 (如 messages) 可以在智能体的每个回合中暴露给 LLM,而其他字段的信息可以被隔离,以便更有选择性地使用。

8、Context Engineering with LangSmith / LangGraph

如何实施?开始之前,有两个基础工作很重要。首先,确保你有方法查看数据并跟踪智能体的 token 使用情况。这有助于确定在哪里应用上下文工程最有效。LangSmith 非常适合智能体追踪和观测。其次,确保你有简单的方法来测试上下文工程是否改善了智能体性能。LangSmith 提供智能体评估功能来测试任何上下文工程工作的影响。

Write context

LangGraph 设计了短期和长期记忆。短期记忆使用检查点来在智能体的所有步骤中持久化智能体状态。这作为 “scratchpad” 非常有用,允许你将信息写入状态并在智能体轨迹的任何步骤中获取。LangGraph 的长期记忆让你能够跨多个会话持久化上下文。它很灵活,可以保存小型文件集 (如用户配置文件或规则) 或更大的记忆集合。此外,LangMem 提供了一套有用的抽象方法来辅助记忆管理。

Select context

在 LangGraph 智能体的每个节点 (步骤) 中,你可以获取状态。这让你对上下文有细粒度的控制。此外,LangGraph 的长期记忆在每个节点中都可访问,支持各种类型的检索 (如获取文件以及基于 embedding 的记忆检索)。

对于工具选择,LangGraph Bigtool 库是对工具描述应用语义搜索的好方法。当处理大量工具集合时,这有助于选择与任务最相关的工具。

Compressing context

LangGraph 作为 low-level 编排框架,可以将智能体组织为多个节点(node)的形式,每个节点定义特定逻辑并通过 State 对象传递信息。

这种架构提供了多种上下文压缩方法:

  • 消息(Message)总结:使用消息列表作为 state,定期总结或修剪历史记录
  • 节点级压缩:在特定节点添加总结逻辑
  • 工具输出处理:对工具调用结果进行后处理和压缩

Isolating context

LangGraph 围绕状态(State)对象设计,允许你指定状态 schema 并在每个步骤访问状态。例如,你可以将工具调用的上下文存储在状态的某些字段中,将它们与 LLM 隔离,直到需要该上下文。除了状态,LangGraph 还支持使用沙箱进行上下文隔离。LangGraph 还为构建多智能体架构提供了大量支持,例如 supervisor 和 swarm 库。

那么,如何系统的去学习大模型LLM?

作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。

所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。

由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
在这里插入图片描述

为什么要学习大模型?

我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。

在这里插入图片描述

在这里插入图片描述

👉大模型学习指南+路线汇总👈

我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
在这里插入图片描述
在这里插入图片描述

👉①.基础篇👈

基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
在这里插入图片描述

👉②.进阶篇👈

接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
在这里插入图片描述

👉③.实战篇👈

实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
在这里插入图片描述

👉④.福利篇👈

最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
在这里插入图片描述
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐