上下文工程是什么?一文读懂–AI百科知识

AI百科 01月02日
305

上下文工程(Context Engineering) 是在人工智能(AI)领域,特别是大型语言模型(LLM)应用中逐渐兴起并日益受到重视的概念。可以理解为一种系统性的工程方法。在于构建动态的系统,以便向AI模型,尤其是LLM,提供精准、相关且及时的信息和工具,使模型能更合理、更有效地完成特定任务 。与传统的提示工程(Prompt Engineering)主要关注单次交互中的指令和示例不同,上下文工程更侧重于设计和实现能捕获、存储、检索和管理上下文信息的完整系统。意味着上下文工程不仅关注“说什么”,更关注“在什么情况下说”,以及如何构建和利用这个“情况”来提升AI的整体表现。涉及到对AI模型运作环境的全面考量,包括模型可以访问的知识范围、这些知识的组织结构,以及在交互过程中如何有效地传递这些知识 。上下文工程可以被视为一种更宏观、更系统化的AI优化策略,通过精细化的上下文管理来释放AI模型的全部潜力。

上下文工程

什么是上下文工程

上下文工程是指构建一个动态系统,以正确的格式提供正确的信息和工具,使大语言模型(LLM)能合理地完成任务。是一种系统性的方法,确保LLM获得执行任务所需的一切必要条件。

多个维度理解

从操作层面来看

涉及到一系列技术和方法,用于在AI模型执行任务之前,有目的地为其构建和提供相关的上下文信息。这些信息可以来自于多种来源,例如开发者的预设指令、用户的实时输入、历史交互记录、外部工具的调用结果、外部知识库、实时环境信息等 。

从系统设计的角度来看

上下文工程强调构建能自动化处理上下文信息的系统,包括上下文的获取、表示、存储、检索、更新和评估等环节。要求开发者不仅要考虑如何获取有效的上下文,还要思考如何高效地管理和利用这些上下文。例如,LangGraph框架的设计目标就是提供最大程度的可控性,允许开发者精确控制每个步骤的执行、输入LLM的内容以及输出的存储方式,实现对上下文工程的精细化管理 。

从目标导向来看

上下文工程的最终目的是提升AI模型在复杂任务中的性能,能更好地理解用户意图、生成更准确的回复、做出更合理的决策,提供更加智能和个性化的服务。正如一些研究者所指出的,上下文是区分一个平庸的AI助手和一个超级助手的核心因素,上下文工程正是实现这一转变的关键。

上下文工程 vs. 提示工程(Prompt Engineering)

上下文工程(Context Engineering)与提示工程(Prompt Engineering)是大型语言模型(LLM)应用开发中两个紧密相关但又有所区别的核心概念。两者都致力于提升LLM的输出质量和任务完成能力,但其关注的层面、方法论和应用范围存在显著差异。理解它们之间的关系,对于有效地设计和优化AI应用至关重要。

提示工程(Prompt Engineering) 主要聚焦于如何设计和优化输入给LLM的“提示”(Prompt),即用户直接提供的指令或问题,以及可能包含的少量示例、任务描述、输出格式要求等。核心目标是找到一个最佳的文本表达方式,以引导LLM理解用户意图,生成符合期望的输出。提示工程更像是一种“与模型沟通的艺术和科学”,探索如何通过精心选择的词语、句式、结构、特殊符号来“激发”模型的特定能力。例如,在文本摘要任务中,提示工程可能会尝试不同的指令,如“请为以下文章生成一个简短的摘要:”、“总结这篇文章的核心观点:”或“TL;DR:”(Too Long; Didn’t Read的缩写),评估哪种提示能获得更好的摘要效果。提示工程关注的是单次交互或单个任务的优化,方法论更侧重于实验、迭代和技巧的积累。

上下文工程(Context Engineering) 是在一个更宏观、更系统的层面上运作。不仅关注用户直接输入的提示,更关注为LLM构建和管理的整个“信息环境”,即上下文。这个上下文可以包括但不限于:对话历史、用户画像、领域知识库、实时数据、API调用结果、以及其他任何能帮助模型更好地理解当前任务和生成更优输出的相关信息。上下文工程的核心目标是系统地设计、获取、组织、存储、检索、更新和评估这些上下文信息,确保LLM能持续获得高质量、高相关性的输入。更像是一种“为模型构建智能信息生态系统的工程学科”。例如,在一个智能客服系统中,上下文工程要考虑用户当前的问题(提示),还要考虑用户的历史咨询记录、购买记录、当前会话状态、以及相关的产品知识库和FAQ文档等,将这些信息有效地整合和传递给LLM。

提示工程和上下文工程并非相互独立,而是相辅相成的。高质量的提示仍然是上下文工程中不可或缺的一环,是用户意图的直接表达。上下文工程为提示的有效执行提供了坚实的基础和丰富的背景信息。在许多先进的AI应用中,两者往往结合使用:通过上下文工程获取和组织丰富的背景信息,再通过精心设计的提示将这些信息有效地传递给LLM,并引导其完成复杂任务。

上下文工程的核心特性

系统性和完整性

要求超越零散的、临时性的上下文提供方式,转而构建一个能全面覆盖上下文生命周期(包括捕获、存储、检索、更新、评估和优化)的完整系统 。与传统的提示工程主要关注单次交互中的即时指令形成对比。

动态性和适应性

上下文工程强调上下文信息应该是动态变化的,能根据任务进展、用户反馈和环境变化进行实时调整和更新 。例如,在长时间的对话中,系统需要能总结之前的对话内容,将其作为后续交互的上下文 。

相关性和精准性

并非所有的上下文信息都是有用的,上下文工程识别和提供那些对当前任务最具影响力的信息,避免信息过载或引入噪声。需要对任务需求和模型特性有深入的理解。

主动构建和优化

上下文工程不是被动地等待上下文出现,而是主动地设计和构建能生成和传递高质量上下文的机制和流程,通过持续的反馈和迭代来优化上下文的质量和有效性。这种主动性和优化意识是工程化方法的重要体现。

上下文工程的重要体现

有助于消除歧义

自然语言本身具有高度的歧义性,同一个词或句子在不同的上下文中可能有完全不同的含义。通过提供足够的上下文信息,AI模型可以更准确地把握语义,做出正确的判断。

增强模型的推理能力

许多复杂的任务需要模型基于已有的信息进行多步推理,丰富的上下文可以为这种推理提供必要的前提和约束。例如,在规划一个会议日程时,模型需要考虑到参与者的可用时间、会议地点、议程主题等多个上下文因素。

实现个性化和智能化服务的基础

通过学习和利用用户的个性化上下文(如历史行为、偏好、习惯等),AI模型可以提供更加贴合用户需求的定制化服务。例如,一个新闻推荐系统如果了解用户对不同主题的兴趣程度,就能推送更相关的新闻。正如一些研究者指出的,上下文是区分一个“愚蠢的助手”和一个“超级队友”的关键因素 。一个能有效利用上下文的AI系统,表现会更加智能、自然和高效,极大地提升用户体验和任务完成效率。

上下文工程的工作原理

动态上下文构建

上下文工程强调动态性,即根据任务需求实时从多个来源获取上下文信息,包括用户输入、历史交互、外部数据等。这种动态构建过程需要系统能够实时感知和响应环境变化,确保模型接收到的信息是最新的、相关的。

来源:
  • 用户输入 (User Input):是最直接的上下文来源,包括用户当前的查询、指令、反馈等。实时捕捉并准确理解用户输入是构建有效上下文的第一步。
  • 对话历史 (Conversation History):对于多轮对话应用,历史交互记录是至关重要的上下文。这包括之前几轮的问答、用户的偏好表达、以及系统之前的回应。通过对话历史摘要、向量存储与检索等技术,可以实现短期和长期的对话记忆,确保Agent在多轮交互中保持连贯性和相关性。
  • 外部知识库 (External Knowledge Bases):包括数据库、API、文档库(如通过RAG技术检索)、知识图谱等。这些来源可以为模型提供领域特定的知识或实时信息。
  • 系统状态与环境信息 (System Status & Environmental Information):例如,当前时间、用户地理位置、设备类型、应用程序的当前状态等,都可以作为重要的上下文线索。
  • 工具调用结果 (Tool Outputs):当LLM调用外部工具(如计算器、代码执行器、搜索引擎)时,工具的输出结果也构成了新的上下文信息。

信息与工具的整合

上下文工程关注信息本身,注重信息的格式和相关工具的提供。需要将来自不同来源的信息(如文本、图像、音频等)整合成适合模型处理的格式,提供必要的工具(如检索工具、外部API等),帮助模型完成任务。

精确的上下文管理

上下文工程要求对上下文进行精细管理,避免信息过多或过少。过多的信息可能导致模型推理成本上升,而信息不足可能导致模型无法准确完成任务。上下文管理需要考虑上下文的时效性、相关性和准确性。

概率性与确定性上下文

上下文工程将上下文分为确定性上下文(如直接发送给模型的指令、规则等)和概率性上下文(如从外部工具或网络检索到的信息)。确定性上下文可以精确控制,而概率性上下文则需要通过工程设计来优化其对模型的影响。

上下文压缩与优化

为了提高模型效率,上下文工程还涉及上下文压缩技术,即将大量信息压缩为模型能够高效处理的形式。这包括对历史信息的摘要、关键信息的提取等,确保模型在有限的上下文窗口中获得最优信息。

检索增强生成(RAG)

检索增强生成(RAG)是上下文工程中的关键技术之一。通过检索外部数据源中的相关信息,将其整合到模型的上下文窗口中,扩展模型的知识边界。这种方法可以显著提升模型在处理复杂任务时的表现。

多模态融合

在一些应用场景中,上下文工程还涉及多模态信息的融合,例如将视觉信息(图像、视频)与文本信息结合,帮助模型更全面地理解任务背景。

上下文工程 vs. 检索增强生成(RAG)

上下文工程(Context Engineering)与检索增强生成(Retrieval Augmented Generation, RAG)是当前大型语言模型(LLM)应用中两个密切相关的概念,通过引入外部信息来提升模型的性能和输出质量。在范畴、方法和目标上存在显著的层级关系和差异。理解这些差异有助于更清晰地定位RAG在上下文工程体系中的位置,以及上下文工程所涵盖的更广泛内涵。

检索增强生成(RAG)

是一种特定的技术范式,核心流程是在LLM生成回答之前,首先从一个或多个外部知识库(如向量数据库、文档集合)中检索与用户查询或当前任务最相关的文档片段或信息,然后将这些检索到的信息作为“上下文”或“参考”与原始的用户提示(Prompt)一起输入给LLM。LLM基于这些增强的上下文信息来生成更准确、更相关、更具事实依据的答案。RAG的主要目标是解决LLM的“知识截止”问题(即模型的知识局限于其训练数据的时间点)和“幻觉”问题(即模型可能生成看似合理但不准确或完全虚假的信息)。通过引入外部知识源,RAG使LLM能访问和利用训练数据之外的最新或特定领域的信息。例如,一个基于RAG的问答系统,当用户询问某个特定产品的技术规格时,系统会先从产品手册或技术文档库中检索相关信息,然后将这些信息连同用户问题一起交给LLM生成答案。

上下文工程(Context Engineering)

是一个更为广泛和系统的概念。不仅局限于通过检索来获取外部知识,涵盖了为LLM设计、构建、管理和优化其运行所需的整个“上下文环境”的全过程。这个上下文环境可以包含多种信息来源和类型,远不止于RAG中常用的文档片段。上下文工程的目标是确保LLM在任何时候都能获得最相关、最准确、最完整的信息,支持完成复杂的任务。包括:

  • 多源上下文整合:除了RAG所依赖的文档知识库,上下文工程整合来自结构化数据库、实时API、用户会话历史、系统状态、其他AI模型的输出、以及调用外部工具(如计算器、代码执行器、API)的结果等。
  • 动态上下文管理:上下文工程强调上下文的动态性,即上下文需要根据任务的进展、用户的反馈和环境的改变而实时更新和调整。
  • 提供正确的工具:上下文工程关注信息,关注为LLM提供完成任务所需的工具,管理这些工具的使用。
  • 信息格式与表示:上下文工程关注如何以最有效的方式将信息组织和呈现给LLM,涉及到信息的摘要、结构化、以及与其他上下文的融合。

RAG可以被看作是上下文工程工具箱中的一个重要技术或一个关键实现模块。一个完善的上下文工程系统可能会利用RAG作为其获取外部知识的一种方式,还会包含许多其他组件和策略来构建和管理更广泛的上下文。

上下文工程的应用场景

智能客服与对话系统中

上下文工程在智能客服和对话系统中能显著提升用户体验和问题解决效率。传统的基于规则或简单机器学习的对话系统往往缺乏对上下文的理解能力,导致对话生硬、不连贯,难以处理复杂的多轮交互。引入上下文工程后,系统能更好地理解用户的意图、记忆对话历史、利用相关信息提供更精准和个性化的服务。

例如,在客户咨询订单状态时,一个具备良好上下文工程能力的对话系统可以自动识别用户身份,查询其最近的订单信息,根据订单的具体状态(如已付款、待发货、运输中、已签收)给出有针对性的回复,无需用户反复提供订单号或查询细节 。这种能力依赖于系统能够有效地获取和利用用户身份、订单数据库、物流信息等多种上下文。

假设一个用户之前咨询过关于某个产品的退货政策,几天后再次联系时询问“我该如何退回我买的那个东西?”。一个没有上下文记忆的系统可能会要求用户重新提供产品信息或订单号。而一个应用了上下文工程的系统,可以通过识别用户身份,结合之前的对话记录,自动理解“那个东西”指的是之前讨论过的产品,直接提供相应的退货流程指导。

这涉及到短时记忆(当前对话内容)和长时记忆(用户历史交互、偏好)的有效管理和利用 。上下文工程可以帮助对话系统更好地处理话题转换、指代消解等复杂语言现象。

例如,当用户在讨论产品A后,突然问“那另一个呢?”,系统需要能根据之前的上下文推断出“另一个”可能指代的是之前比较过的产品B。

通过精心设计的上下文管理策略,智能客服和对话系统能实现更自然、更流畅、更高效的交互,提升用户满意度和忠诚度。

内容生成与摘要提取中

上下文工程在内容生成与摘要提取领域能显著提升生成内容的质量、相关性和个性化程度。在内容生成方面,无论是撰写营销文案、新闻稿件、创意故事还是技术文档,为大型语言模型(LLM)提供充分的上下文信息都至关重要。

例如,在生成一篇产品推广文案时,如果LLM能获取到关于目标受众(年龄、兴趣、消费习惯)、产品特点、品牌调性、以及当前的营销活动等上下文信息,那么生成的文案将更具吸引力和转化率 。在撰写技术文档时,提供项目的架构图、API文档、以及相关的代码片段作为上下文,可以帮助LLM生成更准确、更易于理解的文档内容。上下文工程在这里的作用是确保LLM在生成过程中能“心中有数”,避免生成泛泛而谈或与需求不符的内容。

在摘要提取方面,传统的摘要提取算法往往只关注文本本身的统计特征,而忽略了文本所处的具体情境和用户的需求。通过引入上下文工程,摘要系统可以生成更具针对性和实用性的摘要。

例如,对于一篇长篇研究报告,不同的用户可能关注不同的方面:投资者可能关心市场趋势和投资回报,而研究人员可能更关注方法论和创新点。上下文工程可以通过分析用户的身份、查询意图或历史偏好,为LLM提供相应的上下文,生成满足特定用户需求的个性化摘要。在处理包含多个文档或需要跨文档整合信息的摘要任务时,上下文工程可以帮助系统有效地组织和利用来自不同来源的信息,生成全面且连贯的摘要。

例如,LangChain等框架提供的检索(Retrieval)功能,允许系统动态地从外部文档中获取相关信息并插入到提示中,这本身就是上下文工程在摘要提取中的一个应用体现。

通过精细化的上下文管理,内容生成和摘要提取系统能更好地服务于特定场景和特定用户,提升信息传递的效率和效果。

代码生成与软件辅助开发中

上下文工程在代码生成与软件辅助开发领域能显著提升开发效率、代码质量和开发者体验。大型语言模型(LLM)如GitHub Copilot等工具的出现,已经证明了AI在辅助编程方面的能力。然而,要让这些工具真正理解开发者的意图并生成高质量的代码,仅仅依赖当前的代码片段或简单的注释往往是不够的。

上下文工程通过为LLM提供更丰富、更精确的上下文信息,可以极大地改善代码生成的效果。这些上下文信息可以包括整个项目的代码库结构、相关的API文档、特定库的使用规范、已有的测试用例、开发者的编码风格偏好等 。例如,当开发者输入一个函数名和简要描述时,一个具备良好上下文工程能力的代码生成工具可以查阅项目中的其他相关函数,理解它们之间的调用关系和数据流,生成风格一致、接口匹配且符合项目规范的代码。

在软件辅助开发方面,上下文工程在代码补全、bug修复、代码解释、测试用例生成、文档自动生成等环节,有效的上下文信息都能显著提升AI辅助工具的性能。

例如,阿里的通义灵码能根据开发者的任务描述,自动感知工程框架、技术栈、所需代码文件、错误信息等,无需手动添加工程上下文 。能在行间代码生成时,利用当前代码文件及跨文件的上下文,代码库级别的上下文,实时生成行级或函数级代码建议 。更进一步,一些先进的系统开始探索预生成上下文(Pre-generated Context)的策略。

例如,DeepWiki通过对代码仓库进行全面分析(包括代码、README、配置文件),生成结构化的维基式知识库并预先索引,为AI提供结构化的文档、交互式图表、项目功能/架构描述等上下文 。Context7解析项目文档,使用LLM提取代码片段和元数据,生成向量嵌入,预处理整个项目文档,按需筛选,提供附带元数据和描述的代码片段、向量嵌入以及针对LLM优化的llms.txt文件等上下文。

这种精细化的上下文管理和优化,使AI编程助手能成为开发者强大的生产力工具。

个性化推荐与信息检索中

目标是根据用户的具体情境和需求,提供最相关、最有价值的信息或物品。传统的推荐系统往往依赖于用户的历史行为数据(如评分、购买记录)和物品的属性信息,而上下文感知推荐系统(Context-Aware Recommender Systems, CARS)进一步将“上下文信息”纳入考量 。这些上下文信息可以多种多样,例如用户所处的时间(如工作日/周末、白天/夜晚)、地点(如家里/办公室/通勤途中)、设备(如手机/电脑)、当前的社交环境、情绪状态,或更细粒度的情境如天气、活动类型等 。

上下文工程在这些系统中的应用,涉及到上下文的建模、推理以及在推荐算法中的融合。常见的上下文建模方法包括键值对模型、标记语言模型、面向对象模型、逻辑模型和本体模型等 。

例如,一个电影推荐系统在周末可能会给用户推荐轻松的喜剧片,在工作日晚上则可能推荐剧情片,这就是基于时间上下文的简单应用。更复杂的上下文工程可能包括利用贝叶斯网络或规则推理来进行上下文推断,以及通过张量分解等技术将用户、物品和上下文信息共同建模 。

在信息检索领域,上下文工程可以帮助搜索引擎更好地理解用户的查询意图,尤其是在模糊查询或口语化查询时。通过分析用户的历史搜索记录、地理位置、当前热点事件等上下文,搜索引擎可以提供更精准的搜索结果。

例如,搜索“苹果”时,根据用户过去是搜索电子产品还是水果,或者根据用户当前位置是否有苹果零售店,来调整搜索结果的排序和内容。LangChain等框架也支持通过检索增强生成(RAG)的方式,动态地从知识库中检索与用户查询和上下文相关的信息,从而提升问答和信息提供的准确性。

上下文工程面临的挑战

信息的有效获取与整合

复杂的智能体可能需要从多个异构来源(如应用开发者、用户输入、历史交互、工具调用结果、外部数据库等)动态获取上下文 。如何确保这些信息的准确性、实时性,并以一种LLM易于理解和消化的格式进行整合,是一个复杂的系统工程问题。例如,不同来源的数据可能具有不同的结构和语义,需要进行有效的清洗、转换和对齐。

LLM上下文窗口的限制与优化

尽管现代LLM的上下文窗口在不断增大 ,但对于处理非常长的文档或需要长期记忆的复杂任务而言,token数量的限制依然存在。如何在有限的上下文窗口内,选择并提供最相关、最具信息量的上下文,避免信息过载或关键信息被截断,是上下文工程需要精心设计的方面 。研究表明,LLM对上下文窗口中不同位置信息的关注度并不均等,信息在中间部分容易被稀释,而相似内容的堆砌可能导致“注意力干扰” 。

上下文理解的深度与动态适应性

仅仅向LLM提供原始上下文数据可能不足够,系统还需要具备一定的推理能力,理解上下文中的隐含信息、关联关系以及动态变化。例如,在长对话中,如何有效维护和更新对话历史作为上下文,确保LLM能准确理解当前的对话状态和用户意图,是一个复杂的问题。当上下文信息发生变化或出现矛盾时,系统需要能动态调整其行为和决策。

评估和度量上下文工程的有效性

如何量化不同上下文信息对LLM任务性能的贡献?如何评估上下文工程策略的优劣?都需要建立有效的评估指标和方法。

数据隐私和安全

如何在利用用户上下文提供个性化服务的同时,保护用户的敏感信息,是必须认真考虑的问题。

上下文工程的发展前景

上下文工程将更加智能化和自动化

未来的上下文管理系统将不仅仅是简单地传递信息,而是能主动理解任务需求,智能地筛选、整合、摘要甚至推理出最相关的上下文,以最优的方式呈现给模型。涉及到更高级的AI代理(Agent)技术,使上下文管理本身也具备一定的自主决策和学习能力。

多模态和跨领域上下文的融合将成为常态

随着多模态LLM的普及,上下文工程需要处理来自文本、图像、语音、视频等多种来源的信息,将它们有效地融合起来,为模型提供一个统一、全面的世界视图。上下文工程也将打破不同领域知识之间的壁垒,实现跨领域上下文的共享和利用,赋能更广泛的通用人工智能应用。

长时程记忆和个性化上下文的构建将更加成熟

为了支持更持久的交互和更深度的个性化服务,上下文工程需要发展出更有效的长时记忆机制,能准确、安全地存储和检索用户的长期偏好、历史行为等关键信息。使AI系统能真正“认识”用户,提供“千人千面”的智能体验。

更加注重可信赖性和安全性

随着AI在社会生活中的应用日益广泛,如何确保上下文信息的真实性、避免引入偏见、保护用户隐私、以及防止恶意利用,将成为上下文工程设计和实践中的重要考量。可解释的上下文管理和可验证的上下文来源将成为关键。

工具和平台将更加完善和普及

随着技术的成熟和最佳实践的积累,将会涌现出更多标准化、模块化、易用的上下文工程框架、库和平台,极大地降低开发者的使用门槛,促进上下文工程技术在各行各业的广泛应用和创新。

相关文章