AI编程专栏(七)-什么是上下文工程,与提示工程区别

AI编程专栏(一)- 评估AI编程工具对编程语言支持情况

AI编程专栏(二)- Cursor 深度使用指南

Cursor 深度使用指南(二) - 新能力使用教程

AI编程专栏(三)- 实战无手写代码,Monorepo结构框架开发

AI编程专栏(四) - 提示词技术,如何写编程提示词

AI编程专栏(五)-提示词知识-通用提示结构或框架

AI编程专栏(六)-前端必用MCP推荐

在学习上下文工程时,我们先对比提示词工程。一是回顾一下之前讲过的提示词工程,二是系统性的弄清楚二者的关系。知道自己应该什么时候,什么场景使用什么工程技巧。

一、什么是上下文工程?

英文: Context Engineering

定义: 构建一个动态系统,以正确的格式提供正确的信息和工具,从而使大语言模型(LLM)能够可靠地完成指定任务。

这是提示工程的演变,是更广泛、更系统级的方法。

二、什么是提示工程

英文: Prompt Engineering

定义: 一门设计、优化和构建有效指令(提示词)以引导人工智能模型生成所需输出的技术和实践。

三、从定义看二者差异

"上下文工程" 的重点在于系统性,为了得到预期的输出,提供必要的信息和工具

更多的是关注设计一个架构,用于动态地收集、筛选和整合来自多源的数据,构建出完整的上下文。

提示工程的重点在于构建有效提示词,为了得到预期的输出,使用更加准确高效的提示词

更多的是关注如何进行最终的格式化和指令设计,以最优的方式与LLM沟通。

四、二者关系

二者并不存在谁替代谁的关系,本质上是从两个不同的方向优化AI的输出结果,从而达到获得稳定高质量的输出结果的目标。

或可以将"提示工程"看作"上下文工程"的子集,"上下文工程"为AI提供完成任务所需的所有信息和工具,而 "提示工程"(措辞技巧)只是其中的一部分。

即使拥有了所有的上下文信息,仍需要组织、编排提示词来优化最终呈现,因此提示词工程仍然至关重要。

五、业界呼声转变

为什么现在业界呼声开始从"提示工程"转向"上下文工程",表现出一种后者替代前者的趋势?

一部分原因是有些人并不是真正理解其意,只是在网上看到了一些说法介绍,未曾深入,便开始高谈阔论。

另一部分是一个新的认知逐渐形成:向AI提供完整高质量的上下文,远比措辞技巧更能/更容易带来优质的结果

早期LLM应用,开发者更多是通过提示工程(措辞技巧)来诱导输出更优质的结果。但随着大模型功能越来越复杂,需要更多的上下文信息,才能完成最终符合预期的输出。

六、提示词工程有哪些重点?

重点内容主要在一些提示词技巧上面,可以直接看下面的思维导图,罗列了重点技术实现。

详细参考我的另一篇文章,提示词工程。下图是一个总结性内容。

七、上下文工程有哪些重点?

如果说提示工程是一个神奇的句子,那么上下文工程就是为 AI 编写完整的剧本。或者你也可以理解为,提示工程是一个个巧妙的函数,组件,上下文工程是完整的工程项目。

一旦你制作了一个好的提示,提示工程即可结束,是一种稳定态 。上下文工程是以有组织的方式引入内存、知识、工具和数据,会随着功能动态变化,是一种动态 。很可能会随着功能迭代产生裂化,需要持续维护更新。

目前上下文工程不同于提示工程,有非常多论文相关支持。而且提示工程有明显性的技巧理论,比如说少量样本提示,角色设定,链式思考,自我反思等。上下文工程更多体现在系统性的工具,知识和数据的组织能力。

7.1 上下文是一个系统

它是一个系统,而不是一次性的提示。上下文工程,动态地为AI提供所需的一切------指令、数据、示例、工具和历史记录。所有这些都在运行时打包到模型的输入上下文中。

在上下文工程设计中,LLM 最终得到的提示可能包含几个部分:开发人员编写的角色指令、最新的用户查询、动态获取的相关数据,以及一些所需输出格式的示例。

7.2 系统是动态的

上下文可以动态地出现(外部数据,工具,交互,多模态),因此,构建最终提示的逻辑也必须是动态的,而不仅是一个静态提示。

7.3 提供正确的信息

系统不能很好的执行,一个常见原因是没有正确的上下文。LLM不会读心术,你需要给他们正确的信息。否则 "垃圾进,垃圾出"。

7.4 提供正确的工具

LLM 并不总是能够根据输入来解决任务,在某些情况下,想授权 LLM 执行操作,需要确保它具有正确的工具(比如Excel转JSON,需要有Python相关工具),为 LLM 提供正确的工具与为其提供正确的信息一样重要。

7.5 正确格式输入/输出

简短但描述性强的信息,比庞大的 JSON 数据更有用。为了确保 LLM 能够使用你的工具,工具的输入参数至关重要。

八、常规上下文工程技巧

为了获得优质结果,需要提供清晰的上下文和必要的信息,输出质量直接取决于输入质量。

是不是上下文提供的越详细越好?很明显不是,上下文太少(或类型错误)会导致模型缺乏所需的关键信息;无关上下文太多则会浪费 token 甚至降低性能,找到最佳平衡点并非易事。

8.1 提供高质量的上下文技巧

  • 精准:模糊需求会导致模糊的答案,因此越具体清晰结果越好。

  • 提供相关代码:提供请求相关的特定文件、文件夹或代码片段。

  • 添加设计文档:粘贴或附加相关设计文档的部分内容,提供更全面的信息。

  • 添加示例:展示您希望最终输出的内容示例结构。

  • 外部知识:提供领域知识(公司特定信息、API 规范),检索信息并与上下文联系起来。

  • 巧妙维护对话历史记录(和下面的短期记忆类似):总结历史对话,为后面对话提供上下文,通常不需要完整的历史记录。

  • 说明限制:清楚地列出要求,例如要使用的库、要遵循的模式或要避免的事情。

  • 工具使用:确保访问外部信息时,拥有相应的工具(context7或MCP)。工具返回的信息应以 LLM 能解读的方式进行格式化。

  • 短期记忆:如果对话持续了一段时间,则创建对话摘要并在将来使用(比如Cursor的自动摘要,它用小模型进行摘要总结)。

  • 长期记忆:如果用户在之前的对话中表达了偏好,则能够获取该信息并存储为长期记忆(MCP工具或Cursor近期推出的generate Memories)

  • 提示工程:在提示中清楚地使用提示工程技巧,保证合理的提示词使用。

8.2 上下文污染劣化

随着我们构建丰富的上下文,一个新问题诞生:上下文实际上会随着时间的推移而自我毒化。

这种现象被 Workaccount2 在 Hacker News 上称为"上下文腐烂",描述了随着对话时间的延长,干扰、死胡同和低质量信息的积累,上下文质量会下降。

  • 上下文修剪和刷新:通过定期汇总,启动新上下文,然后将前一个汇总输入进来。丢弃噪音的同时保留了基本状态。对上下文进行垃圾回收。

  • 结构化上下文边界:使用清晰的标记来区分不同的工作阶段。("先前尝试" 和 "当前工作上下文")

  • 渐进式上下文细化:取得重大进展后,从头开始重建上下文。提取关键决策、成功方法和当前状态,然后重新开始。

  • 检查和摘要:定期让模型总结已完成的任务和当前状态。在开始新的会话时,可以使用这些摘要作为新上下文的种子。

  • 上下文窗口:对于非常长的任务,将其分解成几个阶段,每个阶段都可以从头开始,只保留前一阶段必要的内容。

优秀的上下文工程需要有意识的信息管理------不仅要决定包含哪些内容,还要决定何时排除、汇总或刷新。

九、生产级别的上下文工程

生产级系统通常会从更大的方向结构来做系统性决策。此类更适合Agent的开发系统,而非单纯的编程coding阶段。

  • 问题分解和控制流:健壮的系统通常会有结构性的问题分解流程和任务控制流程,提供将问题分解为多个子任务或多步骤工作流。

  • 模型选择和路由:针对不同的任务使用不同的 AI 模型。轻量级模型用于简单任务或初步答案,而重量级模型用于最终解决方案。针对编码任务使用代码专用模型,而针对对话任务使用通用模型。

  • 工具集成和外部操作:可以执行操作(调用 API、数据库查询、打开网页、运行代码),您的软件需要管理这些功能。这包括为 AI 提供可用工具列表和使用说明,以及实际执行这些工具调用并捕获结果。

  • 用户交互和用户体验流程:LLM 应用程序可能让用户参与其中。编码助手可能会建议更改,然后要求用户确认应用。这些用户体验决策也会影响上下文。

  • 防护栏和安全:在生产中必须考虑误用和错误。这可能包括内容过滤器(用于防止有害或敏感的输出)、工具的身份验证和权限检查(例如,防止 AI 删除数据库,因为它包含在指令中)以及输出验证。某些设置会使用第二个模型或规则来仔细检查第一个模型的输出。

  • 评估和监控:需要持续监控 AI 的运行情况。记录每个请求和响应,可以帮助分析故障和异常值。

十、最能体现上下文工程的产品

  • RAG 检索增强生产
  • Agent 各类Agent工具系统
  • 工作流(n8n、扣子、Dify)
  • AI编程IDE的Chat能力,Agent能力

十一、参考资料

addyo.substack.com/p/context-e...

blog.langchain.com/the-rise-of...

github.com/coleam00/co...

github.com/humanlayer/...

相关推荐
jifei几秒前
有了Cursor,为什么还要买摸着Cursor过河的Trae?
cursor·trae
萤丰信息7 分钟前
技术赋能安全:智慧工地构建城市建设新防线
java·大数据·开发语言·人工智能·智慧城市·智慧工地
AI视觉网奇26 分钟前
音频分类模型笔记
人工智能·python·深度学习
Dante但丁29 分钟前
手扒Github项目文档级知识图谱构建框架RAKG(保姆级)Day4
人工智能
bug菌32 分钟前
Trae如何快速辅助Java开发者进场AI编程?打破传统编程思维!
aigc·ai编程·trae
用户51914958484536 分钟前
使用JavaScript与CSS创建"移动高亮"导航栏
人工智能·aigc
Java中文社群1 小时前
淘宝首位程序员离职,竟投身AI新公司做这事!
人工智能·后端·程序员
量子位1 小时前
一周六连发!昆仑万维将多模态AI卷到了新高度
ai编程
失散131 小时前
自然语言处理——02 文本预处理(上)
人工智能·自然语言处理
量子位1 小时前
16岁炒马斯克鱿鱼,SpaceX天才转投北大数学校友赵鹏麾下
ai编程