当前位置: 首页 > web >正文

Context Engineering Notes

文章目录

  • 是什么
  • Tips from Manus
    • 围绕KV缓存进行设计
    • 屏蔽工具而不是移除
    • 使用文件系统作为上下文
    • 通过复述操控注意力
    • 保留错误的内容
    • 不走寻常路


是什么

别再迷信 Agent 框架了,Context Engineering 才是王道!

Context Engineering = Memory + Execution Control + Context Management

Context Engineering 是一种系统化的工程方法,通过 Memory、Execution Control 和Context Management 三大核心组成部分为 Agent 提供相关且高质量的上下文信息。

具体来说:

  • Memory 包含对长期记忆(通过工具存储或用户写入的持久化信息)和短期记忆(LLM当前接收的消息历史或上下文)的有效利用。
  • Execution Control 负责编排 LLM 的任务执行流程,例如 ReAct、Plan and Execute 等框架。
  • Context Management 专注于动态地组装、过滤和优化输入到 LLM 的上下文信息。
维度提示词工程(Prompt Engineering)上下文工程(Context Engineering)
定义设计和优化给模型的文本提示词管理和构造模型输入的整体上下文信息
范围仅限于文本提示词内容的设计和调整包含提示词设计及更广泛的上下文数据管理和利用
输入内容类型纯文本提示词,包括指令、示例、格式引导文本提示词、历史对话、多轮上下文、外部知识库、工具调用
技术手段Few-shot、Chain-of-Thought、零样本、指令调优长上下文管理、检索增强(RAG)、embedding索引、多模态融合
关系是上下文工程中的一个重要组成部分是包含提示词工程的更大范畴

Tips from Manus

AI代理的上下文工程:构建Manus的经验教训

围绕KV缓存进行设计

在这里插入图片描述
相比Chatbot,Agent的预填充比解码更多,好在具有相同前缀的上下文可以利用KV缓存(如vLLM等框架即可启用),这大大减少了首个token的生成时间(TTFT)和推理成本。几个关键实践:

  1. 保持提示前缀稳定。如不要在System的Prompt的开头包含时间戳
  2. 让上下文append-only。避免修改之前的操作或观察结果
  3. 需要的时候标记缓存的断点

屏蔽工具而不是移除

在这里插入图片描述

工具数量增长会使Agent产生决策疲劳。RAG等按需加载工具的方法被尝试,但是实验表明避免在迭代过程中动态添加或移除工具:工具定义位于上下文的前部,容易导致KV缓存失效;先前的动作用到了当前上下文不定义的工具时模型会感到困惑。

为了解决这个问题,在解码时掩蔽token的logits(概率),从而基于当前上下文阻止(或强制)选择某些动作。具体做法通过response prefix(预先生成回复的前缀)实现,如指定function calling的三种模式:

  • 模型可以选择调用或不调用函数。通过仅预填充回复前缀实现:<|im_start|>assistant
  • 模型必须调用函数,但选择不受约束。通过预填充到tool_call到实现:<|im_start|>assistant<tool_call>
  • 模型必须从特定子集中调用函数。通过预填充到函数名称的开头实现:<|im_start|>assistant<tool_call>{"name": "browser_

比如当前的场景是Agent处理浏览器调用,那么通过第三种模式,模型的后续token会接着browser_生成,保证了强制调用browser_开头的函数。

使用文件系统作为上下文

在这里插入图片描述

当上下文过长会出现性能和金钱的损失,一些Agent系统通过截断或压缩解决但会导致信息丢失。Manus把文件系统作为上下文,模型只需要读写文件即可,相当于把文件内容可逆地压缩为一个URL。

通过复述操控注意力

在这里插入图片描述

一次任务中有很多次的工具调用,通过不断重写待办事项列表,Manus将目标复述到上下文的末尾。这种机制有效避免了"丢失在中间"的问题,确保全局计划始终保持在模型的近期注意力范围内。

保留错误的内容

在这里插入图片描述
错误的尝试要保留在上下文中,从而改变其先验,避免重复的错误。事实上,错误恢复是真正的代理行为最明确的衡量指标之一。

不走寻常路

在这里插入图片描述

和Few-Shot的原理一样,Agent会模仿上下文中的行动模式,当涉及到重复决策的任务时,模型会陷入偏离、过度泛化甚至产生幻觉。解决办法是增加多样性,在行动和观察中引入少量的结构化变化——不同的序列化模板、替代性措辞、顺序或格式上的微小噪音。

http://www.xdnf.cn/news/16557.html

相关文章:

  • 【Golang】Go语言运算符
  • 迷宫生成与路径搜索(A算法可视化)
  • Triton IR
  • Libevent(4)之使用教程(3)配置
  • 如何使用ozone调试elf文件?
  • Dify 本地化部署深度解析与实战指南
  • LangChain实现RAG
  • 力扣 hot100 Day57
  • 第四科学范式(数据密集型科学):科学发现的新范式
  • Qt C++动态库SDK在Visual Studio 2022使用(C++/C#版本)
  • IIS发布.NET9 API 常见报错汇总
  • Java面试实战:从基础到架构的全方位技术交锋
  • add新增管理员功能、BaseController类的简介--------示例OJ
  • PDF转图片实用指南:如何批量高效转换?
  • AI入门学习-模型评估示例讲解
  • Deja Vu: 利用上下文稀疏性提升大语言模型推理效率
  • 【java】 IntelliJ IDEA高效编程设置指南
  • Day06–哈希表–242. 有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和
  • EMCCD相机与电可调变焦透镜的同步控制系统设计与实现
  • 基于Matlab自适应阈值分割算法的图像处理研究
  • 《Java 程序设计》第 7 章 - 继承与多态
  • 嵌入式学习日志————对射式红外传感器计次
  • 高速采集卡FPGA设计方案及代码
  • 【测试报告】博客系统(Java+Selenium+Jmeter自动化测试)
  • maven命令详解
  • Element表格单元格类名动态设置
  • 可控、安全、可集成:安防RTSP|RTMP视频播放模块工程实践参考
  • Android基础(一) 运行HelloWorld
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘ipywidgets’问题
  • 区块链共识机制与联邦学习