AI 课堂

上下文工程:给模型准备合格的案卷

2026-09-17

本课结构 点击折叠
  1. 一句话定义
  2. 生活化类比:项目经理给审查员备案卷
  3. 本质与能力边界
  4. 实战演练:制度问答答错的完整诊断与修复
  5. 建工案例:制度问答为什么答错
  6. 供应商话术拆解
  7. 常见问答
  8. 自测
  9. 概念卡片
  10. 延伸阅读

提示词只是上下文的指令部分。资料怎么选、版本怎么标、历史怎么留、工具结果怎么接进来——这门“案卷管理”的功夫,决定模型表现的上限。

本课回答的业务问题:为什么把公司制度全塞进对话,模型还是答错?对话越聊越长的多轮任务,为什么后面开始“失忆”或“跑偏”?

前置课程:第 1、2 课(提示工程、结构化输出)。

读完本课你将能够

  1. 区分提示工程与上下文工程,列全上下文的五个组成部分(指令、资料、对话历史、工具结果、外部记忆);
  2. 用“案卷”视角诊断答错问题:先查案卷,再怪模型;
  3. 掌握五条实务规则:关键信息显式组织、摘要保留回查锚点、记忆带版本与时间戳、历史定期压缩落库、工具结果标注来源;
  4. 解释“窗口大不等于用得好”“压缩必丢信息”的机制与对策;
  5. 把一次答错事故的修复沉淀成材料管理制度,而不是一次性的救火。

一句话定义

上下文工程是为模型的每一步工作选择、组织、更新所需信息的方法,对象包括:指令(提示词)、资料(RAG 检索结果)、对话历史、工具返回结果和外部记忆。提示工程是它的一部分,不是同义词。

这句话拆开有三层意思:

  • “每一步工作”:上下文不是开工前备一次就完事的静态清单。多轮任务里,模型每一轮看到的上下文都在变——你新贴的材料、它上一轮的回答、工具刚查回的结果都在追加,旧内容在膨胀、在被挤出注意力。所以上下文工程是持续动作:每一轮都要重新判断“这一轮它需要什么、不需要什么”。
  • 五个对象逐一点名:指令(提示词,上一课);资料(贴进去的合同、制度、检索回来的片段);对话历史(前面几轮的问答);工具返回结果(检索、计算、台账查询的产出);外部记忆(存在对话之外、需要时再读入的结论)。提示工程只优化第一个对象——指令写得烂,其他四样再好也不行;指令写得再好,另外四样喂错照样不行。
  • “提示工程是它的一部分”解释了一个常见落差:提示词明明反复打磨过,系统还是答错。因为多数答错的根子不在指令,在案卷——版本错了、材料混了、历史太长把关键结论稀释了。换更强的模型解决不了案卷问题,这是本课反复出现的结论。

生活化类比:项目经理给审查员备案卷

审查员(模型)能力再强,也依赖案卷的质量:正文、补充协议、正确版本的制度、已确认的结论、待办清单要齐全有序;过期的制度版本要撤掉;无关材料别混进来;上次的结论要能翻回去核对。案卷混乱,再好的审查员也会出错——错还不在他。

类比成立在哪:第一,产出质量的上限由案卷决定——同一个审查员,给他装订齐整的案卷和给他一麻袋混装的文件,报告质量天差地别;模型的聪明程度只是案卷质量的放大器,案卷是垃圾,放大出来的是自信的垃圾。第二,版本纪律完全对应——案卷里混进作废图纸,审查员按废图提意见,错不在他而在装订的人;上下文里混入旧版制度,模型按旧口径回答,错不在模型在治理。第三,“翻回核对”对应外部记忆——案卷里要有索引,让审查员能翻回上次已确认的结论照着办,而不是让他凭记忆复述。

类比失效在哪:审查员会主动追问——材料缺了他打电话要;模型默认不反问,缺什么它就“凭感觉”补,所以“可能缺什么”必须由你在提示词和流程里预判。审查员会自己去档案室调卷;模型够不够得着档案室,取决于你给不给它工具(Agent 与工具课展开)。审查员有执业责任兜底;模型没有责任能力,责任始终在组织它的人。一句话:审查员的能力是常量,案卷是变量;而模型连“想去调卷”这个念头,都要你替它安排。

本质与能力边界

1. 窗口内不等于用得好:塞得下 ≠ 审得准

第 1 阶段第 1 课讲过上下文窗口是“一次能装多少”,也讲过 lost in the middle:模型对长文本中部位置的信息利用会打折扣。实务含义是装得下只是物理条件,用得好还取决于位置和干扰——同一条制度放在材料开头、中部、结尾,被引用的概率不一样;材料越长、无关内容越多,关键那条“看过但没用上”的风险越大。

虚构例子:86 项制度一起塞进去,问“临建设施审批归哪个部门”,相关规定恰好排在第 40 多项的中部,前后夹着大量无关制度——模型可能引用一项沾边但并非最相关的制度作答,答得有模有样,错的悄无声息。对策不是祈祷模型“肯定看到了”,而是显式组织:关键材料放开头、或直接在指令里点名(“依据现行版《分包管理办法》回答”);无关材料根本不给(按问题类型路由到相关制度子集);材料规模再大,就分块按需取用——RAG,下一课专讲。

塞材料之前先自问三句:关键那条材料在第几位?它前后夹着多少无关内容?万一答错,我能不能查出它到底看了哪一版、哪一条?三句都答不上,案卷就还没备完。

2. 摘要会丢例外条款:压缩必须保留回查锚点

多轮任务里常见“把两百页合同压成一页摘要再喂模型”。方向没错——省窗口、降干扰,但要想清楚压缩丢了什么:摘要保主干,丢的往往正是“除……外”这种例外——主干(支付比例 80%)人人都记得,例外(“未经监理确认的变更部位不计入当月已完工程量”)只有原文里有,而建工争议恰恰多发生在例外条款上。

虚构例子:摘要写“进度款按月支付已完工程量的 80%”,模型据此回答“所有已完工程量都按 80% 支付”;原合同里那句“未经监理确认的变更部位不计入”被压缩掉了,这个回答直接错,且错得有理有据——依据就是那份摘要。实务上认例外条款有个笨办法:盯信号词——“除……外”“除非”“经……确认后方”“另有约定的从其约定”,这些词后面的半句,就是压缩时最不能丢的半句。

对策三条:压缩必须保留原件可回查的锚点(条款号、页码、版本号随摘要走);关键例外条款显式保留、不进压缩;流程上用摘要做初筛、拿锚点回原文做终答(RAG 的思路,下一课展开)。一句话:摘要管“快速找到”,原文管“最终作数”——没有锚点的摘要,两个都管不了。

3. 记忆会过期:外部记忆不是“学会了”

先讲清“记忆”在 AI 应用里是什么:不是模型学会了你的项目,是系统把上次的结论存起来、这次再读进去。存的时候是数据,读进去就成了上下文。好处是跨会话延续;风险是信息会过期——制度改版、人员变动、结论被推翻之后,旧记忆就从资产变成污染源。

虚构例子:上半年 AI 助手的记忆里存着“分包审批两级、经办人是老周”;下半年制度改成三级、老周调岗。新员工问审批流程,系统把旧记忆当作“已确认结论”读入,模型据旧记忆作答——答得流利、引得具体、错得踏实。对策:记忆要带时间戳和版本,过期要失效——每条记忆存“记录时间+依据文件与版本”,依据文件一改版,相关记忆自动降级为“待验证”。宁可重查一次,不引用过期口径。

一条合格的记忆条目长这样(虚构示例):【结论】分包审批实行三级【依据】《分包管理办法》2025 版·第 8 条【记录于】2026 年 3 月【状态】现行有效。制度一改版,状态先降为“待验证”,强制回原文复核后才能重新启用——记忆不是结论的保险箱,是结论的快递单:件到了要验收,验收看单号(版本)。

4. 历史对话是消耗品:占窗口、涨费用、稀释注意力

先补一个机制:模型本身并不“记得”你——每次请求对它都是一次全新的推理。你看到的“连续对话”,是产品把之前的记录每一轮原样拼回上下文造出来的。所以第 1 阶段第 1 课算过的账在这里兑现:历史越长,每轮输入越多、越贵;同时注意力被稀释,模型可能抱着前十轮的旧口径,忽略你最新一轮的更正。历史是消耗品,不是资产:它的价值随轮次递减。

算一笔具体的账(数字为演示口径,计费以当时文档为准):制度汇编约 2 万 token 常驻,20 轮历史约 3 万 token,每轮问答把这 5 万 token 原样重发——20 轮下来累计输入约 100 万 token,其中你真正“问”的内容可能不到 5 千。账单的大头不是答案,是历史的重复搬运。这也解释了“总结后新开”为什么省钱:把 3 万 token 的历史压成 300 token 的“已确认结论”,之后每一轮都按新体量计价。

但第 2 小节刚说过:总结同样会丢细节,丢的可能正是三天后要用到的那个数字。所以压缩不是唯一动作,配套的是把已确认结论及时落库(结构化保存成字段,见第 2 课),对话里只留必要的过程;一个阶段做完就新开对话,带着结论文档重启。判断标准很简单:这条信息后面还要用吗?要用的进台账、进结论库,别只活在对话里。

5. 工具结果也是上下文:不标来源就分不清新旧

能调用工具的 AI 应用里,检索回来的制度片段、程序算出的数字、台账查回的记录,拼进上下文之后,和“你随口说的”在模型眼里没有标签区分。虚构例子:你聊天时随口说“预付款好像是 25%”,工具查回“合同约定 20%”——两条都在上下文里,模型引用哪条全凭位置和习惯,可能把你的口误当依据写进报告。

对策:工具结果进入上下文时标注来源与时间——“【检索结果|分包管理办法·现行版|第 12 条】……”、“【台账查询|更新于本月初】……”,并在提示词里写明“以标注来源的材料为准,用户口述仅作线索”。这不是格式洁癖:来源标注就是上下文里的“签证单”——没有它,事后分不清哪个数字是查出来的、哪个是聊出来的。

实战演练:制度问答答错的完整诊断与修复

场景(虚构):青柏项目员工问内嵌 AI 助手:“分包需要哪几级审批?“助手答:“分包审批需总包合约部与项目经理两级审批。”——答案是错的:现行《分包管理办法》(2025 版,虚构示例)已是三级审批。走一遍完整的诊断与修复。

第 1 步:固定证据。把问题原文、完整回答、当时的上下文清单(给模型装了哪些材料、什么顺序)三样原样存档。修复前不删任何东西——没有证据,复盘只会变成“模型不行”的互相点头。

第 2 步:定位错在案卷哪一层。按顺序排查——先查案卷,再怀疑模型:

  • 查材料:调出当时的制度库挂载记录,发现《分包管理办法》2019 版(两级审批)和 2025 版(三级审批)同时挂载,旧版排在前面;
  • 查组织:系统把全部 86 项制度一次性塞入上下文,没按问题类型筛选,材料头部也没有版本标识帮模型分辨新旧;
  • 查指令:提示词只写了“根据公司制度回答”,没要求附条文号和版本——答错了也无从发现;
  • 查历史:本次是新会话,历史无污染(排除一个嫌疑)。

结论:不是模型“记错”,是案卷里同时躺着两个版本的答案,旧版更靠前、又没有任何标识帮它分辨。换更强的模型,等于给审查员换个资历更老的审查员——案卷里还是两张打架的图纸。

第 3 步:修复(三条,按优先级)。版本治理:制度库只挂现行版,2019 版归档进历史库、默认不进上下文;每份材料头部带“文件名+版本号+生效日期”。②信息组织:86 项制度按问题类型路由(分包类问题先取分包相关制度),关键条文放开头;规模再大就升级为分块检索(下一课 RAG)。③指令补强:提示词加两条——“仅依据标注为现行版的材料回答”、“回答必须附条文号与版本号,找不到依据就答’现行制度中未找到’,不得凭印象作答”。

第 4 步:回归验证。同一道题复测:助手答“依据《分包管理办法》(2025 版,虚构示例),分包实行三级审批”,附了条文号。再测三道邻题:旧版有、新版已删的条款;新旧表述微调的条款;制度没有规定的情形。第三道尤其重要——合格回答是“现行制度未规定”,而不是从旧版里捞一个答案。防的就是修复本身按下葫芦浮起瓢。

第 5 步:沉淀成制度。把修复固化为三条管理动作:材料入库必须登记版本与生效日期,旧版即时归档;AI 引用一律带条文号+版本;每月抽检问答记录的引用真实性。修复的价值不在这一道题,在于让下一道题不再错。

附:答错事故排查五问(可复用清单,按此顺序查)

  1. 当时给模型装了哪些材料?各是什么版本?
  2. 关键材料在第几位?前后夹着多少无关内容?
  3. 提示词有没有要求附依据(条文号+版本号)?
  4. 历史和外部记忆里有没有过期口径?
  5. 回答引用的每一条,能回原文翻到吗?

五问走完还定位不到,才轮到怀疑模型本身——而实务里,八成的事故在前两问就现形了。

建工案例:制度问答为什么答错

青柏项目(虚构)员工问 AI:“分包需要哪几级审批?“系统把公司全部 86 项制度一次性塞入上下文。模型答:按旧版《分包管理办法》答了两级审批——现行版其实是三级。

诊断与修复的完整过程见上文实战演练,根因是案卷里同时躺着 2019 版和 2025 版,且旧版排得更靠前、无版本标识。这类问题在建工数字化里有个熟悉的影子:施工图出了新版本,现场还在按旧版放线——没人会说“换个更熟练的放线员”能解决,要靠图纸版本管理和交底记录。同理,版本污染的解药是治理,不是算力。这是上下文工程问题,换更强的模型解决不了版本污染。

供应商话术拆解

话术:“我们的助手已接入贵公司全部制度,问什么都懂。”

拆解四问,以及合格回答应该长什么样

  1. “全部接入”是怎么接的?——全量塞入,还是按问题检索?合格回答能说清组织方式(路由、检索、分块),并知道全量塞入的代价(窗口占用、中部信息利用打折、无关干扰);
  2. 制度改版怎么生效?——旧版会不会还留在上下文里?合格回答有版本机制:现行版唯一挂载、旧版归档、材料带生效日期;“我们定期同步”没有回答“同步期间新旧并存怎么办”;
  3. 回答带不带引用?——条文号+版本号是核验锚点,没有引用的“懂了”无法审计;
  4. 跨会话的“记忆”怎么管?——记了什么、时效多久、制度改版后旧记忆是否失效。合格回答能举出记忆过期导致答错的例子和防线——说得出口的边界,才是真做过的边界。

合格回答的共同样子:主动讲组织方式、讲版本机制、讲引用格式、讲记忆时效——四条都是在承认“接得多不等于答得对”。承认这一点,恰恰是接得好的前提。

常见问答

Q1:上下文工程和提示工程到底什么关系? 包含关系:提示词是上下文里的“指令”部分;上下文工程管全部五样——指令、资料、历史、工具结果、外部记忆。提示词写得再好,喂错材料照样答错。上一课练的是写指令,这一课练的是备案卷。

Q2:模型窗口越来越大,是不是迟早可以全塞进去? 塞得下不等于用得好(lost in the middle),也不等于划得来(全量输入按 token 计费,历史每轮重发,见第 1 阶段第 1 课)。窗口大小只是选型变量之一。正确方向是按需组织:该路由的路由,该检索的检索(下一课)。

Q3:多轮对话什么时候该总结后新开? 三个信号出现其一就该动:模型开始重复或翻旧账(历史稀释注意力);每轮响应明显变慢变贵(历史重发);任务进入新阶段(前阶段结论已落库)。新开之前,把“已确认结论”结构化存下来带走。

Q4:产品的“记忆功能”是模型记住我了吗? 不是。模型权重没变,是产品把信息存在对话之外、需要时再读入。它有用,但会过期(制度改版、人员变动、结论推翻),要把它当“可能过期的笔记”,不是“培训成果”。

Q5:给材料标版本号、时间戳,真有那么重要? 版本污染是制度问答答错的第一大案源(见建工案例)。标注的成本是每份材料一行字;不标注的代价是答错之后无从诊断——连“它引用的是哪一版”都查不出来。

Q6:摘要交给模型自己写,行吗? 行,但要按纪律来:摘要必须保留回查锚点(条款号、页码、版本),关键例外条款显式保留;摘要只做初筛,终答回原文。无锚点的摘要不要入库——它丢掉了什么,你永远不知道。

Q7:工具查回来的结果,模型还会用错吗? 会。查回的结果如果不标来源,就和聊天里的口述混在一起,模型分不清新旧轻重;标注来源与时间(“【检索结果|现行版|第 12 条】”),加提示词声明“以标注来源的材料为准”,才能把“查到的”和“聊到的”分开。

Q8:我个人用聊天 AI 查制度,也要搞这么复杂吗? 不用全套,但三个动作随手能做:一次只贴和问题直接相关的那份制度,别把整个汇编丢进去;贴的时候顺手标一行“这是 2025 版、现行有效”;模型答完追问一句“依据第几条”——答不上条号的结论先别用。轻量版的上下文工程,就是案卷意识:你给它什么卷,它就审什么案。

自测

把公司全部制度一次性塞进上下文,模型仍答错。除了“分块检索”外,给出两个改进办法。

参考要点(先自己作答,再展开对照)
  • 改进一:版本治理——只允许现行版制度进入上下文,材料统一标注版本号与生效日期,历史版归档隔离。推理:答错的根源往往不是“模型没看到答案”,而是案卷里同时存在新旧两个口径且无标识——模型按位置和习惯取了旧版。这不是能力问题,换更强的模型不解决,只能靠治理。
  • 改进二:信息组织——把与问题直接相关的现行条文放在显要位置、在指令中显式点名依据文件,减少无关制度干扰;并要求回答附条文号与版本,便于事后回查和审计。
  • 其他合理答案:按问题类型路由到相关制度子集;关键结论结构化落库,不只在对话里流转;给外部记忆加时间戳,定期清理过期记忆。

概念卡片

名词 一句话定义
上下文工程 持续组织每一步所需的指令、资料、历史和工具结果
上下文窗口 一次能装下的 token 上限;装得下不等于用得好
lost in the middle 模型对长文本中间位置信息利用不足的现象
回查锚点 摘要随带的条款号/页码/版本号,保证压缩后仍能回原文核对
持久记忆 保存在上下文之外、可再次读入的信息,不是改模型权重
版本污染 过期资料混入上下文导致引用旧口径,靠治理而非换模型解决

延伸阅读

← 课程目录