从Prompt到Context:LLM应用的新焦点——上下文工程

LLM应用新趋势:告别“提示词工程”,拥抱“上下文工程”。构建自动化信息流水线,打造LLM的“超级输入”,实现更可控、更高效的AI应用。

原文标题:登上热搜!Prompt不再是AI重点,新热点是Context Engineering

原文作者:机器之心

冷月清谈:

文章指出,大型语言模型(LLM)的应用重心正在从依赖“提示词工程”转向更系统化的“上下文工程”。传统的提示词工程侧重于寻找“魔法咒语”,但这种方法难以应对实际应用中复杂且动态的输入需求。上下文工程则强调构建自动化系统,从各种来源抓取、整合信息,并将其打包成完整的上下文传递给模型。核心在于打造一个“超级输入”的工具箱,包含指令、知识、工具(如RAG)和智能体等要素,目标是为模型提供最有效的信息输入。文章还提出了实践方法论,即从后往前规划(定目标->拆任务)和从前往后构建(搭积木->总装),强调通过科学流程持续改进系统,并推荐了Langchain的相关资源。

怜星夜思:

1、上下文工程的核心在于构建“超级输入”,那么,在实际应用中,如何权衡信息量和计算成本?添加的信息越多越好吗?是否存在信息过载的问题?
2、文章提到了RAG(检索增强生成)和智能体是上下文工程的工具。那么,这两种方法分别适用于哪些场景?它们的优缺点是什么?
3、文章强调了上下文工程的实践方法论,即"从后往前规划,从前往后构建"。那么,在实际操作中,如何有效地进行"测试",以确保系统的各个环节都正常工作?有哪些常用的评估指标?

原文内容

机器之心报道

编辑:+0


最近上下文工程有多火?Andrej Karpathy 为其打 Call,Phil Schmid 介绍上下文工程的文章成为 Hacker News 榜首,还登上了知乎热搜榜。



之前我们介绍了,今天我们来聊聊实操。


为什么关注「上下文工程」


我们很容易将 LLM 拟人化——把它们当作能够「思考」、「理解」或「感到困惑」的超级助手。从工程学的角度来看,这是一个根本性的错误。LLM 并不具备信念或意图,它是一个智能的文本生成器。


更准确的看法是:LLM 是一个通用的、不确定的函数。这个函数的工作方式是:你给它一段文本(上下文),它会生成一段新的文本(输出)


image.png


  • 通用意味着它能处理各种任务(如翻译、写代码),无需为每个任务单独编程。


  • 不确定意味着同样的输入,每次可能得到稍有不同的输出。这是它的特点,不是毛病。


  • 无状态意味着它没有记忆。你必须在每次输入时,提供所有相关的背景信息,它才能「记住」对话。


这个视角至关重要,因为它明确了我们的工作重心:我们无法改变模型本身,但可以完全控制输入。所有优化的关键,在于如何构建最有效的输入文本(即上下文),来引导模型生成我们期望的输出。


「提示词工程」一度很火,但它过于强调寻找一句完美的「魔法咒语」。这种方法在真实应用中并不可靠,因为「咒语」可能因模型更新而失效,且实际输入远比单句指令复杂。


一个更精准、更系统的概念是「上下文工程」



两者的核心区别在于:


  • 提示词工程核心是手动构思一小段神奇的指令,如同念咒。

  • 上下文工程核心是构建一个自动化系统,像设计一条「信息流水线」。该系统负责从数据库、文档等来源自动抓取、整合信息,并将其打包成完整的上下文,再喂给模型。


正如 Andrej Karpathy 所说,LLM 是一种新型的操作系统。我们的任务不是给它下达零散的命令,而是为它准备好运行所需的所有数据和环境。


上下文工程的核心要素


简单说,「上下文工程」就是打造一个「超级输入」的工具箱。我们听到的各种时髦技术(比如 RAG、智能体),都只是这个工具箱里的工具而已。


目标只有一个:把最有效的信息,用最合适的格式,在最恰当的时机,喂给模型。



以下是工具箱里的几种核心要素:


  • 指令:下达命令这是最基础的,就是直接告诉模型该做什么。比如命令它「扮演一个专家」,或者给它看几个例子,让它照着学。


  • 知识:赋予「记忆」 模型本身没有记忆,所以我们要帮它记住。在聊天机器人里,就是把聊天记录一起发给它。如果记录太长,就做个「摘要」或者只保留最近的对话。


  • 工具:


    • 检索增强生成 (RAG):给它一本「开卷考试」用的参考书为了防止模型瞎说(产生幻觉),我们可以让系统先从我们自己的知识库(比如公司文档)里查找相关资料,然后把「参考资料」和问题一起交给模型,让它根据事实来回答。

    • 智能体:让它自己去「查资料」



这是更高级的玩法。我们不再是提前准备好所有资料,而是让一个聪明的「智能体」自己判断需要什么信息,然后主动使用工具(比如上网搜索、查数据库)去寻找答案,最后再汇总起来解决问题。


总而言之,所有这些技术,无论简单还是复杂,都是在回答这一个问题:「怎样才能给模型打造出最完美的输入内容?」


上下文工程的实践方法论


使用 LLM 更像做科学实验,而不是搞艺术创作。你不能靠猜,必须通过测试来验证。


工程师的核心能力不是写出花哨的提示,而是懂得如何用一套科学流程来持续改进系统。这套流程分两步:


第一步:从后往前规划(定目标 → 拆任务)


从你想要的最终结果出发,反向推导出系统的样子。


  • 先想好终点明确定义你希望 LLM 输出的完美答案是什么样的(内容、格式等)。

  • 再倒推需要什么原料要得到这个完美答案,LLM 的输入(上下文)里必须包含哪些信息?这就定义了你的系统需要准备的「原料包」。

  • 最后设计「流水线」规划出能够自动生产这个「原料包」的系统。


第二步:从前往后构建(搭积木 → 总装)


规划好后,开始动手搭建。关键是:搭好一块,测一块,最后再组装。


  • 先测试「数据接口」确保能稳定地获取原始数据。

  • 再测试「搜索功能」单独测试检索模块,看它找资料找得准不准、全不全。

  • 然后测试「打包程序」检查那个把所有信息(指令、数据)组装成最终输入的程序是否正常工作。

  • 最后才进行「总装测试」当所有零件都确认无误后,再连接起来,对整个系统进行端到端测试。这时,你可以完全专注于评估 LLM 的输出质量,因为你知道它收到的输入肯定是正确的。


核心思想就是:通过这种「先规划、后分步搭建和测试」的严谨流程,我们将使用 LLM 从凭感觉的艺术,变成了有章可循的工程科学。


实践


更具体的实践方法,大家可以参考 Langchain 最新的博客和视频,里面详细介绍了上下文工程当前主流的四大核心方法,并展示了 LangChain 生态中 LangGraph 和 LangSmith 如何助力开发者高效实施上下文工程。



  • 博客地址 Context Engineering for Agents

  • 视频地址 Context Engineering for Agents (LangChain)


参考链接:

https://ai.intellectronica.net/context-engineering

https://blog.langchain.com/context-engineering-for-agents/


© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:[email protected]

从技术实现角度来看,RAG相对简单,只需要一个向量数据库和一个检索模型即可。而智能体涉及更复杂的规划、决策和执行机制,需要用到强化学习等技术。因此,RAG是快速构建LLM应用的首选,智能体则更适合探索LLM的潜力。

RAG 适合有明确知识库的场景,比如企业内部文档、产品手册等,它可以确保生成的内容基于可信的事实。但 RAG 的局限在于,它只能回答知识库中已有的问题,对于需要推理或创造性的问题,就无能为力了。

智能体更灵活,可以自主探索和获取信息,适用于需要解决复杂、开放性问题的场景。但智能体的缺点是,容易受到外部信息的影响,可能产生幻觉或不准确的答案。而且,智能体的行为更难以预测和控制。

测试是关键!可以先测试数据的准确性和完整性,比如检查数据源是否更新、数据格式是否统一。然后测试检索的准确率和召回率,确保能找到相关信息。最后,测试整个系统的端到端性能,可以使用 BLEU、ROUGE 等指标评估生成文本的质量,也可以让人工评估员对答案进行打分。

我觉得可以借鉴软件工程中的单元测试和集成测试的思想。对每个模块进行单独测试,确保其功能正常。然后将各个模块组合起来,进行集成测试,检查模块之间的交互是否正确。此外,还可以进行 A/B 测试,比较不同上下文构建策略的效果。

我觉得这是一个关于信息熵的问题。如果所有信息都是高度相关的,且能提高模型预测的准确性,那自然多多益善。但如果引入了大量无关或低相关度的信息,反而会干扰模型的判断,增加计算负担。所以,关键在于提升上下文信息的质量,而不是单纯追求数量。

好问题!信息量并非越多越好,需要考虑噪音和成本。就像做阅读理解,给你一本书让你找答案vs给你相关段落,显然是后者效率更高。因此,需要对信息进行筛选、排序和摘要,确保关键信息优先被模型处理。而且,LLM处理长文本的成本很高,需要trade off。

别忘了用户反馈!让用户参与到测试过程中,收集他们的意见和建议。用户的真实体验,往往能发现很多隐藏的问题。可以建立一个用户反馈渠道,鼓励用户提交bug report 和 feature request。毕竟,最终用户才是检验产品好坏的唯一标准。

RAG就像是给你一个参考答案,你照着抄总不会错,但是发挥空间有限。智能体就像是给你一个搜索引擎,让你自己去找答案,更灵活,但找到的答案质量参差不齐。选择哪个,取决于你的需求和对模型输出质量的要求。

从工程角度看,可以对不同信息源设定优先级,例如公司内部知识库的信息优先级高于网络搜索结果。同时,可以引入一个“信息筛选器”,评估信息的 relevance 和 credibility,过滤掉低质量的信息。当然,这也会增加系统的复杂性,需要在实际应用中找到平衡。