返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

大模型应用技术之【上下文工程】Context Engineering的思维演变

[复制链接]
链载Ai 显示全部楼层 发表于 1 小时前 |阅读模式 打印 上一主题 下一主题
技术术语的更迭,不仅是语言表达的更替,更代表着思维范式的转变。从提示词、提示词工程到上下文工程,折射的是大模型应用技术的不断深化,反映了复杂性和工程化的演化以及应对策略的转变。
本文将介绍上下文工程的演变和 5 种上下文编排模式。限于篇幅,”上下文工程实现范例和技术框架“等内容将在以后的文章详细讨论,敬请关注公众号获取最新内容~

提示词,提示词工程,上下文工程

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">LLM 出现伊始,提示词(prompt)很自然成为需要掌握的新语言,如何正确向LLM提问,以获取想要的答案;随着各种 LLM 涌现,不同模型技术架构和数据不同,如何提炼抽象出稳定的技巧,以减小幻觉,稳定地获得想要地答案,提示词工程(prompt engineering)应运而生,它实际反映的是对自己问题的系统性思考和科学地表达,提示词工程巅峰的时候是传闻硅谷开出几万美金月薪招聘提示词工程师,到现在已经发展出了prompt as aartifact(提示词即交付),把提示词作为一个交付物,看一个李继刚的示例:

#Role:知识探索专家##Profile:-author:李继刚-version:0.8-language:中文-description:我是一个专门用于提问并解答有关特定知识点的AI角色。##Goals:提出并尝试解答有关用户指定知识点的三个关键问题:其来源、其本质、其发展。##Constrains:1.对于不在你知识库中的信息,明确告知用户你不知道2.你不擅长客套,不会进行没有意义的夸奖和客气对话3.解释完概念即结束对话,不会询问是否有其它问题##Skills:1.具有强大的知识获取和整合能力2.拥有广泛的知识库,掌握提问和回答的技巧3.拥有排版审美,会利用序号,缩进,分隔线和换行符等等来美化信息排版4.擅长使用比喻的方式来让用户理解知识5.惜字如金,不说废话##Workflows:你会按下面的框架来扩展用户提供的概念,并通过分隔符,序号,缩进,换行符等进行排版美化1.它从哪里来?━━━━━━━━━━━━━━━━━━-讲解清楚该知识的起源,它是为了解决什么问题而诞生。-然后对比解释一下:它出现之前是什么状态,它出现之后又是什么状态?2.它是什么?━━━━━━━━━━━━━━━━━━-讲解清楚该知识本身,它是如何解决相关问题的?-再说明一下:应用该知识时最重要的三条原则是什么?-接下来举一个现实案例方便用户直观理解:-案例背景情况(遇到的问题)-使用该知识如何解决的问题-optional:真实代码片断样例3.它到哪里去?━━━━━━━━━━━━━━━━━━-它的局限性是什么?-当前行业对它的优化方向是什么?-未来可能的发展方向是什么?#Initialization:作为知识探索专家,我拥有广泛的知识库和问题提问及回答的技巧,严格遵守尊重用户和提供准确信息的原则。我会使用默认的中文与您进行对话,首先我会友好地欢迎您,然后会向您介绍我自己以及我的工作流程。
Markdown 的格式很适合 LLM 理解,结构化的角色、目标、限制、以及思维链提示,大大提高了挖掘大模型能力的体验。
上下文工程(context engineering),我最初看到是Andrej Karpathy (OpenAI 创始人之一) 的推文[1]:
Karpathy认为其比 “提示词工程” 更贴切。在工业级大语言模型应用里,上下文工程兼具科学与艺术属性:科学体现在需精准把控任务描述、示例、数据等信息,平衡信息多寡与相关性以保障模型性能、控制成本;艺术则源于对 LLM 心理和人类直觉的理解。
可见,随着 AI 应用的深入,上下文工程的出现也是水到渠成,预示着在 AI 架构上思考方式的转变。

5 种上下文编排模式

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">上下文工程包括上下文从哪来?保留哪些?丢弃哪些?是否要压缩?如何压缩?是否需要隔离?谁来写?谁来拼接?所有这些问题构成了上下文工程的工作边界[2]。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">尤其是 multi-agent 的发展,一个完整的 Agentic AI 应用往往涉及到 workflow 里多个模型的调用,这些模型很大程度上取决于上述问题的解决,我们来看看 5 种上下文编排模式(Context Orchestration)[3]:

上图模式1,是常用的多 agent 架构,分为三步:将其工作分解为多个部分、启动子代理(subagent)来处理这些部分、最终将这些结果结合起来。

然而,它非常不稳定,关键的失败点在于:没有共享的上下文,各自为政。比如,我需要建一个学校,子任务有建食堂和教学楼,但是都需要共同的规划,不然建一个容纳10人的食堂,但是准备了300人的叫教学楼,显而易见是不合理的。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">上图模式2,吸取了模式1没有统一规划(共享的上下文)的缺点,请注意不同颜色的小方块,代表了共享的上下文和子代理(subagent)生成的上下文,最后的结果已经综合了共享上下文、subagent1、subagent2生成的结果,较好保持了方案的一致性。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">但是(这里就有但是了),继续上面的例子,通过共同的上下文,得知了都需要建能容纳300人规模的教学楼和食堂,但是在修建的时候,各自胡乱堆砌建筑材料,导致空间不够用,施工进展也不一样,学校也不能很好修建。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">这里的问题在于需要沟通的两个 agent 之间没有信息交互(相应的,也有应该是独立的两个 agent,这也是上下文工程的内容之一——agent 之间的交互和独立)。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">上图模式3,请依然注意带颜色的小方块,这里最终结果既有共享的上下文,也有subtask1的上下文,以及共享+subtask1结合生成的subtask2的结果,应该能得到比较完美的结果。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">但是(这里又有但是),不要忘记 LLM 是有上下文限制的,一旦subagent过多,不断堆积,很大可能超出上下文窗口,即使没有超出上下文窗口,过长的上下文也会影响 LLM 最终的推理和生成结果。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">上图模式4,针对模式3,引入了上下文压缩(Context Compression),只保留关键的上下文信息和结果,这里需要继续攻克的点在于如何确保留下的是关键的,而且没有漏掉有用信息,即不重不漏。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 17px;font-style: normal;font-variant-ligatures: normal;font-variant-caps: normal;font-weight: 400;letter-spacing: 0.544px;orphans: 2;text-align: left;text-indent: 0px;text-transform: none;widows: 2;word-spacing: 0px;-webkit-text-stroke-width: 0px;white-space: normal;background-color: rgb(255, 255, 255);text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;">上图模式5,在模式4的基础上加了并行的处理结构,以及左右列独立处理,另外 context 管理独立出来作为可交互的组件,这也许是下一个阶段agent 的进化方向。

神经网络的文艺复兴

行内人可能有点感觉,这不跟早期神经网络的结构一样一样的。放两张 Resnet 和 U-net 的结构图大家品味下,也许我们可以来一场神经网络的文艺复兴,从以前的经典结构里汲取灵感。


[1]https://x.com/karpathy/status/1937902205765607626

[2]上下文工程如何重塑智能体的“思考方式”?

[3]https://cognition.ai/blog/dont-build-multi-agents#a-theory-of-building-long-running-agents


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ