随着智能体开发的兴起,你可能不止一次听到 “上下文工程” 这个词。它究竟是什么,又该如何掌握这门新的技术?这段来自 LangChain RAG 专家 Lance 的介绍,是我看过的,对 “上下文工程” 解释的最清晰,最实用的一段视频。

所谓 “上下文工程” 就是在用大模型或各种智能体时,怎么把有限的上下文窗口利用好,让模型能更聪明做事的工程技术。上下文工程的本质,就是在合适的时机、放入刚刚好的信息,让后续步骤顺利进行。

上下文这个词其实挺宽泛的,既包括最常见的 “指令”、“提示词”,也包括记忆、事实、工具介绍,甚至是外部知识。智能体的任务往往比较复杂、持续时间更长,经常要调用各种工具,还要处理多轮对话。不知不觉,上下文就变得又长又杂。这会带来各种问题,比如信息冲突、模型注意力分散、无关内容挤占空间,甚至模型开始 “幻想” 出一些莫名其妙的东西。所以,怎么挑选、组织、管理上下文,就成了特别重要的一件事。

常见的做法有几种。第一种是“写入上下文”,其实就是做笔记,把一些中间结果、计划、草稿写下来,必要时随时查阅。比如有的团队会在任务中实时记录推理过程,然后把这些关键信息保存到文件或者数据库里,后面需要的时候就能用得上。像有些聊天机器人,会自动把你的偏好、历史对话整理出来,下次交流还能记得。

第二种是 “选择上下文”,就是把哪些内容拉进来,哪些暂时先放一边,做到有的放矢。比如针对不同问题,只挑选相关的事实、规章、案例,或者用嵌入、知识图谱等方式,从大堆信息里检索最有用的部分。不要让 LLM 在迷失在大量低相关的信息中。

当上下文真的太多,空间又有限时,就需要用到第三种方法 “压缩上下文”。最常见的就是做摘要,把多轮对话、历史数据浓缩成一小段,把关键点提炼出来。或者直接删减,只保留最近几轮、最有用的信息。这样不仅节省空间,还能减少模型混淆的可能。

最后一种方法就是 “隔离上下文”,比如在多智能体系统中,每个智能体各管一摊,谁负责什么主题、用什么工具、处理什么数据,都有自己的 “小黑屋”,互不干扰。这样做的好处是可以并行处理多项任务,还能让每个智能体专注自己的部分。等到需要协作时,再把必要的信息汇总给最终的大模型。

其实这些做法,和我们人类的团队协作、做笔记、查资料很像。归根结底,上下文工程就是在有限的空间里,把信息组织得更加井井有条,让智能体(或者说自动化系统)能少走弯路,做出更靠谱的决策。