人工智能 频道

什么是上下文工程?以及为什么它是新的人工智能架构

  虽然有些人认为提示是人工黑客,但语境工程是一门可扩展的学科。了解如何构建使用MCP和上下文缓存管理自身信息流的人工智能系统。

  上下文工程是设计系统的做法,该系统决定人工智能模型在对用户输入产生响应之前看到的信息。它超越了格式化提示或制作指令,而是塑造模型运行的整个环境:接地数据、模式、工具、约束、策略以及决定随时将哪些信息纳入模型输入的机制。应用术语来说,良好的上下文工程意味着建立一小组高信号令牌,以提高高质量结果的可能性。

  将快速工程视为上下文工程的前身学科。虽然快速工程专注于措辞、排序和表面级指令,但上下文工程将该学科扩展到架构和编排。它将提示视为更大系统中的一层,该系统以正确的格式选择、构建和传递正确的信息,以便LLM可以合理地完成分配的任务。

  在人工智能中,「上下文」是什么意思?

  在人工智能系统中,上下文是指大型语言模型(LLM)在产生响应时可以访问的一切——不仅仅是用户的最新查询,还有塑造模型如何解释该查询的信息、规则、内存和工具的全部包络。系统可以一次处理的信息总量称为上下文窗口。上下文由许多不同的层组成,这些层一起工作来指导模型行为:

  系统提示定义了模型的角色、边界和行为。此层可以包括规则、示例、护栏和跨转弯持续的样式要求。

  用户提示是即时请求——短命的、特定于任务的输入,告诉模型现在该做什么。

  状态或对话历史作为短期记忆,通过包括之前的对话、推理步骤和决定,使模型跨回合的连续性。

  长期记忆是持久的,跨越许多会话。它包含持久的偏好、稳定的事实、项目摘要或系统设计用于稍后重新引入的信息。

  检索信息通过从文档、数据库或API中提取相关片段,为模型提供外部、最新的知识。检索增强生成将其变成动态和特定于领域的知识层。

  可用工具包括LLM在工具调用或MCP服务器的帮助下能够执行的操作:功能调用、API端点以及具有定义输入和输出的系统命令。这些工具帮助模型采取行动,而不仅仅是生成文本。

  结构化输出定义,准确地告诉模型其响应应该如何格式化——例如,需要JSON对象、表格或特定模式。

  这些层共同构成了人工智能系统用来生成希望准确和有根据的响应的完整上下文。然而,人工智能中上下文的一系列困难可能会导致次优结果。

  什么是上下文失败?

  “上下文故障”一词描述了人工智能上下文系统出错时的一组常见的故障模式。这些失败主要分为四类:

  当幻觉或其他事实错误滑入上下文,然后被当作真理时,就会发生上下文中毒。随着时间的推移,模型建立在有缺陷的前提之上,使错误更加复杂,使推理脱轨。

  当上下文变得太大或冗长时,就会发生上下文分心。模型可以过度关注累积的历史——重复过去的行为或坚持旧信息,而不是从训练数据中推理,而不是综合出新的、相关的答案。

  当无关的材料(额外的工具、嘈杂的数据或不相关的内容)悄悄进入上下文时,就会出现上下文混乱。模型可能会将无关的信息视为重要,导致输出不佳或工具调用不正确。

  当新的上下文与早期上下文冲突时,就会发生上下文冲突。如果信息是递增添加的,早期的假设或部分答案可能会与后来更清晰的数据相矛盾——导致模型行为不一致或损坏。

  OpenAI和Anthropic等人工智能玩家为其聊天机器人提供的进步之一是能够处理越来越大的上下文窗口。但尺寸不是一切,事实上,较大的窗户更容易出现这里描述的那种故障。如果没有刻意的上下文管理——验证、总结、选择性检索、修剪或隔离——即使是大型上下文窗口也会产生不可靠或不连贯的结果。

  有哪些背景工程技术和策略?

  上下文工程旨在克服这些类型的上下文故障。以下是一些需要应用的主要技术和策略:

  知识库或工具选择。选择系统应从中提取的外部数据源、数据库、文档或工具。精心策划的知识库将检索指向相关内容,并减少噪音。

  上下文排序或压缩。决定哪些信息值得占用,哪些信息应该缩短或删除。系统通常积累的文本远远超过模型的需要,因此修剪或重组可以保持高信号材料,同时降低噪音。例如,您可以用150字的摘要取代2000字的对话历史,该摘要保留了决策、限制和关键事实,但省略了闲聊和离题。或者,您可以按相关性分数对检索到的文档进行排序,并只注入前两个块,而不是全部二十块。这两种方法都使上下文窗口专注于最有可能产生正确响应的信息。

  长期记忆存储和检索设计。定义持久性信息(包括用户偏好、项目摘要、域事实或先前会话的结果)如何在需要时保存和重新引入。系统可能会存储一次用户的首选写作风格,并自动将该偏好的简短摘要重新插入到未来的提示中,而不是要求用户每次都手动重述。或者它可以存储多步骤研究任务的结果,以便模型可以在以后的会话中调用它们,而无需重新运行整个工作流程。

  结构化信息和输出模式。这些允许您为上下文和响应提供可预测的格式。为模型提供结构化上下文——例如用户必须填写的字段列表或预定义的数据模式——可以减少歧义,并防止模型即兴创作格式。要求结构化输出也是如此:例如,要求每个答案都符合特定的JSON形状,使下游系统可以可靠地验证和消耗输出。

  工作流程工程。您可以将多个 LLM 调用、检索步骤和工具操作链接到一个连贯的流程中。与其发出一个巨大的提示,不如设计一个序列:收集要求,检索文档,总结它们,调用函数,评估结果,然后才生成最终输出。每个步骤都在正确的时间注入正确的上下文。一个实际的例子是客户支持机器人,它首先检索帐户数据,然后要求LLM对用户的问题进行分类,然后调用内部API,然后才编写最终消息。

  选择性检索和检索增强生成。该技术应用了过滤,因此模型只看到外部数据中重要的部分。您只检索与用户查询匹配的段落,而不是为模型提供整个知识库。一个常见的例子是将文档分成小部分,按语義相关性对它们进行排名,并只将前几个注入提示。这使上下文窗口保持小,同时将答案以准确的信息为基础。

  这些方法共同使上下文工程能够为模型提供更紧密、更相关、更可靠的上下文窗口——最大限度地减少噪音,减少幻觉或混乱的风险,并为模型提供正确的工具和数据,以可预测地运行。

  为什么上下文工程对人工智能代理很重要?

  上下文工程为人工智能代理提供了在多个步骤和决策中可靠运行所需的信息结构。强大的上下文设计将提示、内存、检索到的数据和可用工具视为一个连贯的环境,可以驱动一致的行为。代理依赖于这种环境,因为上下文是长远期任务的关键但有限的资源。

  当代理的环境变得被污染、超载或无关时,他们最常失败。当周围环境包含幻觉或无关细节时,早期转弯的小错误可能会累积成大故障。良好的上下文工程通过只给他们提供他们需要的信息,同时过滤掉噪音来提高他们的效率。排名检索和选择性内存等技术保持上下文窗口聚焦,减少不必要的令牌负载并提高响应性。

  上下文还实现了状态性——即代理能够记住跨会话的偏好、过去的操作或项目摘要。没有这个脚手架,代理的行为就像一次性的聊天机器人,而不是能够长期适应的系统。

  最后,上下文工程是允许代理集成工具、调用功能和编排多步骤工作流程的原因。工具规范、输出模式和检索到的数据都位于上下文中,因此该上下文的质量决定了代理是否能在现实世界中准确行动。在工具集成的代理模式中,上下文是代理推理和采取行动的操作环境。

  LangChain和上下文工程

  LangChain框架有助于将上下文工程用于现实世界的LLM驱动代理。项目文档描述了他们对上下文工程的愿景,即提供“以正确的格式提供正确的信息和工具,以便LLM能够合理地完成任务”的过程。

  LangChain围绕模块化组件构建人工智能代理开发——提示/I-O、数据连接器、链、代理、内存和回调——为开发人员提供了对流入模型的每个上下文的精细控制。这种模块化使设计只注入必要内容的上下文系统变得更容易。

  框架的架构支持定义模型看到的内容、它记住的内容、动态获取的内容以及它可以调用的工具。例如,内存模块可以保持长期状态(用户首选项或项目元数据),而动态检索模块仅在需要时获取文档。这意味着,即使在复杂、长时间运行的任务中,在LangChain上构建的代理也可以保持高效并避免上下文过载。

0
相关文章