上下文工程现状:管理概率性代理

随着AI代理的发展,开发者的主要挑战已从简单的提示工程转向“框架工程”,其目标是管理确定性代码与概率性模型行为之间的边界。虽然早期AI开发侧重于最大化上下文窗口以容纳整个数据集,但实际性能表明,长上下文往往会引入需要主动干预的失败模式。

长上下文的失败模式

增加上下文窗口并非AI性能的万能药。随着上下文增长,模型经常遇到四种不同的失败模式:

  • 上下文污染: 无关、错误或过时的信息进入上下文,并成为模型任务列表中持久且难以摆脱的部分。
  • 上下文干扰: 模型优先处理巨大上下文窗口内的信息,而非其基础训练知识,导致推理能力下降。
  • 上下文混淆: 无关事实或冲突的用户角色影响模型的假设,导致不可预测的输出。
  • 上下文冲突: 框架内的工具调用和内部指令相互冲突,造成逻辑死锁。

这些问题因“上下文惯性”而加剧,即代理过度专注于某个特定假设或子任务,即使方法明显失败也无法回溯。最近的研究,如Anthropic的Memento和Microsoft的Fork-and-Flush,证实了定期清除上下文——同时保留环境工件——是维持代理进展的关键策略。

上下文工程的工具箱

为减轻这些失败,开发者正越来越多地将上下文管理移入框架层。当前行业标准工具包包括:

  • 上下文增强: 利用RAG和定向技能检索仅提供相关信息。
  • 工具配置: 动态过滤可用工具以防止模型过载。
  • 上下文隔离: 使用具有全新隔离历史的子代理来处理特定任务。
  • 上下文修剪: 剥离不再服务于当前目标的多余对话历史。
  • 上下文卸载: 将状态存储在外部文件或数据库中,而非活动对话历史中。
  • 上下文摘要: 将长历史压缩为简洁简报,供新代理轮次使用。

确定性与概率性设计

有效的AI应用开发依赖于选择何时采用确定性以及何时采用概率性。开发者应使用代码来强制执行结构(确定性),同时将推理任务委托给模型(概率性)。

正如一位评论者所指出的,“在构建智能应用、框架和工作流时,我们的工作是选择何时采用确定性以及何时采用概率性。”这种方法承认,虽然模型功能强大,但它们容易“对抗权重”——即它们难以执行与其训练偏差相矛盾的任务。通过构建健壮的框架,开发者可以覆盖这些偏差并使代理保持在正轨上。

记忆的未来

策略性遗忘正成为上下文工程的下一个前沿。随着个人代理运行时间越来越长,其积累的记忆可能变得冲突且混乱。未来的系统可能需要复杂的机制来修剪和优先处理记忆,将其视为受管理的资源而非无限容器。

最终,目标是为正确的模型提供正确的上下文。无论是通过手动修剪还是自动压缩,当今最成功的AI系统都是那些将上下文视为有限、高价值资源,必须积极策划以防止模型失去焦点的系统。

Sources

相关

  • Dispatch
  • Dispatch
  • 项目
  • Dispatch
  • 项目