链载Ai

标题: 今天聊一聊Context Engineering [打印本页]

作者: 链载Ai    时间: 4 天前
标题: 今天聊一聊Context Engineering


随着人工智能代理(AI Agents)变得越来越复杂,一个关键挑战随之出现:我们如何有效地管理上下文? 上下文工程(Context Engineering)是一门对进出AI代理的信息流进行策略性管理的艺术和科学,旨在确保它们能够在正确的时间得到正确的信息,同时优化性能、成本和准确性。

可以将上下文工程视为AI代理的内存管理系统——正如人类的认知依赖于不同类型的记忆(工作记忆(working memory)、长期记忆(long-term memory)、情景记忆(episodic memory)),AI代理也需要复杂的上下文管理才能在复杂的、多轮对话场景中有效地运行。

为什么上下文工程很重要

现代的AI应用面临数个与上下文相关的挑战:

令牌(Token)限制: 大多数大型语言模型(LLM)都有有限的上下文窗口(4K到200K tokens),这迫使我们必须对所包含的信息进行策略性的取舍。

成本优化: 每个令牌都需要花费成本。低效的上下文管理可能导致生产应用中的成本呈指数级增长。

信息相关性: 并非所有上下文对每个任务都同等重要。不相关的信息实际上可能通过干扰或混淆而损害性能。

状态持久性: AI代理需要在不同会话之间保持状态,记住用户偏好,并在先前的交互基础上持续构建。

上下文工程的四大支柱

基于图示中的框架,上下文工程包括四个基本操作:

  1. 写入上下文:持久化信息 写入上下文涉及将信息存储在当前上下文窗口之外以供日后检索。 这会创建一个持久的知识层,供代理在不同会话和任务中访问。

存储类型:

长期记忆: 跨会话保持(用户偏好、习得的行为、历史交互)

短期记忆: 会话内保持(对话历史、临时变量、工作流状态)

状态对象: 运行时状态管理(当前任务进度、临时计算、会话变量)

实现示例:


# 长期记忆存储

user_profile = {

"preferences": {

"communicationStyle": "technical",

"expertise": "senior-developer"

},

"projectContext": {

"currentProject": "video-editor",

"techStack": ["React", "RxJS", "IXI.js"]

},

"conversationHistory": [

# ... previousSessions

]

}


# 短期记忆(当前会话)

session_state = {

"currentTask": "debugging timeline drag-drop",

"activeFiles": ["timeline.jsx", "dragHandler.js"],

"recentErrors": [

# ...

]

}

  1. 读取上下文:策略性信息检索 读取上下文涉及将相关信息智能地提取到代理的工作上下文窗口中。这需要复杂的检索机制和相关性评分。

上下文来源:

工具: 外部 API、数据库、文件系统

知识库: 文档、向量数据库、结构化数据

记忆系统: 先前写入操作存储的上下文

智能检索策略:

语义搜索: 使用向量嵌入来寻找具有上下文相关性的信息

新近性加权: 优先考虑最近的交互和更新

面向任务的过滤: 只检索与当前目标相关的上下文

渐进式加载: 从必要的上下文开始,根据需要加载额外细节

  1. 压缩上下文:智能摘要上下文压缩用于解决这样一个现实:检索到的信息通常包含冗余、无关细节或过多的冗长。 有效的压缩能够保留关键信息,同时减少令牌使用量。

压缩技术:

分层摘要: 创建分层的摘要(详细 → 中等 → 高层次)

实体抽取: 聚焦于关键实体、关系和事实

意图保留: 确保压缩后的上下文保留原始意图和含义

模板式压缩: 使用结构化格式来标准化压缩输出

压缩示例:

1// 原始上下文 (500 tokens)


2"用户正在开发一个基于React的视频编辑器应用,他们在时间轴组件上遇到了拖拽操作无法正常工作的问题。这个时间轴使用PIXI.js进行渲染,并通过RxJS的可观察对象进行复杂的状态管理。他们尝试了多种解决方案,包括更新拖拽事件处理程序、检查事件传播以及调试状态更新。此外,该应用还使用GSAP实现动画,并与Chromatic集成以进行视觉回归测试。。。"


3


4// 压缩后的上下文 (100 tokens)


5"项目:React 视频编辑器,包含 PIXI.js 时间线。 问题:拖放操作不起作用。 技术:RxJS 状态管理,GSAP 动画。 尝试过:更新事件处理程序,调试状态。 测试:Chromatic 集成。"

  1. 隔离上下文:专用环境管理 上下文隔离涉及有策略地将不同类型的上下文分开,以防止互相干扰并实现专门的处理。 对于涉及多个方面的复杂应用来说,这是至关重要的。

隔离策略:

多代理架构: 不同的代理处理问题的不同方面

沙盒环境: 为代码、实验或敏感操作提供隔离的执行上下文

状态分区: 为不同的功能域分离状态对象

上下文的六种类型

要进行有效的上下文工程,需要了解代理所需的不同类型的上下文:

  1. 指令上下文







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5