<p align="right"><font color="#3f3f3f">2025年06月23日</font></p> > 原文链接:[The rise of context engineering]([https://blog.langchain.com/the-rise-of-context-engineering/](https://blog.langchain.com/the-rise-of-context-engineering/)) _标题图片来自 [Dex Horthy on Twitter](https://x.com/dexhorthy/status/1933283008863482067?ref=blog.langchain.com)。_ 上下文工程是构建动态系统,以正确的格式提供正确的信息和工具,使大语言模型能够合理地完成任务。 大多数情况下,当智能体表现不稳定时,根本原因是适当的上下文、指令和工具没有传达给模型。 **注解:这段开宗明义地定义了上下文工程的核心概念。与传统的提示工程不同,上下文工程强调的是系统性地为LLM提供完整、结构化的信息环境,而非仅仅优化提示词的措辞。** LLM应用正在从单一提示发展为更复杂的动态智能体系统。因此,上下文工程正成为[AI工程师能够发展的最重要技能](https://cognition.ai/blog/dont-build-multi-agents?ref=blog.langchain.com#a-theory-of-building-long-running-agents)。 ## 什么是上下文工程? 上下文工程是构建动态系统,以正确的格式提供正确的信息和工具,使大语言模型能够合理地完成任务。 这是我喜欢的定义,它建立在[Tobi Lutke](https://x.com/tobi/status/1935533422589399127?ref=blog.langchain.com)、[Ankur Goyal](https://x.com/ankrgyl/status/1913766591910842619?ref=blog.langchain.com)和[Walden Yan](https://cognition.ai/blog/dont-build-multi-agents?ref=blog.langchain.com)最近对此的观点之上。让我们来详细分析: ### 上下文工程是一个系统 复杂的智能体可能从多个来源获取上下文。上下文可能来自应用程序的开发者、用户、先前的交互、工具调用或其他外部数据。将这些信息整合在一起需要一个复杂的系统。 ### 这个系统是动态的 这些上下文片段中的许多都可能动态输入。因此,构建最终提示的逻辑也需要是动态的。它不仅仅是一个静态提示。 **注解:这里强调了上下文工程的核心特征——动态性。传统的提示工程往往依赖预设的静态模板,而上下文工程需要根据实时情况动态调整信息的组织和呈现方式。** ### 你需要正确的信息 智能体系统表现不佳的一个常见原因是它们没有正确的上下文。LLM不能读心术——你需要给它们正确的信息。垃圾进,垃圾出。 ### 你需要正确的工具 LLM可能无法仅基于输入就能解决任务。在这些情况下,如果你想赋予LLM这样做的能力,你需要确保它拥有正确的工具。这些工具可能用于查找更多信息、采取行动或介于两者之间的任何功能。给LLM正确的工具与给它正确的信息同样重要。 ### 格式很重要 就像与人类交流一样,如何与LLM交流也很重要。简短但描述性的错误消息比大型JSON块要有用得多。这也适用于工具。工具的输入参数在确保LLM能够使用它们时非常重要。 **注解:这一点经常被忽视。即使有了正确的信息和工具,如果格式不当,LLM仍然无法有效利用。这需要工程师理解LLM的"沟通偏好",类似于人际沟通中的技巧。** ### 它能合理地完成任务吗? 在思考上下文工程时,这是一个很好的问题。它强化了LLM不是读心者——你需要为它们的成功做好准备。它也有助于区分失败模式。是因为你没有给它正确的信息或工具而失败?还是它拥有所有正确的信息但仍然搞砸了?这些失败模式有非常不同的修复方法。 ## 为什么上下文工程很重要 当智能体系统出错时,很大程度上是因为LLM出错。从第一性原理思考,LLM可能因为两个原因出错: - 底层模型本身出错,它不够好 - 底层模型没有获得适当的上下文来产生好的输出 更多时候(特别是随着模型变得更好),模型错误更多是由第二个原因引起的。传递给模型的上下文可能因为以下几个原因而不好: - 只是缺少模型做出正确决策所需的上下文。模型不是读心者。如果你不给它们正确的上下文,它们不会知道它的存在。 - 上下文格式不佳。就像人类一样,沟通很重要!向模型传递数据时如何格式化绝对会影响它的响应方式 **注解:这段分析了智能体失败的根本原因,指出随着模型能力的提升,问题更多出现在上下文设计而非模型本身。这为上下文工程的重要性提供了理论基础。** ## 上下文工程与提示工程有何不同? 为什么从"提示"转向"上下文"?早期,开发者专注于巧妙地措辞提示来诱导更好的答案。但随着应用程序变得更加复杂,越来越清楚的是,向AI提供完整和结构化的上下文远比任何神奇的措辞更重要。 我还会认为提示工程是上下文工程的一个子集。即使你拥有所有上下文,如何在提示中组装它们仍然绝对重要。区别在于你不是为了与单一输入数据集配合而设计提示,而是获取一组动态数据并正确格式化它。 **注解:这里明确了两个概念的关系:提示工程是上下文工程的子集。上下文工程的范围更广,包括了信息收集、处理、格式化和动态组合的整个流程,而提示工程主要关注最终的文本呈现。** 我还要强调,上下文的一个关键部分通常是关于LLM应该如何行为的核心指令。这通常是提示工程的关键部分。你会说为智能体提供清晰详细的行为指令是上下文工程还是提示工程?我认为两者都有一点。 ## 上下文工程的例子 良好上下文工程的一些基本例子包括: - **工具使用**:确保如果智能体需要访问外部信息,它拥有可以访问它的工具。当工具返回信息时,它们以对LLM最易消化的方式格式化 - **短期记忆**:如果对话进行了一段时间,创建对话摘要并在将来使用它 - **长期记忆**:如果用户在先前的对话中表达了偏好,能够获取该信息 - **提示工程**:智能体应该如何行为的指令在提示中清楚地列举 - **检索**:动态获取信息并在调用LLM之前将其插入提示中 **注解:这些例子展示了上下文工程的实际应用场景。每一项都涉及在适当的时机为LLM提供相关信息,这需要系统性的设计而非临时的解决方案。** ## LangGraph如何启用上下文工程 当我们构建[LangGraph](https://github.com/langchain-ai/langgraph?ref=blog.langchain.com)时,我们的目标是使其成为最可控的智能体框架。这也使其能够完美地实现上下文工程。 使用LangGraph,你可以控制一切。你决定运行什么步骤。你决定进入LLM的确切内容。你决定在哪里存储输出。你控制一切。 这允许你进行所需的所有上下文工程。智能体抽象的缺点之一(大多数其他智能体框架强调的)是它们限制了上下文工程。可能存在无法准确更改进入LLM的内容或事先运行的确切步骤的地方。 **注解:这段实际上是在推广LangGraph产品,但从技术角度看,强调了框架设计对上下文工程实施的重要性。过度抽象的框架可能会限制开发者对上下文流程的精确控制。** _边注:Dex Horthy的["12 Factor Agents"](https://github.com/humanlayer/12-factor-agents?ref=blog.langchain.com)是一篇非常好的读物。那里的许多观点都与上下文工程相关("拥有你的提示"、"拥有你的上下文构建"等)。这篇博客的标题图片也来自Dex。我们非常欣赏他在这个领域中关于重要事项的沟通方式。_ ## LangSmith如何帮助上下文工程 [LangSmith](https://smith.langchain.com/?ref=blog.langchain.com)是我们的LLM应用程序可观察性和评估解决方案。LangSmith的一个关键功能是能够[跟踪你的智能体调用](https://docs.smith.langchain.com/observability/tutorials/observability?ref=blog.langchain.com)。虽然我们构建LangSmith时"上下文工程"一词还不存在,但它恰当地描述了这种跟踪所帮助的内容。 LangSmith让你看到智能体中发生的所有步骤。这让你看到运行了哪些步骤来收集发送到LLM的数据。 LangSmith让你看到LLM的确切输入和输出。这让你准确看到进入LLM的内容——它拥有的数据以及格式化方式。然后你可以调试这是否包含任务所需的所有相关信息。这包括LLM可以访问的工具——因此你可以调试是否给了它适当的工具来帮助完成手头的任务。 **注解:可观察性工具对于上下文工程的重要性不言而喻。由于上下文是动态构建的,开发者需要能够追踪和分析整个上下文构建过程,以识别问题并优化性能。** ## 沟通就是一切 几个月前,我写了一篇名为["沟通就是一切"](https://blog.langchain.com/communication-is-all-you-need/)的博客。主要观点是与LLM沟通很困难,没有得到足够的重视,并且通常是许多智能体错误的根本原因。其中许多观点都与上下文工程有关! 上下文工程不是一个新想法——智能体构建者在过去一两年中一直在这样做。这是一个新术语,恰当地描述了一项日益重要的技能。我们将在这个主题上写作和分享更多内容。我们认为我们构建的许多工具(LangGraph、LangSmith)都完美地构建来启用上下文工程,因此我们很兴奋看到对此的重视起飞。 **注解:文章最后强调了一个重要观点:上下文工程作为概念并不新颖,但将其明确化和系统化是当前AI应用开发的重要趋势。这反映了该领域从实验性探索向工程化实践的转变。** --- ## 总结与思考 这篇文章提出了"上下文工程"这一概念,并论证了其在现代LLM应用开发中的核心地位。从技术发展角度看,这确实反映了行业从简单的提示优化向复杂系统工程的演进。 上下文工程的关键在于: 1. **系统性思维**:将信息提供视为一个完整的系统工程问题 2. **动态适应**:根据具体情况动态调整信息的组织和呈现 3. **格式优化**:重视信息的呈现方式对LLM理解的影响 4. **工具整合**:将外部工具视为上下文的重要组成部分 这一概念的提出具有实际指导意义,但需要注意的是,文章后半部分明显带有推广LangChain产品的目的,读者应当批判性地看待这些内容。