这是一个随着大语言模型(LLM)兴起而变得越来越重要的概念,可以说是Prompt Engineering(提示词工程)的进阶和扩展。


  1. 核心定义:什么是 Context Engineering?

Context Engineering(上下文工程) 指的是为了引导大语言模型生成最符合期望的输出,而系统地设计、构建和管理提供给模型的上下文信息(Context)的艺术和科学。

简单来说,它解决的是这个问题:“除了当前的指令(Prompt),我还应该给模型‘看’些什么信息,才能让它更好地理解我的意图并完成任务?”

· Prompt(提示):是你想让模型做的事情(指令)。
· Context(上下文):是你为模型完成任务所提供的背景信息、参考资料和约束条件。

Context Engineering 就是巧妙地组合 Prompt 和 Context,以达到最佳效果。

  1. 为什么 Context Engineering 如此重要?

LLM(如 GPT-4)本质上是一个基于上下文进行预测的系统。它没有长期的记忆,每一次对话或请求,它所拥有的全部信息就是你本次提供的上下文窗口内的内容。因此,上下文的质量直接决定了模型输出的质量。

其重要性体现在:

  1. 突破模型的知识局限:模型的训练数据有截止日期,且可能不包含你的私有数据。通过上下文,你可以为模型“注入”它不知道的新知识(如公司内部文档、最新新闻等)。

  2. 控制输出风格和格式:你可以通过在上下文中提供示例(Few-shot Learning),精确地告诉模型你希望它用什么风格(正式、口语化)、什么结构(JSON、Markdown、纯文本)来回答。

  3. 引导复杂推理过程:对于逻辑推理、数学计算或复杂决策任务,通过在上下文中提供“思维链”(Chain-of-Thought)示例,可以引导模型一步步思考,得出更准确的答案。

  4. 减少“幻觉”:当模型拥有充足且相关的上下文事实依据时,它凭空编造错误答案的可能性会大大降低。

  5. 实现个性化:通过在上下文中提供用户的历史对话、偏好设置等信息,可以让模型的回答更加个性化,实现更自然的多轮对话。

  6. Context 的主要类型和提供方式

上下文信息可以通过多种方式提供给模型,常见的有:

类型 描述 示例
指令(Instruction) 直接、明确的命令。这是最核心的Prompt。 “总结以下文章。”
示例(Examples) 少样本学习(Few-shot Learning),提供输入输出的例子来示范任务。 (输入:“我喜欢这个电影”, 输出:“情感:正面”)
参考文档(Reference Documents) 提供模型回答问题所需的外部知识。 一篇长的PDF报告、网页内容、数据库查询结果。
对话历史(Conversation History) 在多轮对话中,之前的问答记录构成了最重要的上下文。 用户:“什么是光合作用?” -> AI:回答… -> 用户:“它和呼吸作用有什么区别?”
系统提示(System Prompt) 在对话开始时设定的高级指令,用于定义AI的角色、目标和行为约束。 “你是一个乐于助人且无害的AI助手。你的回答应该简洁准确。”
工具和API的返回结果 当AI调用外部工具(如计算器、搜索引擎、代码执行器)后,这些工具的结果会成为新的上下文。 用户:“123*456等于多少?” -> AI调用计算器 -> 将结果“56088”作为上下文 -> AI:“结果是56088。”
结构化数据 提供表格、JSON、XML等结构化数据供模型分析或参考。 “根据下面的销售数据表格,生成一份总结报告:…”

  1. Context Engineering 的核心技术与策略

a) 少样本学习(Few-Shot Learning)

在Prompt中提供几个任务示例,让模型通过类比来学习如何完成新任务。

请将中文翻译成英文。
示例1: 输入:你好 -> 输出:Hello
示例2: 输入:今天天气真好 -> 输出:The weather is nice today.
新输入: 我饿了

模型很可能输出:I am hungry

b) 思维链(Chain-of-Thought, CoT)

在上下文中展示一个逐步推理的示例,引导模型进行复杂推理。

问题:一个食堂有23个苹果,如果他们用了20个又买了6个,现在有多少个?
推理:他们最初有23个。用了20个,所以剩下 23 - 20 = 3个。然后又买了6个,所以现在有 3 + 6 = 9个。答案是9。
问题:一个房间里有10个人,走了4个人,又来了3个人,现在有几个人?
推理:

模型会模仿逐步推理:走了4个人,所以剩下 10 - 4 = 6个人。又来了3个人,所以现在有 6 + 3 = 9个人。答案是9。

c) 角色设定(Role Playing)

在系统提示或上下文开头明确设定模型的角色。

【系统提示:你是一名经验丰富的 cybersecurity 专家,擅长用通俗易懂的语言向非技术人员解释复杂概念。】
用户:请给我解释一下什么是“零信任”架构。

模型会以网络安全专家的口吻和视角来组织答案。

d) 检索增强生成(Retrieval-Augmented Generation, RAG)

这是Context Engineering最典型的应用。其核心流程是:

  1. 检索(Retrieve):当用户提出问题后,系统先从海量知识库(向量数据库)中检索出与问题最相关的文档片段。
  2. 增强(Augment):将这些检索到的文档片段作为上下文,与用户的原始问题组合成一个新的、信息丰富的Prompt。
  3. 生成(Generate):将组合好的Prompt发送给LLM,让模型基于提供的上下文生成答案。

这种方式完美结合了外部知识源的准确性和LLM强大的语言生成能力。

  1. 最佳实践与常见陷阱

最佳实践:

  1. 相关性优先:确保提供的上下文与任务高度相关,无关信息会干扰模型。
  2. 位置很重要:关键信息(如指令、主要问题)放在上下文的最开头或最末尾,因为模型对这两个位置的注意力更高。
  3. 清晰的结构:使用分隔符(如 ###, “”", —)来清晰地区分指令、上下文和问题。例如:基于以下文章:<文章内容>。请总结文章大意。
  4. 迭代优化:不断测试和调整你的上下文设计(A/B测试),观察什么样的上下文能带来最好的输出。

常见陷阱:

  1. 上下文过长(Context Overflow):超过模型的上下文窗口限制(Token数限制),会导致开头的信息被“遗忘”。
  2. 信息冲突:如果提供的上下文中包含相互矛盾的信息,模型可能会感到困惑,输出不可预测的结果。
  3. 垃圾进,垃圾出(Garbage In, Garbage Out):如果提供的上下文质量低下、充满错误,模型的输出也大概率会出错。
  4. 意外泄露:在共享或记录日志时,不小心将敏感的上下文信息(如私有数据、系统提示)泄露给了用户。

总结

Context Engineering 是解锁大语言模型真正潜力的关键。它不再是简单地问问题,而是转变为如何为模型精心策划和搭建一个信息生态系统,使其在这个系统内能够最大程度地发挥其能力。

随着模型上下文窗口的不断增大(从4K到100K,甚至更长),Context Engineering 的重要性只会与日俱增,成为AI应用开发者必须掌握的核心技能。它推动AI从“什么都懂一点但可能不深”的通才,向“在特定领域拥有深厚专业知识”的专家转变。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐