Skip to content

76. 什么是上下文工程(Context Engineering)? ​

难度 P0 必背 · 岗位 应用 · 频率 ★★★ · 预计阅读 6 min

本题阅读地图 ​

  1. 💡 简要回答
  2. 📝 详细解析
  3. 🎯 面试总结

👔 面试官:你有没有听说过「上下文工程」这个概念?它和 Prompt 工程有什么区别?

🙋 我:上下文工程……就是把提示词写得更好?

👔 面试官:不只是写好提示词,上下文工程管的是整个进入模型的信息,而不只是指令文字。你能展开说说吗?

这是 2025 年 AI 工程领域最热门的概念之一,Andrej Karpathy 等人明确提出,值得深入理解。

TL;DR 速记 ​

  • 是什么:上下文工程是系统化管理「送进 LLM 的全部信息」:系统提示、任务目标、历史、RAG 证据、工具定义和输出格式。
  • 关键点:它比 Prompt 工程更大,Prompt 只管指令文字,上下文工程管模型推理时的整个信息环境。
  • 怎么答:「上下文工程 = 为模型塑造信息环境;核心是筛选、排序、压缩、更新,让模型在正确材料和约束下行动。」

图解 ​

图 1:上下文工程管理什么 ​

相关题

上下文工程解释「给模型什么信息」;信息太长会触发 Q31 Lost in the Middle,复杂研究场景会扩展到 Q77 DeepSearch。

💡 简要回答 ​

**上下文工程(Context Engineering)**是一门关于「如何精心设计、筛选、组织和动态更新输送给 LLM 的信息」的工程学科。它比 Prompt 工程更宏观:Prompt 工程只关注「指令文字怎么写」,上下文工程关注的是模型在推理时的「整个信息环境」——系统提示、对话历史、检索到的外部知识、工具定义、结构化输出要求,都是上下文工程的管理对象。

一句话概括:上下文工程 = 为模型精心塑造信息环境,用来引导和约束它的行为。

📝 详细解析 ​

为什么需要上下文工程? ​

LLM 本质上是基于上下文的自回归预测模型——它的整个世界就是当前这次请求里携带的上下文,模型的所有推理、决策和输出,都完全基于你给它的这些信息。

因此,「给模型什么信息」比「模型本身有多强」更能决定输出质量。上下文工程就是系统化地做这件事。

上下文的六大组成模块 ​

模块一:系统提示 / 角色设定 定义 Agent 的「人设」、核心职责和行为规范。这是上下文里最稳定的部分,整个会话期间几乎不变。

模块二:任务指令与目标 清晰描述当前需要完成的任务,为本次交互提供明确方向。

模块三:对话与行动历史 多轮对话的完整记录,以及 Agent 之前调用工具的结果。这是模拟「记忆」和「状态」的关键。

模块四:外部知识(RAG 检索结果) 通过向量检索从知识库拿到的、与当前任务最相关的信息片段,弥补 LLM 知识时效性和专有性不足。

模块五:工具与函数定义 Agent 可以调用的工具列表,包括描述、参数格式。通过「说明书」的方式扩展 Agent 的行动能力。

模块六:结构化输出要求 要求模型以特定 JSON/XML 格式输出,便于后端程序解析,驱动自动化流程。

上下文工程的三大核心策略 ​

策略一:分层与优先级管理

上下文窗口是有限资源(128K token 也是有限的)。不是所有内容都同等重要:

  • 系统提示:最高优先级,始终保留、不截断
  • 检索内容:按相关性排序,只放最相关的 Top-K
  • 对话历史:可以压缩、摘要,但不能完全丢失关键节点

策略二:引导推理链(Chain-of-Thought)

通过在系统提示里要求 Agent 按「思考 → 行动 → 观察」的步骤工作,把结构化思维过程也放进上下文:

思考:用户需要北京天气决定要不要带伞,我没有实时数据,需要调工具。
行动:调用 get_weather(city="北京")
观察:返回「晴,25°C」
思考:晴天不用带伞,可以给出最终答案了。
回答:北京今天晴天 25°C,出门不需要带伞。

这种结构化的推理过程本身放进上下文,会迫使模型进行更深入的逻辑推理。

策略三:动态管理与状态维持

对话越长,上下文管理越关键。三种常用手段:

  • 滑动窗口:只保留最近 N 轮,简单但可能丢失关键信息
  • 智能摘要:定期把旧对话压成摘要,「用户之前遇到了登录问题,已引导清除浏览器缓存」
  • 外部向量记忆:重要信息存到向量库,需要时再检索拉回来

Prompt 工程 vs 上下文工程 ​

维度Prompt 工程上下文工程
关注范围指令文字怎么写整个信息环境怎么设计
管理对象提示词本身系统提示 + 历史 + RAG + 工具定义 + 格式要求
核心技能自然语言表达信息筛选 + 检索 + 记忆管理 + 工作流设计
复杂度相对低涵盖整个 Agent 信息流

常见踩坑与反例 ​

踩坑 1:把上下文工程等同于 Prompt 工程 ​

错误描述:「上下文工程就是把提示词写得更好」。

正确做法:Prompt 只是上下文的一部分。上下文工程还包括历史、外部知识、工具定义、状态、输出约束和动态裁剪策略。

踩坑 2:把所有信息都塞进上下文 ​

错误描述:系统提示、全量历史、所有检索结果、全部工具 schema 一股脑塞进去。

正确做法:按优先级管理上下文:系统约束保留,检索证据按相关性筛选,历史做摘要,工具按场景动态注入。

踩坑 3:只关注输入,不关注状态更新 ​

错误描述:多轮任务里每轮都重新拼 prompt,不维护用户目标、已完成步骤和关键约束。

正确做法:把上下文当成状态管理问题,记录任务进度、决策依据、未完成事项,并在每轮更新。

踩坑 4:忽略输出格式也是上下文 ​

错误描述:只约束模型「认真回答」,不定义 JSON schema、字段、引用格式或校验规则。

正确做法:结构化输出要求也是上下文工程的一部分,直接影响后端能否稳定解析和自动化执行。

面试官可能继续追问 ​

  • 追问 1:上下文工程和 Prompt 工程最大的区别是什么? 答题要点:Prompt 工程关注指令怎么写;上下文工程关注进入模型的整个信息环境怎么设计、筛选、组织和动态更新。

  • 追问 2:上下文里哪些信息优先级最高? 答题要点:系统约束和安全规则最高,任务目标其次,关键状态和证据再其次;低价值历史和冗余检索结果应压缩或删除。

  • 追问 3:长对话里怎么管理历史? 答题要点:滑动窗口保近期上下文,摘要保长期关键事实,重要状态外部持久化,需要时再检索回来。

  • 追问 4:上下文工程怎么评估效果? 答题要点:看任务成功率、引用正确率、工具选择准确率、结构化输出通过率、token 成本和长对话稳定性。

🎯 面试总结 ​

答这道题要清楚地说出上下文工程比 Prompt 工程更宏观:后者只管指令文字,前者管的是整个送进模型的信息环境。六大模块(系统提示、任务指令、历史、外部知识、工具定义、输出格式)说全,再补一句「其根本原理是:信息环境塑造智能行为」,这道题就满分了。


章节首页 · ← Q75 · Q77 →

最后更新2026-05-01
难度P0
频率medium
阅读6 min
主题llm
觉得有帮助?把这个链接转给正在求职的朋友 · 用 Ctrl + K 全站搜索其它题