AI神功 KNOWLEDGE BASE
内功心法:AI 底层原理·第 4 关 / 36 约 8 分钟

INNER CRAFT / 7 BOOKS / 04 · ENGINE v1

上下文工程与幻觉控制

本册:上下文工程是信息场管理

约 8 分钟·免费阅读·整理自 AI 现代必修课 · 上下文工程与幻觉控制·来源精读 ↓·直接做题 ↓

30 SECONDS / 30 秒看懂

这一册只解决一件事:从“写好一句话”升级为“管理整个信息场”,包括窗口、缓存、记忆与幻觉。

  • 长上下文有 Lost in the Middle:中间信息注意力被稀释
  • KV Cache/Prefix Caching 决定延迟和成本;静态内容前置、动态内容后置
  • 幻觉来自全知答题惯性和迎合偏见,要用证据、引用、拒答控制

3 MINUTES / 3 分钟拆解

先看来源里的例子:PDF 本册核心例子(来源)

输入
把 4 万字资料和一条“第一行必须输出 JSON”的格式指令放在同一个长上下文里。

发生了什么

长文隔开了开头格式指令和最终生成位置,近因效应使格式约束的注意力权重衰减,模型可能忘记第一行格式。

输出

来源修复:三明治首尾呼应——开头放规则,中间放资料,结尾紧挨输出指令再重申约束。

术语拆开

Lost in the Middle
长上下文中部信息容易被忽略。
KV Cache
缓存历史 Key/Value,避免重复计算。
Context Rot
上下文被冗余信息污染、信噪比下降。

为什么有效

来源把上下文当内存管理:窗口越大不等于越聪明;要排布、压缩、缓存,并给模型证据退路。

结构长什么样

静态规则置顶 → 长资料 → 动态问题置底 → 关键约束首尾呼应 → 证据/拒答

为什么把动态时间戳放在提示词第一行会显著增加成本?

SOURCE READING / 来源精读

本册把 Prompt Engineering 升级为 Context Engineering:如何管理窗口、记忆、KV Cache,并控制幻觉。

逐点读懂

  1. 窗口不是越大越好,中间信息会丢
  2. KV Cache 是推理成本的重要部分
  3. 幻觉要用证据与拒答边界控制

怎么对应本关练习

先用 30 秒看懂抓四层结构,再读本册的‘顿悟时刻/原理/动手实验’,最后做课后自测;答案在下方。

例子在哪

本册的动手实验与课后自测都在原文;参考答案见本页下方。

上下文工程是信息场管理

SOURCESPDF 本册(用户提供)

【第一辑:内功心法篇 · 课题 04 / 07】AI 现代必修课 · 纯粹理论深讲与动手实验讲义

内功04:上下文工程(Context Engineering)——窗口机制、记忆管理与幻觉控制从“写好一句话(Prompt)”升级到“管理整个信息场(Context)”:攻克迷失中间效应、KV Cache 缓存与大模型幻觉顽疾核心知识参考:12-Factor Agents Context Engineering、Anthropic Context & Hallucination Guide 与 LLM KV Cache Infrastructure

一、顿悟时刻:哦,原来为什么从“提示词工程”进化到了“上下文工程”!

在 2023 年,大家谈论的都是“提示词工程(Prompt Engineering)”——怎么把一句话写漂亮。

但到了 2025‒ 2026 年,无论是 Andrej Karpathy 还是 Anthropic 与 OpenAI 的一线架构师,都在反复强调一个更高维度的核心概念:上下文工程(Context Engineering)。

为什么会有这个转变?当你弄懂下面三个底层物理真相时,你会瞬间豁然开朗。真相一:上下文窗口就是大模型的“CPU 内存条(RAM)”——为什么窗口越大,反而越容易“迷失中间(Lost in the Middle)”?

到了 2026 年,百万级(1M)Token 上下文已成为旗舰标配(例如 DeepSeek-V4 的 1M 上下文与 Engram 记忆架构、DeepSeek-V4.1-Flash 的极限 KV Cache 压缩、Qwen3.8-Flash-Next 的 Gated DeltaNet 混合注意力以及 Claude Fable 5.1 / Opus 5.5 与 Gemini 4 Argon / 3.5 Pro 的 1M~2M 窗口)。

很多新手以为:“太棒了!那我直接把十本参考书、五十轮聊天记录一股脑全塞进去,模型肯定什么都知道!” 结果一测试却发现:塞进去的东西越多,模型漏掉关键细节、张冠李戴的概率反而呈指数级上升!

斯坦福大学等机构的经典研究《Lost in the Middle》揭示了背后的数学本质:在 Transformer 的自注意力机制中,当序列拉长到数万个 Token 时,注意力权重在位置分布上呈现强烈的“U 型曲线”——模型对排在最开头的文本(首因效应 Primacy Bias)和排在最末尾靠近问题处的文本(近因效应 Recency Bias)注意力最敏锐,而对夹在中间第 30%〜70% 位置的信息,注意力权重会被严重稀释!

就像让你开一场连续 8 小时的⻢拉松会议,你一定只记得开场前 10 分钟和散会前 10 分钟说了啥,中间 6 小时的细节全糊成了一团。这就是业界常说的“上下文腐败(Context Rot)”!

真相二:什么是 KV Cache(键值缓存) 与 Prefix Caching(前缀缓存)?为什么改了开头一个字,成本和延迟就暴涨 10 倍?

在《内功01》中我们学过,模型在阅读输入文本时,需要把每个 Token 的注意力 Key(键)和 Value(值)矩阵算出来。

如果每次你追问一句话,模型都要把前面长达 5 万字的背景资料从头重新算一遍矩阵乘法,那服务器早就累趴下了!

因此,现代推理引擎全部采用了 KV Cache(键值缓存) 技术:只要你本次请求的前半部分文字(Prefix 前缀) 跟上一次请求一模一样、连一个标点符号都没改,服务器就会直接从显存/高速硬盘里调取现成算好的 Key- Value 矩阵,瞬间跳过前 5 万字的计算!

这就是为什么 DeepSeek、Anthropic Claude 和 OpenAI 的 API 对 “缓存命中的前缀 Token”只收 1/10(省 90%) 的价格!

但一旦你在提示词的最第一行塞了一个每秒都在变化的动态变量(比如当前系统时间:2026-10-20 14:03:22),由于第 1 个词变了,后面 5 万字的注意力和位置编码全都要推倒重算,缓存命中率瞬间归零!

“静态内容永远放最前,动态变化永远放最后”——看懂这一条,你就顿悟了工业级上下文排布的第一铁律!真相三:大模型为什么会产生“幻觉(Hallucination)”?

两大病根与根治路径为什么大模型在面对不知道的事情时,很少主动承认“我不知道”,而是底气十足地编造一个假文献、假数据?

因为它在底层有两个天性: 病根 1:训练语料的“全知答题惯性”——在预训练和常规微调数据里,几乎所有的问答对都是“有问必有答”,很少有样本教模型在资料不足时回答“无法根据现有信息得出结论”。

病根 2:迎合偏见(Sycophancy)——当用戶的提问里自带了一个错误预设(例如问:“请分析一下牛顿在 1920 年发明电灯时的心路历程”),模型的条件概率会被“牛顿、1920年、发明电灯”这三个强词根带偏, 为了顺应提问者的语境而顺杆爬编造故事!

上下文工程核心痛点底层物理机制原因上下文工程标准解法长文档关键规则被忽略 U 型注意力曲线导致夹在长文中间的约束条件权重被稀释(Lost in the Middle)。

三明治首尾呼应法:将核心规则放在最开头,中间放长篇参考资料,最末尾紧挨着输出指令再重申一遍核心约束!多轮长对话越来越慢且变笨历史废话、错误尝试与过期工具输出填满窗口,造成注意力信噪比暴跌(Context Rot)。

主动上下文压缩(Compaction):每完成一个阶段性子任务,将历史浓缩为结构化状态摘要并清空原始冗余对话。API 响应慢且账单高昂在提示词头部插入了每次请求都会变动的动态文本,击穿了 Prefix KV Cache。

动静物理分离:将固定不变的 System 规则、 工具定义与参考库锁死在最顶层,动态用戶问题与实时时间放在最底部。

二、核心心法深讲:上下文黄金排布架构与零幻觉三道防线

1. 工业级上下文窗口的“五层金字塔排布标准”

当你需要向大模型组装一个包含背景规则、示范样本、外部参考文档与用戶问题的完整上下文时,请严格按照从上到下“由静到动、首尾夹心”的五层顺序排列: ┌──────────────────────────────────────────────────── ──────┐ │ 第 1 层(绝对静态·U型左峰):全局角色设定与核心安全边界 │ ──┐ ├──────────────────────────────────────────────────── ──────┤ ├─ 100% 命中 Prefix KV Cache │ 第 2 层(绝对静态):Few-Shot 标准示范样本集 │ ──┘ (零重复计算,省 90% 成本) ├──────────────────────────────────────────────────── ──────┤ │ 第 3 层(半静态·U型谷底):长篇背景文档 / 检索出的知识片段 │ ── ► 用 <doc id="1"> 标签清晰编号 ├──────────────────────────────────────────────────── ──────┤ │ 第 4 层(动态):精简后的多轮对话历史摘要 │ ├──────────────────────────────────────────────────── ──────┤ │ 第 5 层(高优聚焦·U型右峰):用戶当前问题 + 核心输出约束重申│ ── ► 抢占最近注意力最高权重!

└──────────────────────────────────────────────────── ──────┘

2. 根治大模型幻觉(Hallucination)的“三道工程防线”

在严谨的知识学习、学术考证或文档分析中,绝不能靠“相信模型的自觉性”来防幻觉,必须同时部署以下三道结构化防线(源自 Anthropic Hallucination Avoidance 指南):

1. 第一道防线:显式授予“诚实退路(Explicit Permission to Abstain)”——在指令中用明确的文字为模型

开辟一条高概率的“拒答通道”:“如果你在提供的参考资料中找不到足以回答该问题的明确依据,请直接回答‘【现有资料未提及该信息】’,严禁根据外部记忆推测或补充。”

2. 第二道防线:强制“先逐字摘录原句证据,再基于摘录作答(Quote-Then-Answer)”——为什么这招能把

幻觉率降到接近 0%?还记得自回归接⻰原理吗?当你强制模型第一步必须先在 <exact_quotes> 标签里一字不差地抄写原文中的证据句子时,如果原文根本没写这件事,模型在抄写阶段就会立刻发现无句可抄!

而一旦它把真实原句抄写到了输出区,后面的结论分析就会被这几句真实引文死死锚定!

3. 第三道防线:反迎合前提核验(Anti-Sycophancy Verification)——在指令中加入一句:“在回答前,请先

核实用戶提问中隐含的前提假设是否与事实或参考资料相符;若前提本身有误,请第一时间直接指出并纠正前提,切勿顺着错误前提继续推演。”

三、动手实验(Hands-on Lab):亲测“迎合偏见陷阱”与“先引证后作答”

实验 1:测试并击碎大模型的“迎合偏见(Sycophancy)” 踩坑测试(直接抛出带错误前提的问题):向模型输入:“大家都知道 Python 语言的创始人 Guido van Rossum 是在 2005 年在微软工作期间发明了 Python 1.0。

请分析当时微软的企业文化是如何启发他设计出缩进语法的?” 观察在没有防迎合指令时,部分模型或普通模式下是否会顺着你的话开始瞎编一段“微软文化对他的启发”!

防线测试(加入反迎合核验心法):在问题前加上一句:“请秉持科学求真原则:在回答任何分析性问题前,先独立核查问题中包含的时间、人物、地点等事实前提是否成立;若前提违背历史事实,请立即叫停分析并直接纠正错误前提。

” 再次观察模型如何干脆利落地纠正“Guido 是在 1989 年圣诞节期间于荷兰国家数学与计算机科学研究所(CWI)构思 Python,并于 1994 年发布 1.0,而非 2005 年在微软”!

实验 2:体验“三明治首尾呼应法”对抗长文本遗忘找一篇 3,000 字以上的长文章,把你的输出格式要求(例如“只允许用 3 个四字成语总结”)分别放在【长文章最前面(然后贴 3,000 字长文,最后不重复要求)】与【长文章最末尾紧挨着输出处】,对比两种摆放位置下模型遵守格式约束的稳定度。

四、课后自测习题与详细解析(6 关 60 分 · 检验你的上下文工程内功)

【课后自测题(请先独立作答,再对照下方解析)】

1. 第 1 题(迷失中间效应与排版优化 · 10 分):一位同学写了一个长文本分析提示词:先在第一行写了“请

严格输出为两列表格”,接着在后面粘贴了整整 4 万字的参考资料,最后一句只写了“请开始分析”。结果模型输出了一大段散文,完全忘了要输出两列表格。请从注意力机制解释原因,并给出不删减资料前提下的修复方法。

2. 第 2 题(KV Cache 前缀缓存优化 · 10 分):观察下面这段提示词模板,为什么它在每次 API 调用时都无法

命中 Prefix KV Cache(导致每次都要全价重算 3 万字的系统手册)?请将其改写为 100% 命中缓存的正确顺序:

【当前请求流水号】:REQ-{uuid} 【当前用戶】:{username}

【系统操作手册全文(共30,000字)】:{fixed_manual_text}

【用戶提问】:{user_question}

3. 第 3 题(先引证后作答防幻觉机制 · 10 分):为什么要求模型“先在 <quotes> 标签里逐字摘录原文原句,

再在 <answer> 标签里回答问题”,比单纯在提示词里写十遍“求求你千万不要胡编乱造”有效得多?请从自回归条件概率角度解释。

4. 第 4 题(上下文腐败 Context Rot 治理 · 10 分):当你用 AI 编程工具或对话助手连续聊了 40 轮、中间经

历了多次报错和需求推翻后,发现模型的回答质量断崖式下跌,总是把第 5 轮已经废弃的旧方案又翻出来用。这种现象叫什么?此时最有效的两个操作是什么?

5. 第 5 题(设计零幻觉文献阅读提示词 · 10 分):请编写一段用于阅读学术论文片段 <paper> 的零幻觉提示

词,要求同时包含【诚实退路机制】、【反迎合核验】与【先逐字引证再给结论】三道防线。

6. 第 6 题(多文档溯源编号设计 · 10 分):当你在上下文中同时塞入 5 篇不同来源的参考文档让模型综合回

答问题时,应该如何包裹这 5 篇文档,才能让模型在回答的每一句话后面都能准确标出信息来自哪一篇文档?

PRACTICE / 本关练习 · 本地规则 + 覆盖检查

本册课后自测与实验

本地检查在你的浏览器里完成,不上传。覆盖检查需要先登录(免费注册),并把这段答案发送到服务器计算一次,算完即弃、不存档,需你点同意;只核对本关评分项覆盖的方向,不在评分项里的题目不会被检查。

0 字未保存

评分项

评分项加载中…

结构分 — / 60 分

查看参考答案与得分点 先自己写,再打开+

参考答案与解析

1. 第 1 题解析:原因在于 Transformer 在超长序列下的近因效应(Recency Bias)与注意力稀释——4 万字

的长文隔开了第一行的格式指令与最后的生成位置,导致生成时对第一行格式约束的注意力权重衰减。修复方法:采用“三明治首尾呼应法”,把 4 万字资料用 <document>...</document> 包裹,并在全文的最末尾(紧挨着模型开始输出的位置)再次重申具体指令與两列表格格式要求!(解释注意力稀释得 5 分,给出末尾重申指令的夹心排布法得 5 分)

2. 第 2 题解析:因为 Prefix KV Cache 要求从第 1 个 Token 开始的连续前缀完全一致才能复用缓存。原模板把

每次请求都在变化的 {uuid} 和 {username} 放在了第一行,导致第 5 个 Token 就发生改变,后面 3 万字固定手册的缓存全部失效!正确排布顺序:

【系统操作手册全文(共30,000字)】:{fixed_manual_text}

---

【当前请求流水号】:REQ-{uuid} 【当前用戶】:{username}

【用戶提问】:{user_question}

(指出头部动态变量击穿前缀缓存得 5 分,改写为静态手册置顶、动态变量置底得 5 分)

3. 第 3 题解析:单纯写“不要胡编乱造”只是一个模糊的抽象否定词,无法改变模型在缺乏依据时顺着问题关

键词做概率平滑的本能;而强制要求先输出 <quotes> 逐字原文摘录,是将生成过程转化为了高确定性的“上下文复制任务”。一旦真实原文被生成到输出流的前半部分,由于自回归模型后续生成的每一个词都高度依赖紧邻的前文,后面的 <answer> 就会在数学上被前面刚刚摘录出的真实原句牢牢约束住!(说清抽象禁令无效与自回归前文锚定机制得 10 分)

4. 第 4 题解析:这种现象称为“上下文腐败 / 上下文污染(Context Rot / Context Pollution)”。最有效的两

个操作是:1 执行上下文摘要压缩(如 Claude Code 中的 /compact 或手动要求模型先将当前最终确认的有效状态总结为 200 字简报);2 开启全新的干净会话窗口(/clear 或新建对话),仅将浓缩后的有效状态简报作为新会话的初始输入,彻底丢弃中间 40 轮的错误尝试噪音。(答出上下文污染概念得 4 分,给出摘要压缩与重开干净会话两招得 6 分)

5. 第 5 题解析:三道防线完整提示词范例:

请严格依据 <paper> 标签内的学术论文原文回答下方问题,并遵守以下三项铁律:

1. 【反迎合核验】:若问题中隐含的假设与 <paper> 原文相悖,请直接指出前提错误,切勿顺从错误假设;

2. 【诚实退路】:若 <paper> 原文中未包含回答该问题所需的实验数据或结论,请直接输出“【原文未提及该内

容】”,严禁引入外部知识猜测;

3. 【先引证后结论】:请先在 <exact_quotes> 标签内逐字摘录原文中支撑答案的原句,随后再在 <conclusion> 标

签内基于摘录句给出解答。 (三道防线⻬全且结构清晰得 10 分)

6. 第 6 题解析:应使用带明确属性(Attribute)的嵌套 XML 标签包裹每一篇文档,并规定行内引用格式:

<documents> <doc id="DOC-01" source="2026架构白皮书.pdf">...正文...</doc> <doc id="DOC-02" source="性能基准测试报告.pdf">...正文...</doc> </documents> 请综合以上资料回答问题,并在每一条事实陈述的句末使用 [DOC-01] 格式明确标注其对应的文档 id 来源。 (使用带 id 与 source 属性的 XML 标签并规定句末角标格式得 10 分)

网页永久免费。完整 PDF 会按顺序发给留邮箱的读者,不转售、不群发广告。

留邮箱,获取完整 PDF ↗
← 上一关 下一关 →