添加 登录

评论

只有登录用户才可以评论

Lance的个人博客
关于
代理人的上下文工程

2025年6月23日

Lance Martin

简短摘要

代理人需要上下文来执行任务。上下文工程是指在代理人的整个工作流程中,确保在每一阶段都有恰到好处的信息,使其发挥最佳状态的艺术与科学。本文将探讨几种常见的上下文工程策略,这些策略广泛应用于当今流行的多个代理程序中。

什么是上下文工程?

就像Andrej Karpathy所说,大语言模型(LLMs)就像是新一代的操作系统。大语言模型是CPU,而其上下文窗口就像RAM,主要用于模型的工作记忆。与RAM类似,大语言模型的上下文窗口容量有限,用于处理各种上下文信息。正如操作系统会优化哪些信息进入CPU的RAM,上下文工程的作用与此类似:

“上下文工程是把正确信息放入上下文窗口的微妙艺术和科学。”

当我们构建大语言模型(LLMs)应用程序时,需要管理哪几种类型的上下文呢?上下文工程包括但不限于以下几种类型:

  • 指令:提示、记忆、少量示例、工具描述等
  • 知识:事实、记忆等
  • 工具:工具调用反馈

为代理人做上下文工程

今年,人们对代理人的兴趣急剧增长,随着大语言模型变得更擅长推理和工具调用,代理程序开始交替调用大语言模型和工具。这通常用于处理长时间运行的任务。

然而,长期任务和累积的工具调用反馈意味着代理人经常需要大量token。这可能会引发一系列问题:超出上下文窗口大小、使成本/延迟激增或降低代理人性能。Drew Breunig具体列出了更长上下文可能导致性能问题的几种方式:

  • 上下文污染:当生成同错误信息被放入上下文
  • 上下文分心:当上下文数量过多使模型迷茫
  • 上下文混淆:当多余的信息影响回应
  • 上下文冲突:当部分内容间的观点不符

考虑到这一点,Cognition强调了上下文工程的重要性:

“上下文工程”是构建AI代理的关键性任务。

Anthropic也清晰地指出:

代理程序经常涉及数百轮对话,需要细致的上下文管理策略。

那么,人们是如何应对这个挑战的呢?我将其归为四大类:写、选、压缩、隔离,并在下面给出一些每个类别的例子。

写上下文

保存上下文信息到窗口外,帮助代理人完成任务。

  • scratchpad(便签):就像人类解决问题时记笔记留待以后使用,代理人也能做到。一种通过“便签”记录信息的方法,其主要思想是保存信息以便在执行任务时调用。

选上下文

选择上下文信息,确保关键信息始终可用。

  • 突出重要信息:保留对当前任务至关重要的信息,忽略其他无关内容。

压缩上下文

压缩上下文信息,使其保持在窗口内。

  • 简化语言:使用更简短的语言描述信息,减少token数量。
  • 信息摘要:提供信息摘要,而不是详细描述。

隔离上下文

将不同信息流隔离开,确保它们不会相互干扰。

  • 独立上下文窗口:为每个特定任务创建独立的上下文窗口,避免信息污染或冲突。

以上就是代理人的上下文工程的一般策略,希望对你的项目有所帮助!

瓦白 2025-07-19 00:32:53