继提示工程之后,「上下文工程」又红了!这一概念深得Karpathy等硅谷大佬的喜欢,堪称「全新的氛围编程」。而智能体成败的关键,不在于精湛的代码,而是上下文工程。
硅谷如今炙手可热的,不再是提示词工程,而是上下文工程(Context Engineering)!
就连AI大神Karpathy,都为「上下文工程」投下了一票。
还有Shopify CEO Tobias Lütke称,自己更喜欢「上下文工程」,因其准确描述了一个核心技能——
通过为任务提供完整的背景信息,让大模型能够合理解决问题的艺术。
一夜之间,「上下文工程」红遍全网,究竟是为什么?
这背后原因,离不开AI智能体的兴起。
OpenAI总裁Greg Brockman多次公开表示,「2025年,是AI智能体的元年」。
决定智能体成功或失败最关键的因素,是提供的「上下文质量」。也就是说,加载到「有限工作记忆」中的信息愈加重要。
大多数AI智能体失败的案例,不是模型的失败,而是上下文的失败!
那么,什么是上下文?
要理解「上下文工程」,首先需要扩展「上下文」的定义。
它不仅仅是你发送给LLM的单一提示,可以将其视为「模型再生成响应之前,看到的所有内容」,如下:
可以看出,与专注于在单一本文字符串中,精心构建完美指令的「提示词工程」不同,「上下文工程」的范畴要广泛得多。
简单来说:
「上下文工程」是一门学科,它致力于设计和构建动态系统。
这些系统能够在恰当的时机、以恰当的格式,提供恰当的信息和工具,从而让LLM拥有完成任务所需的一切。
以下是「上下文工程」的所有特点
· 它是一个系统,而非一个字符串:上下文并非一个静态的提示词模板,而是一个系统的输出,这个系统在对LLM进行主调用之前就已经运行。
· 它是动态的:上下文是即时生成的,为当前任务量身定制。比如,某个请求可能需要的是日历数据,而另一个请求则可能需要电子邮件内容或网络搜索结果。
· 它强调在恰当时机提供恰当信息与工具:其核心任务是确保模型不会遗漏关键细节(谨记「垃圾进,垃圾出」原则)。这意味着只在必要且有益的情况下,才向模型提供知识(信息)和能力(工具)。
· 它注重格式:信息的呈现方式至关重要。一份简洁的摘要远胜于原始数据的罗列;一个清晰的工具接口定义也远比一条模糊的指令有效。
是一门科学,也是一门艺术
Karpathy长文点评中,同样认为「上下文工程」是艺术的一种。
人们往往将提示词(prompt),联想为日常使用中——发给LLM的简短任务描述。
然而,在任何一个工业级的 LLM 应用中,上下文工程都是一门精深的科学,也是一门巧妙的艺术。
其核心在于,为下一步操作,用恰到好处的信息精准填充上下文窗口。
说它是科学,是因为要做好这一点,需要综合运用一系列技术,其中包括:
任务描述与解释、少样本学习示例、RAG(检索增强生成)、相关的(可能是多模态的)数据、工具、状态与历史记录、信息压缩等等。
信息太少或格式错误,LLM就没有足够的上下文来达到最佳性能;
信息太多或关联性不强,又会导致LLM的成本上升、性能下降。
要做好这一点是颇为复杂的。
说它是艺术,则是因为其中需要依赖开发者对大模型「脾性」的直觉把握和引导。
除了上下文工程本身,一个LLM应用还必须做到:
因此,「上下文工程」只是一个正在兴起的、厚重且复杂的软件层中的一小部分。
这个软件层负责将单个的LLM调用,以及更多其他操作整合协调,从而构建出完整的LLM应用。
Karpathy表示,把这类应用轻率地称为「ChatGPT的套壳」,这种说法不仅老掉牙了,而且大错特错。
有网友对此调侃道,上下文工程,是全新的「氛围编程」。
Karpathy回应称,「我倒不是想自创个新词什么的。我只是觉得,大家一提到「提示词」,就容易把一个其实相当复杂的组件给想简单了」。
你会用一个提示词去问LLM「天空为什么是蓝色的」。但应用程序呢,则是需要为大模型构建上下文,才能解决那些为它量身定制的任务。
其实,打造真正高效的AI智能体秘诀,关键不在于编写的代码有多复杂,而在于你所提供的上下文有多优质。
一个效果粗糙的演示产品,同一个表现惊艳的智能体,其根本区别就在于提供的上下文质量。
想象一下,一个AI助理需要根据一封简单的邮件来安排会议:
嘿,想问下你明天有空简单碰个头吗?
「粗糙的演示」智能体获得的上下文很贫乏。它只能看到用户的请求,别的什么都不知道。
它的代码可能功能齐全——调用一个LLM并获得响应,但输出的结果却毫无帮助,而且非常机械化:
感谢您的消息。我明天可以。请问您想约在什么时间?
接下来,再看看由丰富的上下文加持的惊艳智能体。
其代码的主要任务并非是思考如何回复,而是去收集LLM达成目标所需的信息。在调用LLM之前,你会将上下文扩展,使其包含:
代码的主要工作,不是决定如何响应,而是收集LLM完成目标所需的信息。
在调用LLM之前,你会扩展上下文,包括:
日历信息:显示你全天都排满了
与此人的过去邮件:用来判断应该使用何种非正式语气
联系人列表:用来识别出对方是一位重要合作伙伴
用于send_invite或send_email的工具
然后,你就可以生成这样的回复:
嘿,Jim!我明天日程完全排满了,会议一个接一个。周四上午我有空,你看方便吗?邀请已经发给你了,看这个时间行不行哈。
这种惊艳的效果,其奥秘不在于模型更智能,或算法更高明,而在于为正确的任务提供了正确的上下文。
这正是「上下文工程」将变得至关重要的原因。
所以说,智能体的失败,不只是模型的失败,更是上下文的失败。
要构建强大而可靠的 AI 智能体,我们正逐渐摆脱对寻找「万能提示词」,或依赖模型更新的路径。
这一点,深得网友的认同。
其核心在于对上下文的工程化构建:即在恰当的时机、以恰当的格式,提供恰当的信息和工具。
这是一项跨职能的挑战,它要求我们深入理解业务用例、明确定义输出,并精心组织所有必要信息,从而使LLM能够真正「完成任务」。
最后,借用网友一句话,「记忆」才是AGI拼图的最后一块。
参考资料:
https://www.philschmid.de/context-engineering
https://news.ycombinator.com/item?id=44427757
文章来自于微信公众号“新智元”。
【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。
项目地址:https://github.com/browser-use/browser-use
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md
【开源免费】FASTGPT是基于LLM的知识库开源项目,提供开箱即用的数据处理、模型调用等能力。整体功能和“Dify”“RAGFlow”项目类似。很多接入微信,飞书的AI项目都基于该项目二次开发。
项目地址:https://github.com/labring/FastGPT
【开源免费】graphrag是微软推出的RAG项目,与传统的通过 RAG 方法使用向量相似性作为搜索技术不同,GraphRAG是使用知识图谱在推理复杂信息时大幅提高问答性能。
项目地址:https://github.com/microsoft/graphrag
【开源免费】Dify是最早一批实现RAG,Agent,模型管理等一站式AI开发的工具平台,并且项目方一直持续维护。其中在任务编排方面相对领先对手,可以帮助研发实现像字节扣子那样的功能。
项目地址:https://github.com/langgenius/dify
【开源免费】RAGFlow是和Dify类似的开源项目,该项目在大文件解析方面做的更出色,拓展编排方面相对弱一些。
项目地址:https://github.com/infiniflow/ragflow/tree/main
【开源免费】phidata是一个可以实现将数据转化成向量存储,并通过AI实现RAG功能的项目
项目地址:https://github.com/phidatahq/phidata
【开源免费】TaskingAI 是一个提供RAG,Agent,大模型管理等AI项目开发的工具平台,比LangChain更强大的中间件AI平台工具。
项目地址:https://github.com/TaskingAI/TaskingAI
【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。
项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md
在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0