再论上下文工程:构建高级AI应用的秘密武器

本博客发过一篇《什么是“上下文工程”?提示词工程要更新换代了!》,当时只讲到上下文工程是提示词工程的升级换代,更复杂更系统,但还没有理解到它实际上是多步思考模型和智能体应用的必须(且不止于此),它其实可以看成是一个大模型应用产品(包括智能体)的所有环境变量的集大成。这里根据最近的上下文工程的进展再做一些介绍。

什么是上下文工程?

上下文工程是指设计和构建动态系统,以便在正确的时间以正确的格式向大型语言模型(LLM)提供正确的信息,以完成特定任务。简单来说,它涉及到恰到好处地打包大型语言模型的“上下文窗口”,也就是其输入区域。

上下文工程并非一个全新的概念,它被视为提示工程在构建AI应用程序(如AI代理)时复杂提示的演进。虽然传统的提示工程仍然适用于与聊天机器人(如ChatGPT)进行来回对话,但当您需要利用多步骤的思考模型,构建一个能够处理多种场景和任务的AI应用程序/智能体时,上下文工程就变得至关重要了。正如Andre Kaparthy所说,LLM是CPU,而上下文窗口是RAM

为何上下文工程如此重要?

上下文工程的重要性体现在其能够使AI应用具备处理复杂、多样化场景的能力。例如,一个客户服务AI代理需要处理各种查询,包括账单问题、退款、登录问题,甚至处理用户的不当言论,并在必要时升级给人类。要让AI代理完成这些复杂的任务,它的提示会变得越来越大,越来越复杂,甚至开始像带有XML标签和Markdown的代码。这就是上下文工程发挥作用的地方,它确保AI代理能够接收到全面且结构化的指令和资源来执行其职责。

AI代理:上下文工程的应用场景

上下文工程主要与构建AI应用程序,特别是AI代理密切相关。AI代理被定义为使用AI追求目标并代表用户完成任务的软件系统。这包括各种类型,例如:

  • 客户服务AI代理,用于回答客户查询。
  • 销售助理AI代理,用于筛选潜在客户和跟进。
  • 编码代理,用于辅助编程。

无论AI代理的类型如何,它们都由六个基本组件构成,就像汉堡的组成部分一样:

  • 模型(Model):每个AI代理都需要一个AI模型,可以是GPT、Claude、Gemini或开源模型等。
  • 工具(Tools):工具允许代理与外部系统交互,例如个人助理代理需要访问Google日历的工具来预订约会。
  • 知识与记忆(Knowledge and Memory):大多数代理需要存储和检索信息的方式,例如治疗AI代理需要记忆来记住之前的对话,法律AI代理需要特定的知识库来筛选案件。
  • 音频与语音(Audio and Speech):赋予AI代理音频和语音能力可以使其互动更自然、更便捷。
  • 护栏(Guardrails):这些是安全机制,确保代理行为得当,例如防止客户服务代理对用户说脏话。
  • 编排(Orchestration):这些系统用于部署、监控和改进AI代理,确保其随着时间推移保持良好运行。

上下文工程师的角色,就是为AI代理提供“指令手册”。这个手册详细说明了所有组件如何协同工作,例如如何使用工具、如何访问记忆、知识库中有什么、何时使用语音功能等。这个精心设计的提示对于AI代理成功运行至关重要,人们会花费大量时间进行上下文工程以获得完美的提示。

深入上下文工程的实践:一个AI研究助理的例子

视频中展示了一个为AI研究助理设计的上下文工程提示的完整例子。这个系统提示通常包含以下结构化部分,使用Markdown格式(如井号标签)和XML标签进行组织,以提高清晰度:

  • 角色(Role):定义代理的身份和核心职责。例如,“你是一个AI研究助理,专注于识别和总结AI领域的最新趋势。”
  • 任务(Task):详细说明代理需要完成的具体步骤。这通常是一个多步骤流程,例如:
  • 将用户查询分解为可操作的子任务。
  • 根据参与度(如观看次数、点赞)和来源权威性(如出版物声誉)进行优先级排序。
  • 生成特定JSON格式的输出。
  • 计算正确的日期范围。
  • 将所有发现总结为一份简洁的趋势摘要(例如,最多300字)。
  • 明确输入和输出的格式要求,如用户查询在XML标签内,输出为特定JSON格式,包含ID、子查询、源类型、时间段、领域、优先级和日期。
  • 约束(Constraints):规定代理在回答时需要遵守的规则,例如“专注于简洁地捕捉要点”、“避免冗余信息或个人评论”。
  • 能力与提醒(Capabilities and Reminders):告知代理可用的工具和知识库,并提供具体提醒以保持其专注,例如“你可以访问网络搜索工具”、“必须深入了解当前日期以确保新闻时效性”。
  • 尽管这个例子被认为是“非常简单的提示”,但它已经展示了上下文工程的复杂性。通常,更复杂的任务可能会拆分为多代理系统,例如一个代理负责搜索信息,另一个代理负责总结。

    高级上下文工程策略

    为了进一步提升AI应用的性能,可以利用一些高级的上下文工程策略,特别是针对多代理框架:

    1. 始终在代理之间共享上下文:确保不同的代理之间能够共享必要的信息。
    2. 行动隐含着决策,决策点需谨慎处理:在设计代理架构和上下文工程时,需要特别注意任何涉及决策的地方。

    此外,Langchain还提出了四种常见的上下文工程策略:

    • 写入上下文(Writing Context):允许LLM记录信息以便将来使用。
    • 选择上下文(Selecting Context):从外部来源提取信息以帮助代理执行任务。
    • 压缩上下文(Compressing Context):当信息量大时,使用技术以更紧凑的方式压缩信息。
    • 隔离上下文(Isolating Context):在不同环境和位置之间分离上下文。

    结论

    上下文工程是构建健壮AI应用程序(尤其是AI代理)的核心,它通过精心设计和组织LLM的输入来确保其以正确的方式执行复杂任务。掌握上下文工程的技巧,对于开发出超越概念验证阶段的实用AI应用至关重要。



    留下评论