Press "Enter" to skip to content

深度解析Context Engineering:让你的AI更聪明、更高效、更省钱

在人工智能领域,我们经常将大语言模型(LLM)比作一个功能强大的“黑箱”函数:你给它输入,它给你输出。但决定这个“黑箱”输出质量的关键,不仅仅是模型本身,更在于我们如何精心设计它的输入。

最近,一个名为 Context Engineering(上下文工程) 的概念在AI领域迅速升温。它到底是什么?它解决了哪些核心问题?我们又该如何实践?这篇教程将为你一一解答。

一、 核心概念:Context 与 Context Window

要理解Context Engineering,我们必须先弄清楚两个基本概念。

1. Context(上下文)

简单来说,Context就是我们提供给大模型的所有输入信息。它就像是模型进行思考和生成答案时所依赖的全部背景材料。这包括:

  • 用户的提问
  • 相关的背景信息和资料
  • 可用的工具列表
  • 工具的执行结果
  • 历史对话记录

模型会将这些输入作为完整的“上下文”,并基于这些内容来生成最终的答案。

2. Context Window(上下文窗口)

Context Window是指模型的输入(即Context)所能容纳的最大信息量,这个容量通常用Token来衡量。

  • Token:是文本被拆分的最小单位,可以是一个字、一个词或一个标点符号。(通常1个汉字约等于0.7个Token)

例如,Gemini 1.5 Pro拥有100万Token的上下文窗口,这相当于近7本书的长度。如果输入内容超过这个限制,模型会丢弃最开始的部分,只保留最新的内容。

二、“大力出奇迹”的陷阱:为什么不能无脑填充Context?

既然有像Gemini 1.5 Pro这样拥有超大上下文窗口的模型,我们是否可以把所有资料——比如一本几百页的产品手册——全部丢给模型,让它自己去寻找答案呢?

答案是否定的。 这种看似简单的“大力出奇迹”方法在现实中会遇到三大瓶颈:

  1. 大部分模型的窗口有限:并非所有模型都拥有百万级的上下文窗口。很多主流或更经济的小模型,其窗口可能只有几万Token,连一本完整的产品手册都装不下。
  2. 输入杂乱会影响模型理解:即使窗口够大,将大量未经筛选、可能包含冗余甚至矛盾信息的内容一次性抛给模型,也会干扰它的判断,导致它混淆重点,最终输出含糊其辞的答案。精心组织、重点突出的内容远胜于信息的堆砌。
  3. 输入越多,成本越高:大模型的API调用大多是按Token计费的。不加节制地填充上下文,会带来巨大的经济开销,尤其是在产品化和大规模应用时,优化输入就等于优化成本。

三、Context Engineering:新时代的AI必修课

为了解决上述问题,Context Engineering 应运而生。

Context Engineering(上下文工程):它关注的不是如何训练或改变模型本身,而是如何精心设计和优化提供给模型的输入内容(Context),从而让模型在有限的Context Window内,实现**“理解得更准、答得更好、花得更少”**的目标。

它的核心思想是:不改变模型,只改变模型看到什么。

Context Engineering之所以在近期变得如此重要,主要有两个原因:

  • 模型已足够强大:当今顶尖模型的性能瓶颈,往往不在于其推理能力,而在于我们是否提供了足够清晰、完整和准确的上下文。
  • AI Agent的兴起:Agent技术结合了大模型与外部工具,其运行过程中会产生大量的工具调用信息和执行结果,这些信息会迅速填满上下文窗口。因此,高效的上下文管理直接决定了Agent的成败。

四、Context Engineering的四大核心技术

Context Engineering并非单一技术,而是一个由多种技术组成的方法体系。我们可以将其划分为四大类:保存(Save)、选择(Select)、压缩(Compress)和隔离(Isolate)

1. 保存Context (Saving Context)

目标:将重要的上下文信息筛选、总结后持久化存储起来(如内存或数据库),在需要时再调取。

这解决了信息持久化的问题。一个典型的例子就是 ChatGPT的记忆(Memory)功能。当用户告诉它“我的名字是马克,我有一个频道叫马克的技术工作坊”,ChatGPT会将这个信息存入它的记忆库。在未来的对话中,它就可以利用这条记忆来提供更个性化的回答。

2. 选择Context (Selecting Context)

目标:从海量的信息中,挑选出与当前用户问题最相关的一小部分内容,放入模型的上下文窗口。这是整个体系中最核心的一环。

选择策略可分为两类:

  • 静态选择 (Static Selection)

    • 方法:将那些永远重要、必须遵守的核心原则或系统指令,在每一次请求时都固定地放入上下文中。
    • 例子:编程助手Cursor的rules文件,其中定义了项目信息和编码规范。这些信息至关重要,无论用户问什么,都必须在场,以确保AI的行为符合预期。
  • 动态选择 (Dynamic Selection)

    • 方法:根据用户的具体问题,动态地从信息库(如文档、记忆库、工具库)中检索最相关的内容。
    • 例子
      • 当用户提问时,ChatGPT从其庞大的记忆库中,挑选出几条最相关的记忆放入上下文。
      • 从上百个可用工具中,只选择与用户任务最相关的3个工具提供给模型。
    • 知名技术RAG (Retrieval-Augmented Generation) 就是动态选择中最著名和最常用的实现方式。

3. 压缩Context (Compressing Context)

目标:当上下文信息(尤其是历史对话和工具执行结果)积累过多时,对其进行总结和压缩,以释放空间。

这在需要长时间运行的Agent中尤为重要。

  • 例子:代码生成Agent Claude Codeauto-compact机制。当它的上下文窗口使用量超过95%时,它会自动触发一个程序,将之前的对话历史、代码读取和修改记录等内容进行总结,用凝练的摘要替换掉冗长的原文,从而将窗口使用量降下来,确保Agent能继续有效运行。

4. 隔离Context (Isolating Context)

目标:在复杂系统中,将不同模块或不同Agent的上下文隔离开来,使其互不干扰,保证各自的专注性和准确性。

这在多智能体(Multi-Agent)系统中非常常见。

  • 例子:Anthropic构建的一个多智能体研究系统。
    1. 系统有一个**“总指挥官” (Lead Agent)**,负责接收用户任务并进行分解。
    2. Lead Agent会将子任务下发给不同的**“专家” (Sub-agents)**,例如一个负责搜PDF,一个负责搜网页。
    3. 每个Sub-agent拥有自己独立的、相互隔离的Context(独立的工具、记忆和历史)。
    4. 最后,Lead Agent收集所有Sub-agent的结果,进行归纳总结,生成最终报告。

通过隔离,每个Agent都能在清晰、无干扰的上下文中高效工作。

总结

让我们快速回顾一下今天学习的核心知识:

  • Context:模型的输入。
  • Context Window:模型输入的容量上限。
  • Context Engineering:一门关于如何精心设计模型输入的优化技术,目标是让模型更准、更好、更省
  • 四大实现方法
    • 保存 (Save):持久化关键信息。
    • 选择 (Select):动态或静态地挑选最相关的信息。
    • 压缩 (Compress):对冗长的历史进行总结。
    • 隔离 (Isolate):在复杂系统中分离不同模块的上下文。

Context Engineering是一个广阔且不断发展的领域。掌握它,意味着你将能更好地驾驭大语言模型,并构建出更强大、更可靠的AI应用。

参考资料

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注