当前显示静态阅读内容。互动组件准备就绪后会显示操作控件;正文、目录链接与折叠阅读可直接使用。
把常听到的 AI 名词,连成一幅可以理解的图
你可以请 AI 解释一段难懂的材料、比较两份报告、起草分析说明,也可以让具备工具的系统查询资料、运行计算并生成文件。本书从这些日常工作出发,解释它为什么能做、怎样做,以及结果需要怎样核对。
聊天机器人(chatbot)让我们通过对话提出问题。大模型负责理解输入、生成内容;智能体(Agent)则把模型与工具组织起来,让系统根据结果继续采取行动。你可以把它理解为一位有工具可用的助手,实际表现取决于任务、资料和运行环境。
先认识它能参与的工作
拿一份已经获准用于所选工具的公开年报,可以先请它解释术语、找出两期披露差异,或者把长段说明整理成带页码的摘要。提供明确公式和口径后,具备计算工具的系统还能复算数据并生成对照表。调查异常原因时,它可以整理候选解释和证据缺口,供同事继续判断。
使用工作资料前,先确认数据与工具的适用范围 先按所在机构要求确认数据分级、获批平台与账号、允许用途,以及输入和输出的留存规则。内部报表、客户信息、交易与头寸等资料,仅在获准范围内使用;未经批准,不向外部 AI 工具粘贴或上传。练习可选公开材料或虚构数据;脱敏资料也需符合机构规定。文件上传、工具连接、日志和记忆都可能留下数据,应一起确认。
正式口径认定、限额调整、交易执行和对外发布由相应岗位按授权流程负责。AI 可以参与准备材料与形成草稿,采纳时仍要核对依据和结果。读完全书后,回顾中的任务交接表 会把这些条件具体展开。
正文从日常使用经验讲起,逐步引入技术概念。业务微案例借用资产负债管理、资金与风险工作中的熟悉情境,涉及计算时会写出所用数据和算式。读完应能解释使用中遇到的现象,并判断一条新产品消息究竟改变了哪一层。
选择适合自己的阅读深度
只读主线
主线 + 插曲
完整阅读
默认采用“主线 + 插曲”。正文解释概念之间的关系;插曲补充直觉与历史节点;“深入一格”提供机制细节。选择阅读模式可统一展开或收起选读层,也可以单独点击每个折叠标题。分词示例由真实分词器预先计算;其他交互用教学数据模拟关系与过程,不代表某款模型的实时输出或性能测试。
只用过 chatbot: 从第一章顺序读,保留插曲,先用例子建立直觉;陌生缩写可到附录搜索。
拥有 Agent 使用经验: 快速读第一章,重点看第二、三章,理解资料遗漏、任务中断、反复尝试与结果核对发生在哪里。
已有技术基础: 展开深入阅读,关注相近概念的边界,并通过章末自测检查是否能向非技术同事解释。
历史线索从必要的前史延伸到 2023—2026 年;附录时间轴便于回看,来源表列出论文与官方材料。本书核验日期为 2026 年 9 月 18 日,历史版本与今天的产品行为分开理解。
从第一章开始:为什么预测下一 token 能形成复杂能力 →
第一章 大模型的能力:预测下一个 token
它能改写邮件、解释报表、编写程序,也可能一本正经地写出不存在的依据。理解这些表现,可以从一个简单动作开始:根据已有内容,预测下一个 token。但要解释能力从哪里来,还需要看看这个动作背后的网络、训练和计算。
1.1 一次回答,是怎样写出来的
打开聊天窗口,输入“请解释净息差”,屏幕上很快出现一段回答。对模型而言,输入首先要经过分词器(tokenizer),变成一串 token。token 是模型处理文本的基本单位,可能是一个字、一个词、一部分单词,也可能是标点或空格。每种 token 对应词表里的一个编号;它与人习惯的“一个字”“一个词”没有固定换算关系。同一段中文使用不同分词器,token 数也可能不同。
模型接收这些编号后,计算词表中各个候选 token 接在后面的概率。系统选出一个,把它接回已有序列,再计算下一步。这个反复“用已有内容生成后续内容”的过程叫自回归生成 。直到产生结束标记、用完输出预算,或遇到其他停止条件,一次回答才告一段落。这里讲的是常见文本生成路径;图片、音频等输入还会经过各自的编码处理。
模型估计的是:在当前输入和已学规律下,什么内容适合接着出现。为了接好一段代码,它需要利用变量关系;为了完成证明,需要处理前提与步骤;延续人物对话时,还要把握角色和语境。长期训练会形成支持这些任务的能力,而生成时仍以 token 为单位推进。候选的概率描述生成倾向;一句话是否符合事实,还需要证据来判断。
选取候选时,系统可以取最高概率项,也可以按分布采样。采样给不同候选保留机会,因此相同问题可能产生不同措辞。温度(temperature)通常用来调节分布的集中程度:降低温度往往使选择更集中,提高温度往往让更多候选有机会出现。调低温度适合需要较稳定表达的任务,但事实准确性还取决于模型能力和资料。即使总选最高概率候选,也可能反复得到同一个错误答案。
Top-k 与 top-p:采样前保留哪些候选 温度调节分布形状,top-k 与 top-p 则可以进一步筛选候选。假设五个候选 token 的概率已按高低排好,分别为 0.40、0.30、0.15、0.10、0.05。Top-k 保留概率最高的 k 个;若 k=2,就只在前两个候选中采样,将它们重新归一化为约 0.571 与 0.429。
Top-p 从高到低累加概率,保留累计达到设定门槛的最小候选集合;若 p=0.80,前两个合计只有 0.70,因此还要加入第三个,累计 0.85,再在这三个中按归一化后的概率采样。Top-k 控制候选数量,top-p 让数量随当前分布变化。不同服务对组合顺序和可用参数有各自实现;这些设置调整生成选择,事实核验仍要依靠资料。数值为教学设定。[12]
一个小例子|为什么修改开头会改变整篇回答 让模型“介绍存款定价”,与让它“向刚入职的同事介绍存款定价”,产生的解释深度可能不同。读者身份改变了生成条件,模型随后选出的词又继续影响下一步。从第一句话到最后一个句号,回答都在这个过程中逐步形成。
2020 年:GPT-3 让“在问题里给例子”受到关注 GPT-3 论文于 2020 年 5 月公开,研究了大规模自回归语言模型的少样本能力:把任务说明与少量示例写在输入中,不为每个任务另行更新权重,模型也能完成多种任务。它让“通用模型 + 当前输入”的用法获得广泛关注。这是理解后来的提示词热潮的重要背景;GPT-3 的发布早于近三年的 Agent 热潮。[2]
例如,连续给出两组“原句—摘要”,模型就可能按照相似方式处理第三组。这些示例在当前请求中为生成提供条件。以后再用到它们时,需要系统保存并再次提供;第二章会继续解释。
1.2 Transformer:把前文变成可计算的关系
Transformer 是一类神经网络结构。它接收 token 序列,逐层计算其中的信息关系,再给下一 token 的候选打分。理解这条计算链,可以先看每一步处理的对象:起初是词表编号,进入网络后是一组组向量,最后才变成候选概率。
第一步是嵌入(embedding) 。模型按 token 编号,从嵌入表中取出对应向量。向量就是一列数字,例如示例中的 [0.2, −0.4, 0.7];真实模型的向量通常长得多。嵌入表本身属于学习到的参数,同一个 token 进入网络时有一个起始表示。随后各层会根据语境改变它的表示,因此英文 bank 在“bank loan(银行贷款)”与“river bank(河岸)”里可以形成不同的上下文表示。
模型还需要知道各片段的相对或绝对位置。把“客户向银行付款”改成“银行向客户付款”,相同词语表达了不同方向。位置信息参与网络计算,帮助模型处理这种差别;具体怎样加入,随架构而异。
① 文本 → token ID 分词器把前文变成编号序列;位置编号随序列传入。
② 编号 → 起始向量 查嵌入表,为每个 token 取出可计算的表示。
③ 注意力 → 汇集前文 当前位置按匹配权重结合可见位置的信息;位置信息参与关系计算。
④ FFN → 变换表示 在各位置上进行学习到的非线性变换;注意力与 FFN 随多层网络反复处理。
⑤ 最后位置 → 候选分布 输出层给词表候选打分,转成概率,再选择下一 token。
图 1-1 常见自回归 Transformer 的计算关系。箭头方向由编号表示;新增 token 会接回序列继续生成。图中省略残差与归一化等结构,向量数字为教学示意。
注意力(attention) 负责跨位置结合信息。读到“存款增加,其成本也上升”时,对“其”的解释需要借助前文。网络让当前位置与可见位置计算匹配分数,再按权重汇集信息。不同层、不同注意力头可以形成不同的组合;模型能否最终处理好指代,取决于整个网络学到的表示。
与之配合的前馈网络(FFN) 在每个位置上继续变换向量。可以粗略理解为:注意力让不同位置交换信息,FFN 对交换后的表示做进一步加工。经过多层处理,最后位置的向量包含了可用于预测的上下文信息。输出层给词表中的候选各打一个分数,再把这些分数转成总和为 1 的概率。1.1 节讨论的采样从这里接手。
2017 年《Attention Is All You Need》提出 Transformer,原论文面向机器翻译,采用编码器—解码器结构。后来的许多生成式 LLM 使用以解码器为主的变体。图 1-1 画的是后者的简化生成路径,保留了注意力、FFN 与输出预测的计算关系。[1]
候选分数、Q/K/V 与注意力计算量 输出层得到的原始候选分数称为 logits ,数值可以为负,也无需加起来等于 1。Softmax 将分数转成总和为 1 的概率:先对各分数取指数,再除以所有指数值之和。实际计算会做数值稳定处理。温度通常参与这一步的分数缩放,随后才可能进行 top-k、top-p 等候选筛选。
注意力内部也要把匹配分数转成权重。每层把表示分别变换为 query(Q)、key(K)和 value(V)。当前位置的 Q 与可见位置的 K 做匹配,经缩放和 softmax 得到权重,再汇集 V。假设两个位置的权重为 0.75 和 0.25,V 分别为 [2, 0] 与 [0, 4],结果就是 0.75 × [2, 0] + 0.25 × [0, 4] = [1.5, 1]。这个小算例只说明运算关系,数字由编者设定。
多头注意力并行进行多组这样的计算,再组合结果。残差连接保留信息传递通路,归一化帮助稳定计算;因果遮罩限定每个位置只能利用允许看到的前文。Q、K、V 都是网络中的数值表示,一般无法逐项翻译成人能直接阅读的语义。
计算量还与参与匹配的位置数有关。对标准全注意力 ,设序列长度为 n、表示维度为 d,处理整段输入时,位置间的匹配与加权汇集通常有 O(n²d) 量级的计算;因果遮罩使可见位置约呈三角形,总体仍是平方量级。固定维度时,输入长度翻倍,这部分位置配对约增至四倍。[1]
有 KV Cache 的逐 token 解码则只为新位置形成查询,再与已有 n 个位置的状态交互,这部分每步约为 O(nd);历史 KV 也随保留的位置增长。这里分别说的是整段输入和一个解码步骤的注意力部分,实际整次运行还包含投影、FFN、数据搬运等工作。稀疏、滑动窗口等注意力形式另有计算关系。第一章后面的 Prefill、Decode 和 KV Cache 会把这些计算与用户等待的过程接起来。[4]
1.3 能力来自训练:pretrain 与 post-train
模型的参数或权重 包括嵌入表、注意力中的变换矩阵、FFN 和输出层等数值。一次训练更新通常先用当前权重计算输出,再将结果与训练目标比较,最后依据差距调整参数。训练程序会把这种差距表示为数值,通常称为“损失”。经过许多轮更新,模型逐渐提高在训练任务上的表现。
模型在许多批次的数据上反复进行这些更新。某一条样本对数值的影响往往很小,积累起来却会改变它对词语、概念和解题方式的处理。训练后的权重可以保存为一个新版本,供后续请求使用。普通对话则通常拿已有权重计算;用户提供的新材料首先改变的是本次输入。
预训练:从文本本身取得训练目标
预训练(pretrain) 利用大规模数据学习广泛规律。对常见自回归语言模型,文本本身就能提供下一 token 的目标:取一段内容,把每个位置的前文作为条件,原文紧接着出现的 token 就是该位置的训练标签。模型为真实后续 token 分配的概率越低,对应的预测损失通常越大。这个做法让大量普通文本可以用于训练,无需人工先为每句话编一道问答题。[9]
用同一个小例子来看:训练资料里有“余额从 100 增至 108,增长率为 8%”。在读到答案之前,模型需要预测后续片段;训练程序将预测与原文的真实 token 比较,并更新参数。真实切分可能把数字和符号拆成多个 token。大量类似的金融说明、数学推导和程序中都存在可重复的关系,模型在预测任务中逐渐学到这些关系的表示。与此同时,资料中的错误、偏差和遗漏也会影响学习结果。
后训练:进一步学习怎样响应任务
后训练(post-train) 是在已有模型基础上继续塑造能力和行为的统称。开发者可能希望模型更好地遵循用户要求、给出清楚解释、使用工具或处理多步问题,因此会改变训练数据、目标与反馈方式。SFT、偏好优化和 RL 都可以参与后训练;它们可分阶段组合,也可交替使用,具体路线取决于模型目标。
监督微调(Supervised Fine-Tuning,SFT) 提供成对的任务与示范回答。延续刚才的问题,输入是“余额从 100 增至 108,增长率多少?请列出公式”,示范回答是“(108 − 100) ÷ 100 × 100% = 8%”。训练时通常先给模型问题和示范回答已经展开的部分,让它预测接下来应出现什么,再根据与示范的差距调整参数。这相当于把“怎样完成要求”也放进了学习材料:哪些数字应进入公式、基数是什么、用户要公式时应如何表达。
SFT 的结果是,模型在类似输入下更倾向于生成与示范相符的响应。它可以学习风格,也可以学习解题和工具使用模式;质量取决于示范本身、样本覆盖和优化过程。只有一道标准答案,覆盖不了今后所有条件变化。
预训练:原文提供标签 材料:“余额从 100 增至 108,增长率为 8%。” 信号:预测与原文后续 token 的差距。 更新:调整参数,更好地建模这类文本关系。
SFT:示范提供目标回答 输入:“增长率多少?请列公式。” 信号:预测与示范公式、答案的差距。 更新:调整参数,学习按要求完成任务。
偏好优化:比较提供方向 同一问题配多个回答。 信号:评审认为哪份更好。 更新:提高偏好回答相对于较差回答的倾向。
RL:尝试结果获得奖励 模型生成候选解答。 信号:答案检查、测试或评判给出的奖励。 更新:提高训练分布上的预期奖励。
图 1-2 同一道题可以出现在不同训练方式中,区别在于数据组织和学习信号。这是方法对照,四栏并非每个模型必经的流水线,偏好优化也可与 RL 结合;示例为本书编写。
偏好优化 从比较中取得方向。如果同一道题有“8%”和“按期初余额计算,(108 − 100) ÷ 100 = 8%”两份回答,评审可以在用户明确要求公式时选择后者。偏好数据描述的是在特定要求下,哪份回答更合适。利用这些数据的一种路线是训练奖励模型,再用于强化学习;还有直接利用偏好对优化模型的方法。这样得到的信号带有评价者与评价标准的选择。[10]
强化学习(Reinforcement Learning,RL) 让模型根据当前策略生成尝试,再利用奖励改进策略。对于这个算术题,可以由程序核对答案;对于代码,可以运行测试;对于开放写作,也可以由人或评判模型给出信号。优化算法根据这些反馈调整参数,使获得较高奖励的行为在后续训练样本中更有机会出现。当这类强化学习利用人类反馈时,常称为基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,RLHF) 。人类可以比较回答,再由奖励模型把这些判断用于更多训练样本;最终的参数更新仍由训练程序完成。
奖励设计会决定优化往哪里走。如果只核对答案中出现的数字,“8%”与“8 个百分点”可能被粗糙的检查器同样放过;如果检查数值、单位和解释,信号就更接近这道题的要求。下面的模拟可以切换评价标准,观察同一批候选的得分变化。真实 RL 还要把奖励转成参数更新,过程远比这个小例子复杂。
2022 年 InstructGPT 展示了一条具体路线:收集人工示范进行 SFT,再收集回答排序,训练奖励模型,并据此做强化学习。论文帮助解释了对话助手为什么需要专门学习怎样响应用户意图。今天的后训练可以使用不同的数据来源和优化方法,SFT 与 RL 的先后顺序也随方案而变。[3]
训练知识的时效同样取决于数据与更新。参数中的信息可能来自预训练,也可能在后续训练中被补充或改变;标称“知识截止日期”只是理解覆盖范围的参考。产品若临时检索了最新网页,也能据此回答近期问题。要判断新知识从哪里来,可以分别查看模型版本和这次请求使用的资料。
损失、反向传播与梯度:参数怎样调整 对下一 token 预测,一种常见损失是正确 token 概率的负对数。若模型给实际后续 token 的概率为 0.1,该位置损失约为 2.303;概率升到 0.8 时,损失约为 0.223。提高正确 token 的概率,会降低这个位置的损失。训练通常汇总许多位置和样本,而非只看一个答案。
反向传播 按照网络的计算关系,求出损失对各参数的变化率,即梯度 。优化算法据此及学习率等设置更新参数;不同算法还会综合历史更新信息。梯度描述的是当前目标下的局部变化方向,一次更新能否改善新任务,还需要独立测试。RL 的奖励也要通过相应目标和优化算法影响参数,它不会直接给每个 token 打上永久的“好”或“坏”标签。
直接偏好优化(Direct Preference Optimization,DPO) 使用同一问题下较受偏好的回答与较差回答配对,直接优化模型对两者的相对倾向。它提供了利用偏好数据的另一条训练路线。[10]
训练时的示范,与使用时的示例,各留下什么 在 SFT 中,训练程序把示范用于计算损失,并经优化更新参数;更新后的权重可以随模型版本保留。在上下文学习中,系统把示例送入当前请求,模型利用既有权重处理它们,变化首先发生在本次计算条件上。
例如,把内部指标缩写表放进对话,能让模型按这些定义解释当前报表。后续会话需要时,可以由系统再次取回这张表;若另行训练模型,则可能把某些处理习惯保留在权重中。需要频繁更新、精确溯源的事实通常更适合放在外部资料中,训练则适合围绕希望改变的能力或行为设计。二者可以配合。
1.4 两种“推理”:运行模型,与解决问题
中文资料常把 model inference 和 reasoning 都译作“推理”,它们却指向不同层次。model inference 指利用训练好的模型,对输入执行计算并得到输出;reasoning 指从条件出发进行推导、比较、规划或问题求解。让模型续写“您好”,也在进行 inference,却未必涉及复杂 reasoning。推理模型同样需要通过 inference 才能运行。
以常见的自回归 Transformer 为例,一次运行通常包括两个阶段。Prefill(预填充) 处理已知输入,建立内部状态,并利用最后位置的输出预测第一个新 token。因为输入内容已经存在,多个位置可以并行计算,同时各位置仍受因果遮罩限定。Decode(解码) 则不断生成新 token。后一个 token 依赖前一个结果,常规生成路径因此包含连续的步骤。
这解释了两种不同的等待体验:上传很长的材料后,要等一会儿才出现第一个字;回答开始后,又以一定速度逐步输出。前者常与输入处理、排队及其他准备工作有关,后者与生成过程有关。界面上的“思考中”还可能包含检索、工具调用或产品展示策略,要分辨时间花在哪里,需要查看对应的执行记录。
同一任务,两种成本 给模型一份长报告,只问一句结论,可能主要消耗输入处理;给它很短的问题,要求写一份长解释,则可能主要消耗生成步骤。输入长度、输出长度和服务负载都会影响耗时,需要分别观察。
1.5 为什么运行也需要算力:GPU 与 KV Cache
每次回答都要实际运行前面那条网络计算链。以向量和矩阵相乘为例,一个输出数值可能要把许多输入分别乘以权重,再相加;一个输出向量包含大量这样的数值,网络又有许多层。GPU 拥有大量并行计算单元,适合同时做这些重复的数值运算。它的高带宽显存还可以快速提供计算所需的数据,因此常用于大规模模型服务。CPU 和其他加速器也能完成这些计算,适合哪种硬件取决于模型规模和服务要求。
一个容量例子能让数字具体些:70 亿个参数,每个按 16 位即 2 字节保存,仅权重就约需 140 亿字节,也就是十进制的 14 GB。运行时还要留空间给中间结果、KV Cache 和其他开销。较低精度存储可以减少一部分占用;长输入或同时服务更多请求,则会带来新的内存需求。
① 显存放得下 保存权重、历史 KV 与中间状态。 容量决定一次能够容纳多少数据。
② 数据搬得快 把本层所需数据送到计算单元。 带宽决定单位时间能供给多少数据。
③ 运算做得快 并行执行矩阵乘法、加权汇集等运算。 算力决定单位时间能完成多少计算。
④ 写回并继续 保存新状态,进入下一层;选出下一 token 后,继续下一轮生成。
图 1-3 运行模型同时需要存储、搬运和计算。图示是数据流关系,真实硬件会让部分搬运与计算重叠;快慢由当时的主要瓶颈决定。
算力、显存容量和显存带宽 分别回答“算得多快”“装得多少”“搬得多快”。Prefill 时,多段已知输入位置可以一起处理,较容易组织成大批矩阵运算;Decode 时,一个请求每轮只产生少量新位置,却仍需访问本轮计算所用的权重和历史状态。在小批量生成中,数据供给速度常常成为瓶颈。合并多个请求可以提高计算利用率,同时也会增加状态占用和调度需求。[4]
KV Cache 在这里起到复用作用。生成新 token 时,需要利用前文的 K、V;已经计算好的历史状态可以保存下来,下一步直接读取,只为新增位置计算新的状态。这样省去了反复计算历史位置的工作。生成依然需要经过各层计算并访问缓存,所以长上下文还会增加读取和存储负担。缓存中保存的是网络中间张量,含义与可供人阅读的事实摘要不同。
下面以 8 个输入 token、8 个输出 token 演示。Prefill 处理输入,预测第一个输出;接着把刚生成的 token 送回网络,预测第二个,如此继续 7 次。完成时已处理的不同位置共 15 个:原输入 8 个,加上用于预测后继输出的前 7 个输出。最后一个刚输出的 token 尚未被送回网络。这也是模拟中缓存位置数为何比输入和输出总数少 1。
复用还可以发生在不同请求之间。若后续请求具有相同前缀,并满足模型版本、缓存匹配和生命周期等实现条件,服务可以复用对应 KV 状态,减少重复的 prefill。前缀缓存(prefix caching) 因此适合反复处理相同说明或长文档的场景。新问题对应的回答仍要继续生成,原有前缀也仍属于逻辑上下文。缓存是否生效、保留多久,由具体服务决定。[5]
权重、记录、记忆与缓存,分别保存什么 模型权重保留训练形成的规律;聊天记录保留曾经说过的内容;长期记忆库保留系统选择存储的信息;KV Cache 保留某个前缀对应的内部计算状态。缓存过期后,可以重新处理原文得到所需状态;聊天记录则要经过系统选择,才会再次进入请求。
在相同数值精度和等价实现下,KV 复用旨在省去重复计算。量化和压缩等近似优化可能另有质量与效率权衡。如果要判断第二次回答为什么更快,需要同时看缓存命中、排队、负载与输入长度;一次计时只能描述结果,还不足以分离这些原因。
1.6 CoT 与 reasoning:中间步骤如何帮助求解
1.3 节的题目直接给出余额 100 和 108,写出增长公式就能回答。现在把题目改成:“余额起初为 100,先增长 20%,再下降 10%,最终余额和相对最初的增幅各是多少?”这次需要先确定每一步的计算基数。直接把 20% 减去 10% 会得到 10%,而第二次变化实际上发生在已经增长的余额上。
① 处理第一次变化 基数 100。 100 × (1 + 20%) = 120。
② 更新基数再计算 本次基数为 120。 120 × (1 − 10%) = 108。
③ 回到题目要求 相对最初 100 的增长率: (108 − 100) ÷ 100 = 8%。
④ 用另一种表达核对 总变化因子为 1.2 × 0.9 = 1.08。 最终余额 108,净增长 8%。
图 1-4 一份可检查的分步解答。120 成为下一步的输入,108 再用于回答最终问题;第四步提供另一条核对关系。这是人工编写的示例解法,呈现的是解题步骤。
思维链(Chain of Thought,CoT) 通常指以一串中间推理步骤组织求解。在生成过程中,已经写出的中间结果会进入后续计算的条件。模型写出 120 后,下一步可以围绕 120 展开;再写出 108 后,就有了计算总增幅的材料。分步过程把一个问题拆成了可继续使用的小结果,也使“第二次到底以什么为基数”这类错误更容易被检查。
2022 年的 CoT 论文研究了在提示中提供带中间步骤的示例,发现这种方法改善了所测试的大模型在算术、常识和符号推理等任务上的表现。上面的例子说明了为什么这类提示可能有用;真实任务能改善多少,还取决于模型与问题。后来推理模型的训练进一步学习求解策略,例如怎样分解问题、回头检查或尝试另一条路线。[6]
测试时计算:把额外计算用在哪里
测试时计算(test-time compute) 指运行模型解决任务时投入的计算。一个方向是沿同一条路线多做几步:分析条件、计算、检查,并在发现问题时修正。另一个方向是生成多个候选解法,再进行选择。仍用上一图的题目:一种解法逐次更新余额,从 100 到 120 再到 108;另一种把两次变化写成因子相乘,1.2 × 0.9 = 1.08。两条路线各自完成求解,比较最终结果可以互相核对。Self-Consistency 研究则进一步探索多条路径的汇总:让模型对同一题独立采样多条推理路径,每条路径得出一个最终答案,出现最多的答案相当于获得最多票数,以此作为汇总结果。候选之间仍可能共享同一个错误,因此票数本身也需要结合任务判断。[11]
还可以把计算用于验证 。对于这个例子,系统能运行算式检查数值;对于程序任务,能运行测试并把失败信息交回模型。一次候选生成、一次外部验证、一次据反馈修订,可以共同组成求解过程。这条路线会在第三章与 Agent 循环接上。额外计算是否值得,要看它增加了多少正确率,以及带来了多少等待与资源消耗。
产品呈现的思考摘要帮助读者了解大致进度,可检查的步骤则帮助判断解答。模型内部还有大量向量计算,其完整因果过程无法从一段自然语言解释直接读出。实际评估应落到条件是否用对、中间结果是否成立、结论是否回答了问题。这道题里,只要把第二次下降的基数误写为 100,语言再流畅也会算错。
2024—2025 年:o1 与 DeepSeek-R1 让推理模型成为公众话题 2024 年 9 月,OpenAI 发布 o1-preview,并报告增加训练与测试时计算对所测推理任务的改善。用户开始更直观地感受到:模型可以在给出回答之前,用较长时间处理一个问题。阅读这类新闻时,成功率、等待时间与计算预算需要一起看。[7]
2025 年 1 月,DeepSeek-R1 公开了推理模型的训练研究,进一步扩大了人们对这条技术路线的关注。两次发布把“模型怎样解难题、为一道题花多少计算”带进日常讨论,也使训练方法与推理成本成为比较产品时常见的词。[8]
R1-Zero、R1 与蒸馏:训练路线上的差别 DeepSeek-R1 论文中的 R1-Zero 从基础模型直接进行强化学习,在这一路线中省去先行 SFT,用来研究强化学习对推理行为的作用。R1 则结合冷启动数据和多阶段训练,改善可读性与任务表现。阅读名称相近的实验时,需要分别看其起点、数据和训练阶段。
论文还研究了蒸馏(distillation) :用较大模型生成的推理样本训练较小模型,将部分求解表现迁移过去。在这个场景中,传递的是可用于学习的示范数据,较小模型仍通过自己的训练过程更新参数。它体现了 SFT 与推理模型研究的一种联系。[8]
把分步求解带回业务问题 “收益率下降,为什么净利息收入仍然增长?”可以先识别价格与规模的变化,再核对数据期间和平均余额,最后判断哪项变化解释了结果。步骤使依据逐渐明确。若资料只有期末余额,就应把缺少平均余额的限制保留下来;计算工具能核对已有算式,资料缺口则需要另外取回证据。
1.7 幻觉怎样出现,又怎样核对
幻觉(hallucination) 指模型生成了看似合理、实际失实或缺少所需依据的内容,例如编出一条条文、错配一个年份,或把资料没有支持的判断写成确定结论。回答的语言形式可以很完整:专业术语、机构名称和引用格式都齐全,问题出在这些文字对应的事实与证据。
这与前面学过的机制相连。预训练的重要任务是根据前文预测原文接下来的 token,由此学到语言模式和大量知识;资料中哪些具体陈述适用于眼前业务,还要靠当前证据判断。当问题要求给出精确答案,而可用信息不足时,模型可能把熟悉的术语、数字形式和解释套路组合成一段流畅内容。一旦未经核实的判断已经写出,后续生成又会以它为条件继续展开,错误便可能延伸到解释和引用中。
虚构案例|一条被补出来的银行报送要求 以下银行、监管材料及要求均为编者虚构,仅用于练习核验。A 银行提供的《监管摘录(虚构)》只有一句相关内容:“每季度提交一份压力测试摘要。”用户要求模型按附件整理报送事项。
假设模型回答:“该摘录要求每日报送流动性明细,并按季度提交压力测试摘要。”它把资料中存在的季度要求,与自行补入的每日要求写在了一起。标题和引用指向的附件确实存在,第一项具体要求却找不到对应原文。
核验时,先把回答拆成两项主张,再逐项回到附件:季度摘要有直接文字支持,可以保留;每日报送在本题资料中没有依据,应从结论中移除,并写明“附件仅列出季度摘要,其他报送要求需要另查材料”。如果任务要回答现实中的完整监管要求,还须取得适用机构、地区和生效时期对应的权威原文;本题的虚构摘录只用于展示这个核验过程。
检索和引用有助于把判断落到材料上。拿到来源后,还要核对所引段落是否确实支持这句话,版本、时间和适用范围是否吻合。检索漏掉修订文件,或模型把正确片段接到错误主张旁,仍会造成失实回答。证据充足时可以明确作答,证据不足时则保留缺口,并据此继续查找。
训练目标怎样影响不确定时的回答 预测训练让模型拟合文本中的统计规律,训练信号来自原文实际出现的内容。稀少事实、互相冲突的资料或难以推断的细节,会使模型在新问题上面临不确定性。模型随后怎样表达这种不确定性,还受后训练和评价方式影响。
例如,若一个测评只给正确答案记 1 分,错误答案与“资料不足”都记 0 分,猜测就可能比保留空缺获得更高期望分数。2025 年《Why Language Models Hallucinate》研究了这类激励与统计学习的关系,说明一些评价方式为何会持续鼓励不确定时作答。该分析提供了理解幻觉的一条机制线索;具体错误仍要结合资料、训练和运行过程诊断。[13]
对应的改进可以发生在不同位置:训练与评测奖励恰当表达不确定性,运行系统补充证据,结果检查逐项核对主张。单纯延长解释,主要增加了生成内容;要提高可信度,需要增加有效证据或能发现错误的检验。
训练目标用于调整模型行为,业务验收检查具体任务是否完成且有依据。 在“余额 100 增至 108”的练习里,答案数字正确是一项训练信号;实际分析还要确认余额口径、期间和单位。沿着“依据—方法—执行—结论”往回看,能把资料缺口、计算错误和生成失实分别定位。
回看本章的例子 “100 增至 108”的题目可以作为预训练文本、SFT 示范或 RL 评测题;实际作答时,它又是一段进入模型的上下文。任务相同,训练与使用过程中发生的计算和更新却不同。这个区分会贯穿后面的知识库、记忆和 Skill。
停下来想一想
模型逐个 token 生成,一份多步解答是怎样形成的?
展开参考答案 每一步都利用网络中训练形成的能力和当前上下文。已生成的中间结果又成为后续输入条件,例如先得到余额 120,再用它计算下一次变化。解答由这一过程持续展开,质量则由具体任务上的结果检验。
降低温度后,模型总是返回同一个错误年份。为什么表达稳定了,事实仍有问题?
展开参考答案 低温度使候选选择更集中,温度只改变采样环节的选择,模型本身没有变。年份是否准确取决于模型和可用证据;补充可靠的日期来源,才能补上这道题缺失的事实依据。
把“100 增至 108”的示范放进聊天,与拿它做 SFT,各改变了什么?
展开参考答案 聊天示范改变本次输入,模型利用已有权重处理它。SFT 将示范回答用于计算损失,并通过优化更新参数;更新后的模型版本可以将行为变化带到后续调用。
为什么一道增长率题的奖励检查,要同时核对“8”和它的单位?
展开参考答案 “8%”表达相对增长率,“8 个百分点”通常表达两个百分比的差。只认数字的奖励可能把两者混同;加入单位检查,才更接近题目所要的计算含义。
让模型只返回“收到”,其中的 inference 与 reasoning 分别怎样理解?
展开参考答案 运行模型、计算输出属于 inference。这项简单响应只需很少的任务推导;reasoning 描述的则是求解问题时的推导与判断。两者需要按层次理解。
同一份长报告第二次请求时命中前缀缓存,省下的是什么?报告此时在哪里?
展开参考答案 省下的是对相同前缀的一部分重复计算。报告仍是本次逻辑上下文的一部分,其相应 KV 状态被复用;新问题和新回答仍需继续计算。
100 先增长 20%、再下降 10%,第二步应以多少为基数?怎样核对最终结果?
展开参考答案 第二步基数是 120,所以下降 12,剩余 108。再用总变化因子 1.2 × 0.9 = 1.08 核对,得到相对最初净增长 8%。中间步骤中明确基数,是这道题的关键。
上面案例的附件只有季度报送要求,回答却补出“每日报送”并引用同一附件。怎样解释这个错误,怎样改正?
展开参考答案 模型把缺少依据的内容与已有要求组合成了流畅回答,属于幻觉。核验应拆开两项主张,逐项对照原文:保留有支持的季度要求,移除无依据的每日要求,并说明材料缺口。引用告诉读者去哪里查,具体段落是否支持结论仍要核对。
每次回答的质量还取决于模型眼前的信息。第二章打开一次请求的上下文 ,看看提示词、知识库和记忆怎样进入模型。
第二章 模型上下文里都有什么:提示词、知识库、记忆和上下文工程
同一个模型,为什么在陌生问题上泛泛而谈,拿到几页资料后却能分析得有模有样?第一章解释了它的能力从哪里来。本章打开一次请求,看看它此刻获得了什么信息,以及这些信息是怎样被选进来的。
2.1 Context 是本次工作材料,context window 是容量边界
上下文(context)是模型生成时可利用的当前输入信息。 在文本对话里,它通常包含指令、历史消息、参考材料,以及系统补充的信息;多模态模型的上下文还可能含图像、音频等表示。你在输入框里刚打出的那句话,往往只是其中一小部分。模型继续生成时,已经生成的 token 也会成为后续生成的条件。
上下文窗口(context window)描述模型能够处理的序列长度上限,通常以 token 计量。 文件可以长期存在硬盘或知识库里,窗口则限制一次运行能使用多少信息。一次请求要为输入和接下来的生成安排预算;具体产品还可能分别限制输入、输出,以及推理 token 的使用方式。查看窗口规格时,需要一起看这些额度怎样分配。
为便于理解,假设模型 A 只有 10,000 token 的总预算,指令和对话历史占 2,000,参考资料占 6,000,那么留给本次继续生成的空间就少了。真实系统会在接近限制时选择拒绝请求、截断、压缩,或只装载部分历史,具体行为取决于实现。聊天页面仍然显示的内容,不一定全部出现在每一次模型调用中。
窗口有限,哪些信息真正进入本次调用
示例任务:解释本季 NIM 变化。示例窗口为 3,200 token ,预留 800 token 给后续生成。材料长度为预设估计值,不是实际分词结果。
查看本次上下文 恢复示例组合
勾选拟放入的材料,再查看组装结果。系统会检查输入与生成预留是否满足窗口预算。
窗口规则与输出上限因模型和接口而异,此处采用输入加生成预算的简化模型。勾选资料不自动证明它正确;材料带有来源与版本标注,也仍需核对是否适用于本次任务。
上下文可以包含任务、规则、选中的知识片段、数据、历史与工具结果。外部知识库不是自动全量进入窗口。应为生成预留预算,并处理新旧版本冲突;超过窗口上限,需要取舍、分步或压缩。压缩后的摘要可能遗失原始条件。
从“粘贴几段话”到“放进一本书” 2023 年 5 月,Anthropic 发布 Claude 的 100K token 上下文窗口,把长文档阅读推到大众视野。从只能分段询问,到尝试让模型一次比较多篇材料,使用体验发生了明显变化。不过,“能放进去”与“能完整理解每个细节”是两项不同能力。长窗口扩展了任务空间,也把资料筛选和组织的问题带到台前。[14]
2.2 拆开一次请求:输入框后面还有什么
设想你问:“结合上次讨论,解释这季度净息差的变化。”在调用模型前,应用可能先找出上次讨论的摘要,再读取报表、选取相关方法说明,最后把这些内容连同你的问题组织成请求。这个组装过程可以叫 context assembly(上下文组装) 。你只输入了一句话,模型实际收到的材料可能有好几页。
一句提问如何变成一次模型请求
系统取回材料 季度报表第 12 页 指标定义第 3 条 上次确认的比较期间
查文件、检索知识、读取状态
组成当前输入 任务要求 相关数据与定义 来源、时间和待核对项
按角色和内容类型组织消息
模型生成 结合当前输入和已有能力,提出解释或继续查询。
下次调用可使用不同材料
示意图。文件内容只有经读取、检索或其他装载过程进入当前输入,才成为这一次的上下文。
可能进入上下文的内容 它主要回答什么问题 这次请求中的例子
系统与应用指令 助手应怎样工作、遵循哪些约束 例如:“引用材料时保留文件名与页码”
当前任务与示例 这次要完成什么,结果长什么样 例如:“先列变化,再解释有证据支持的原因”
历史消息或摘要 之前谈过什么、确认过什么 例如:“用户已确认本次采用环比比较”
检索片段与文件内容 本次问题有哪些可参考的证据 例如:报表中两期收益率及平均余额
工具描述与工具结果 能调用什么,以及刚刚查到了什么 例如:计算工具接受什么参数,以及本次返回的差额
取回的记忆 哪些旧偏好、约定或任务状态与此刻有关 例如:“面向新同事解释缩写”
应用会按任务选择其中的内容。比如只问“净息差是什么意思”,读一段指标定义就够了;要解释某家银行的变化,则还要取回期间一致的数据。回答有问题时,可以沿着材料的路径检查:文件是否读入、相关片段是否选中、摘要是否保留了条件,以及模型如何使用这些内容。这样能区分资料准备出了问题,还是模型理解出了问题。
微案例|少了一句口径说明 报表给出了本季度和上季度的数据,却没有说明一项资产分类发生调整。模型可能把分类迁移解释成经营变化。此时再加“请认真分析”帮助有限;补上分类说明,才改变了它能够据以判断的材料。
2.3 Prompt:把意图变成可执行的输入
提示词(prompt)是引导模型完成任务的输入。 这个词有宽窄两种用法:有人把发给模型的全部输入都叫 prompt,也有人专指其中的任务指令。本书讨论提示工程时,主要指目标、约束、背景、示例与输出要求如何表达;讨论上下文时,则关注这一整套信息以及它的动态变化。
提示词首先要说清楚打算拿模型的回答做什么。“分析这份材料”可能意味着摘要、找问题、做比较或写建议。换成“面向未读过原文的同事,解释两份材料的分歧,并区分事实与推测”,读者、任务和证据要求就具体了。示例还能展示难以用规则说清的风格,这与第一章的上下文学习相连。
一条提示里,各句分别起什么作用 “比较 A、B 两份差旅规定”指定任务;“读者是第一次出差的新同事”交代背景;“按住宿、交通、报销期限列成表格”限定输出;“只使用附件,原文没写的标为未说明”规定资料范围和缺项处理。系统还需要把两份附件实际送入上下文,模型才能完成这项比较。
提示工程与上下文工程紧密相关;按本书的用法,前者是后者的重要组成部分。前者关注怎样表达要求;后者还要决定取哪份文件、加载多少历史、何时调用检索、保留哪些结果。用户把问题写得再清楚,如果系统塞入过时资料或漏掉关键附件,模型仍可能答错。反过来,材料齐全但任务含糊,也容易得到一篇正确却无用的长文。
上下文学习为何不等于微调 在上下文里提供三个“输入—输出”示例,模型可以据此适应第四个问题;这通常称为 in-context learning。常规推理过程中,这些示例改变了模型计算输出的条件,没有执行更新权重的训练步骤。SFT 则用训练样本和优化算法更新参数。二者都可能让表现改善,但改变的位置、成本、持续范围不同。某次对话成功地学会一种格式,不意味着所有新会话都自动继承它。
2.4 Knowledge:参数知识、外部知识与眼前证据
说“模型有知识”时,至少要区分三个位置。参数知识 来自训练,分布在模型权重中,支持语言和概念运用;精确查原文通常要借助外部资料。外部知识 存放在文件、网站、数据库或知识库里,可单独更新。本次证据 则是从外部材料中实际送入当前上下文的内容,模型可以在回答时引用、比较和推断。
制度文件在确认数据分级、所用平台与账号、用途和留存方式均符合机构要求后,才进入上传与处理环节。应用通常会保存文件、提取文字,有的还会建立检索索引。涉及内部资料时,应使用获批环境;未经批准,不将资料传到外部 AI 工具。提问时,系统读取全文或取回相关片段,把它们放入模型当前输入。模型据此解释新制度,更新的是本次回答所用的材料;训练权重是否更新,则取决于是否另行进行了训练。产品所列的知识截止日期,帮助我们估计参数知识的时效。若要核实某条具体规定,仍要查它的原始发布文件、修订日期和适用范围。
三个位置可以协作:参数知识帮助模型理解“净息差”这个概念;外部报表提供特定银行的数字;进入上下文的报表片段提供本次分析依据。若从参数知识中学到的常见说法与当前有效文件冲突,应结合来源、日期和适用范围判断,不能因为模型语气肯定就采纳旧说法。外部文档也可能有错,因此“有引用”提供的是可检查的线索,而非正确性的保证。
2.5 RAG:回答之前,先找相关材料
检索增强生成(Retrieval-Augmented Generation,RAG)把检索得到的外部材料用于生成回答。 2020 年的 RAG 论文研究了参数模型与外部可检索知识结合的方法;今天,这个词还广泛用于“先检索,再把证据交给模型回答”的系统设计。[15]
可以把常见的文档 RAG 分成两段工作。建索引 发生在资料入库或更新时:系统解析 PDF、网页等文件,按段落或章节拆成片段(chunk),保存来源和日期,再建立便于查找的索引。查询 发生在用户提问时:系统检索候选片段,筛选、排序,把选中的内容连同问题交给模型。原文一般仍保存在文件库里,索引负责帮助系统找到它。
RAG 的两段工作:资料更新时建索引,提问时取回证据
资料准备:新增或修订文件时执行
解析与切片 提取正文、表格 按主题拆成片段
保留页码与标题
等待查询 原文、片段和索引以标识关联。
文件修订后同步更新
回答问题:每次查询时执行
用户问题 “为什么存款利率下降?”
形成检索词或查询向量
取回候选 匹配词语、语义 筛选期间与版本
找到可能有用的片段
筛选与重排 比较片段对问题的帮助程度,选出证据。
带上来源与适用条件
放入上下文 问题 + 选中片段 → 模型生成回答
回答可附原文位置
这是常见流程示意。小型资料集也可以直接全文输入;具体系统可调整过滤、检索和排序的顺序。
切片大小会影响后面的每一步。假设一段规定先写“住宿上限为 500 元”,下一句又写“仅适用于 A 类城市”。若两句被拆开,检索只返回第一句,回答就容易漏掉适用范围。若整本手册都算一个片段,每次又会带回大量无关材料。因此,切片常要照顾标题层级、完整条款和表格结构,必要时保留相邻内容。
Embedding:把句子变成可以比较的向量
Embedding(嵌入) 是将信息编码为一组数字。第一章里,token 的向量表示用于模型内部计算;这里通常由嵌入模型把一段文字编码为检索向量。资料片段可以预先编码,提问时再用兼容的查询编码方式生成问题向量,随后比较它们的相似度。Sentence-BERT 等研究说明了怎样训练可用于语义比较的句子表示。[21]
看一个二维的例子。问题“为什么存款利率下降?”用向量 Q = (1, 0) 表示;现行片段 A“资金价格下行”为 (0.95, 0.31),现行片段 B“存款成本率口径”为 (0.8, 0.6);旧版片段 C“存款利率下降与存款成本率”为 (1, 0),片段 D“办公楼租金”为 (−0.6, 0.8)。这些数字由编者手工设置,下一项检索交互也使用同一组候选。
向量检索如何比较“意思相近”:一个手工二维例子
查询与四个候选片段的二维示意向量 查询 Q 与旧版片段 C 坐标均为 (1, 0);现行片段 A 与 Q 方向最接近,其余依次为片段 B、片段 D。旧版 C 虽然相似度最高,仍需按查询的生效时间筛选。
0 维度 1 维度 2
D · 办公楼租金 (−0.6, 0.8)
B · 存款成本率口径 (0.8, 0.6)
A · 资金价格下行 (0.95, 0.31)
Q 与 C 旧版重合:(1, 0) 匹配很高,仍要检查适用版本
同一组向量的窄屏图:Q与旧版C重合,A方向接近,B次之,D较远。具体坐标见正文和下表。 D 租金 B 口径 A 价格 Q / C 旧版 0 维度1 维度2
与查询 Q 比较 归一化后直线距离 余弦相似度 本例中的含义
A:资金价格下行 约 0.314 约 0.951 用词不同,与问题涉及的变化较接近
B:存款成本率口径 约 0.632 0.80 主题相关,可能解释指标定义
C:旧版片段 0 1.00 匹配最高,但版本可能已不适用
D:办公楼租金 约 1.789 −0.60 在本例中与问题相距较远
上述二维坐标、分数和排序均为教学设定,不是真实模型输出。距离在向量归一化(把每个向量缩放到长度为 1)后计算;此时距离越近,余弦相似度越高。真实嵌入通常有许多维度,各维通常没有单独、固定的语义标签。
余弦相似度比较向量的方向。Q 沿着第一维,与 A 的相似度为 0.95 ÷ √(0.95² + 0.31²),约等于 0.951。实际系统使用模型生成的完整向量进行计算。这些向量表示由模型训练得到,因此换嵌入模型、换语言或换任务,都可能改变检索效果。语义接近只说明值得进一步阅读;一句“利率没有下降”也可能与“利率下降”很接近,最终仍需核对具体说法。
关键词、语义、混合检索与重排,各自做什么
问“存款成本率的定义是什么”,原文里的“存款成本率”很有辨识度,关键词检索可以直接找到定义条目。问“资金为什么变便宜了”,相关材料可能写的是“付息成本下行”,语义检索就有机会找回这段用词不同的解释。混合检索把两路候选合并,再按分数或名次等方式排序,以兼顾精确词语和语义关系。[16]
步骤 对“为什么存款利率下降”的作用 仍需处理的事
关键词检索 找到“存款成本率”等明确词语的片段 同义表达可能用词差异较大
语义检索 补充“资金价格下行”等主题相近的片段 主题相近的旧材料也可能排在前面
混合检索 汇合两路结果,保留精确命中与语义补充 仍要判断片段能否回答这次问题
重排 把少量候选与问题进一步比较,让更能回答问题的材料靠前 结果受模型和输入影响,需保留来源核对
条件过滤 按查询需要限定生效时间、适用对象和版本 元数据要准确,历史查询需使用历史范围
重排(reranking) 发生在初步检索之后。一种常见方式是把“问题 + 某个候选片段”一起交给重排模型,逐项评估它对问题有多大帮助。与预先算好片段向量、提问时快速比较相比,这一步能更细地考虑问题和片段之间的关系,计算成本也较高,因而常用于前几十个候选,而非对整个资料库逐条执行。[22]
版本适用性可以单独处理。假设旧版“存款成本率口径”的词语匹配很好,但查询问的是今年现行口径,系统就可以依据生效日期、失效日期和业务范围先缩小候选范围,再检索或排序。若问题改成“比较去年与今年的口径变化”,两版都应保留。过滤解决适用范围,相关性排序解决哪段更有帮助;二者配合才能把合适证据送入上下文。
RAG 的两道关:找得到,也要用得对 检索评价可以用一个明确问题检查:应当用的那段材料,是否出现在候选集和最终选中的片段里?生成评价则检查回答是否受这些材料支持,有没有遗漏条件或引用错位。检索正确却回答错误,需要检查理解和生成;根本没取回证据,则要回到解析、索引和查询。向量数据库、全文搜索、SQL 查询都可以参与 RAG,选哪种方法取决于资料的结构和问题类型。
有时第一轮查回的材料只解决一半问题。例如解释成本变化,还需要补查存款结构。这时谁来决定下一轮查什么?第三章会把检索放进 Agent 的行动循环。
2.6 LLM Wiki:把读过的资料整理成可以继续使用的知识
查到一段资料,可以解决眼前的问题;读过几十份相关材料后,人们往往还希望留下一份整理结果。LLM Wiki 就是让大模型协助维护互相链接的知识页。Karpathy 在 2026 年 4 月发布构想,用原始资料、整理后的 Wiki 和组织约定来描述这种做法。它是一种知识管理实践,具体目录、页面和维护流程可以按任务调整。[17]
用一个虚构的公司资料库来看。2025 年公告说“零售业务包含消费金融”,2026 年公告宣布“消费金融调整为独立报告分部”;两份公告中的统计表也随之变化。只保存两个摘要,读者仍要自己拼出影响。Wiki 可以把这些信息整理到“消费金融”“报告分部”“历史口径变化”三页,每页回答一个相对稳定的问题。
Wiki 如何把两份公告,整理成可以反复阅读的主题关系
原始公告 2025:消费金融归入零售 2026:消费金融独立列报
保留原文、页码和发布日期
《消费金融》 记录业务定义及归属变化,链接对应公告。
链接 →《报告分部》
《报告分部》 列出现行分类,并保留历史分类入口。
反向链接 →《消费金融》
《历史口径变化》 解释哪些期间可直接比较,哪些需要回溯调整。
关联前两页与两份原文
虚构示例。页与页之间的链接帮助查阅关系,原文链接帮助核实事实;这两种链接用途不同。
双向链接可以直接写在相关页面上,也可以由阅读软件根据已有链接显示“哪些页面提到了我”。这样,阅读“消费金融”时能找到分部分类;打开分类页,也能回到涉及的业务。链接连接的是文件和概念,效果取决于页面内容是否准确、关系是否有用。
新公告到来时,维护工作包括核对和修订。若旧页写“消费金融属于零售业务”,应把它改成带时间范围的陈述,并补上调整后的归属;相关比较表也要检查。若两份同期材料相互冲突,则先保留各自出处、注明分歧,继续查找解释。直接用新摘要覆盖旧摘要,可能把历史分析需要的口径一起删掉。
Wiki 与 RAG 可以一起工作:系统先检索主题页,从已有整理了解问题,再沿原文链接核对;也可以直接在原始公告中检索。前者节省重复梳理的工夫,后者更接近证据细节。知识页适合积累,维护时仍需检查日期、引用和关联页。资料集很小时,仅用清楚的目录和原文可能就已经足够。
2.7 Memory:保存过去,选择什么带到现在
记忆(memory)通常指系统保存并在后续使用的交互信息。 应用可以保留会话历史,保存尚未完成的任务进展,也可以把偏好和经验写入跨会话存储。会话级状态同样可以持久保存,供下次打开任务时恢复。保存的范围、写入时机和取回方式由产品实现决定。[18]
记忆如何生效,可以顺着一条具体记录看下去。假设用户在报告任务里说:“以后给新同事写说明时,请把缩写解释一遍。”一个支持长期记忆的系统,可能经历以下过程。这个例子描述可采用的设计,具体产品未必有完整的所有步骤。
阶段 系统保存或使用什么 为什么需要这一步
识别与写入 提取“面向新同事时解释缩写”,记录来自本次明确要求 保留适用对象,避免变成“每次都解释所有词”
保存 写入用户偏好存储,可带上日期、来源和适用范围 后续会话能够查到这条信息
检索 新任务是“给新同事介绍流动性指标”,取回该偏好 当前任务与记忆的适用条件相符
加入上下文 把这条要求与任务、资料一起发给模型 模型本次生成时可以使用它
修订或删除 用户改为“这次面向专家”,临时适配;长期偏好改变时更新记录 区分一次例外与长期变化,减少过时记忆干扰
任务状态也可以按类似方式保存。研究一份报告做到一半,系统写下“已读 A、B 两份材料,C 尚未读取;待确认表 2 单位”,恢复时就有继续工作的起点。原始聊天记录负责留下经过,状态摘要负责指出当前进展。摘要若把“待确认”漏掉,下一轮工作就可能沿用一个未核实的假设。
记忆与知识库有交集。一个项目约定既可以存成记忆,也可以放入项目说明页;记忆通常围绕交互连续性和偏好,知识库通常围绕资料组织和事实查询。评估一个系统的记忆设计时,关注它具体保存什么、什么时候取回,比纠结文件应当叫什么更有用。
“它越来越懂我”可能是真的 一个助手连续几次采用你喜欢的表格形式,可能是在沿用当前对话中的示例,也可能是应用保存并取回了你的偏好。你感受到的改进可以由这些具体机制产生。要判断是否发生了训练,还得看模型权重有没有更新;聊天记录、偏好存储和权重各自保留着不同的东西。
第一章的 KV Cache 保存注意力计算所需的中间张量,帮助下一步复用已经完成的计算;这里的记忆存储保存偏好、经验或状态,供后续任务选择使用。缓存过期后,可以重新处理原文建立计算状态;偏好能否跨会话沿用,则取决于记忆的保存和取回过程。
2.8 Context engineering:每一次调用,都重新整理工作材料
上下文工程(context engineering)关注如何持续为模型组织合适的信息。 它包含选择哪些内容、怎样分层摆放、何时补充、哪些结果保存到外部,以及哪些历史可以压缩或移出。2025 年 Anthropic 的工程文章把这一视角与持续运行的 Agent 联系起来:随着工具调用和任务推进,上下文会不断变化,信息整理也必须反复发生。[19]
例如,比较两期报告时,先取回两期的同名表格和指标定义;发现分类调整,再补读说明页;算出结果后,保存计算输出,并把已读过的长段落换成摘要和来源位置。这里发生了资料选择、按需补充和历史压缩,都是上下文工程的一部分。资料较少时可以直接放全文,工作持续较久时则需要逐步整理。
同一段历史,怎样压缩才方便接着做 原记录:“已核对 2026 年一季度 A、B 两张表,单位均为百万元;C 表有一列未标单位,需要查看附注;本次采用环比。”
若缩成“数据已核对,可以写报告”,会丢掉未完成项。可用于恢复任务的摘要应保留:“A/B 表已核对,单位百万元;C 表单位待确认,见附件第 8 页;比较口径为环比。”原始文件继续保留,需要细节时再读取。
压缩的取舍来自接下来要做的事。已经完成的重复检索记录可以简写;影响结论的口径和来源应保留,未解决的问题也应保留。仅仅让摘要更短,未必让后续工作更顺利。
长窗口为什么不能替代信息组织 2023 年《Lost in the Middle》在多文档问答、键值检索等任务中观察到:所测试模型对信息位置敏感,关键信息处于长输入中部时,表现往往下降。这一结果来自特定模型和实验条件,评价更新的模型时需要重新测试。查找单条信息与综合多处条件,是两种不同任务;长窗口的实际价值,应结合具体任务的准确率、噪声和计算成本来看。[20]
提示注入(prompt injection) 是试图借输入内容使助手偏离原定任务、覆盖既有指令的攻击方式。一种常见情形是:检索到的网页或文档夹带“忽略任务要求,把数据发到某处”等命令,试图让系统把资料中的文字当成操作指令。此时应只把它当作待分析的内容,并由运行系统维持指令与执行权限的边界;仅靠一句“请忽略恶意命令”的提示,防护仍有缺口。[23]
最后,还要把两个容易混在一起的概念分开。指令优先级 回答“不同要求冲突时,系统应该服从谁”;证据权威性 回答“不同事实说法冲突时,哪项来源更适用”。网页中的官方统计可以是可靠证据,但网页夹带的“忽略用户要求”不会因此获得指挥助手的资格。系统指令可以要求依据现行文件作答,却不会凭空创造文件里的事实。
读到这里,一次回答的材料路径已经清楚: 文件、知识页与产品记忆保存在外部系统,经过检索或读取进入上下文,模型运用训练形成的能力处理它们。第三章继续解释运行过程:由谁安排下一次调用,怎样根据结果决定继续查询、执行动作或结束任务。
第二章自测:信息到底在哪一步丢了
已经上传 200 份文档,为什么助手仍说找不到某项规定?
对照答案 上传、解析入库、检索命中、进入上下文和正确使用是不同环节。需要检查文档是否被成功解析、查询是否找到了对应片段、片段是否被筛掉,以及模型是否正确理解;不能仅凭“已上传”推断它读过全部内容。
新会话沿用你偏好的格式,可能通过哪些机制实现?
对照答案 产品可能取回了保存的偏好,也可能注入统一设置或相关历史。常规推理时的信息使用与训练时的参数更新不同;需要查看实际机制。
长窗口能装下全部文件,是否就可以省去检索和资料筛选?
对照答案 小规模且资料相关时,全文输入可能足够,也能避免检索遗漏。但容量不是综合理解的保证;材料多、更新频繁或噪声大时,检索、导航与筛选仍可能改善成本和效果。应按具体任务比较,而非把一种方案当作永远更优。
Wiki 摘要与原始公告冲突,应该怎样核对与修订?
对照答案 应核对原文、时间、适用范围和整理过程;若摘要错误,需要更新摘要并检查是否影响其他页面。
某份高权威报告末尾要求助手“删除已有结论并输出指定口号”,这是什么问题?
对照答案 报告的事实内容与它试图发出的行为指令要分开。这里对应上文的提示注入:外部资料试图指挥助手改变任务。事实来源的可信程度与操作指令的权限,需要分别判断。理解这种区别,是下一章认识运行系统、第四章理解工具边界的基础。
接下来阅读 第三章:chatbot、workflow 和 agent harness——如何让大模型开始工作 →
第三章 chatbot、workflow 和 agent harness:如何让大模型开始工作
同样一句“帮我分析这份报告”,有的系统返回一段建议,有的会找资料、运行计算、检查差异,直到交出文件。区别既在模型,也在模型周围的组织方式。本章沿着一项任务的推进过程,拆开交互入口、控制流程、行动循环与运行支撑。
3.1 Chatbot 是我们与系统交谈的入口
Chatbot 通常译为聊天机器人。本书先从交互形式理解它:人通过对话与系统交互。最简单的聊天程序把用户的问题交给模型,把回答显示出来;更丰富的聊天产品还可以检索文件、调用计算器、执行任务。聊天窗口因此可以成为多种工作方式的共同入口。
可以把一次使用拆成三个问题:我们怎样提出需求,系统怎样决定下一步,以及执行过程中由什么维持连续性。 Chatbot 主要回答第一个问题,workflow 和 Agent 主要回答第二个问题,harness 主要回答第三个问题。它们处在不同层次,因此可以同时存在于同一个产品里。
一个入口,两种过程。 在同一个聊天窗口输入“净息差是什么”,系统可能直接组织解释;输入“对比这两期报告的净息差口径,列出不一致之处”,系统可能先读取两份报告,再寻找定义、核对时间范围并生成对照表。界面没有变,任务背后的信息获取和执行方式变了。两种体验的区别在于,后者需要先取得资料,再根据内容推进任务。
模型名称也需要放对位置。Claude Opus 是模型系列;Claude Code 是能够调用模型并操作开发环境的产品;harness 指组织模型调用和执行过程的运行支撑。比较 Opus 与另一个模型,可以讨论能力;比较 Claude Code 与另一个 Agent 产品,还需要比较工具、上下文管理、执行环境和交互方式。评估实际任务时,模型能力和这些运行条件需要一起看。
从“替我写”到“替我把事情做完” 2025 年 2 月 24 日,Anthropic 在发布 Claude 3.7 Sonnet 的同时,介绍了处于研究预览阶段的 Claude Code。前者是模型,后者让用户在终端中把工程任务交给系统处理。同一次发布包含了两类变化:模型更善于处理任务,产品则提供了调用模型、操作文件和执行命令的工作环境。[25]
Codex、Claude Code 等产品使更多人熟悉了“交付任务”的用法:模型生成的不再只有最终文字,还包括下一步的行动请求。读新闻里的“自主完成”,可以进一步看它交付了什么、怎样检查结果,以及人在哪些环节参与。
3.2 Workflow:先规定任务可以怎样流转
Workflow 是预先设计的任务流程。它规定哪些环节可以发生,以及满足什么条件时转到哪个环节。例如,收到一份材料后,先提取字段,再检查缺失,资料完整就生成摘要,否则返回补充请求。流程可以是直线,也可以有分支、循环和并行步骤。
流程可以预先规定,其中某些步骤交给模型完成。 “判断材料属于哪一类”可以由模型完成,“按类别选择分析模板”可以由普通程序完成,“生成解释”又可以调用模型。模型给出的分类或文字可能存在波动,但系统允许经过哪些节点,通常已由开发者定义。这是理解 workflow 最有用的角度。
Anthropic 在 2024 年的工程文章中,用“预定义代码路径”与“模型动态决定推进方式”区分 workflow 和 Agent。本书沿用这个划分来解释系统结构。真实系统往往混合使用两种方式:大流程固定,某个资料调查环节由 Agent 自主推进。[24]
图 3-1|一个包含模型、分支和循环的 workflow
程序检查完整性 逐项检查必填字段是否存在,决定走哪条分支。
字段齐全 → 生成摘要 将提取结果交给模型写摘要,再保存产物。
字段缺失 → 补充材料 列明缺失项,等待补充;超过预设重试次数则停止并报告缺口。
补充材料到达后,回到“模型提取字段”,再做完整性检查。
程序预先规定可走的路径;模型负责路径中的提取和写作。字段齐全只说明完成了这项结构检查,事实与口径可另设检查步骤。
月报生成的两段过程。 数据到齐后按固定顺序校验、汇总、填表,适合流程化;发现本月某个口径突然改变后,需要追查附注、比较文件并判断是否继续搜索,这一段更适合动态决策。区分两者时,看下一步主要由预设流程还是由模型根据观察决定。
Workflow 的价值在于路径清晰、接口稳定、容易定位失败环节;代价是要提前覆盖可预见的情况。Agent 允许现场选择路径,但也增加了选择错误、重复尝试与成本失控的可能性。路径稳定的任务可以保留固定流程,需要调查未知情况的环节再引入动态决策。
3.3 Agent:让观察结果影响下一步行动
本书中的 Agent 指围绕目标,通过模型参与决策并使用工具、依据环境反馈持续推进任务的系统。一个典型循环是:收到目标与当前状态,模型提出行动,系统执行行动,取得结果,再将结果交给模型决定继续、调整或结束。复杂行为由多次模型调用和环境交互串联起来。
假设系统要找到某条指标的最新版定义。第一次搜索得到旧文档;模型注意到发布日期不符,于是改用新的年份搜索;第二次得到更新通知,又沿通知读取附件;最后对照定义后回答。在这个过程中,用户给出的是查清定义的目标;模型根据旧文档、更新通知和附件逐次选择下一步。
模型在循环里负责理解与提出动作,运行系统负责把动作落到工具,并提供结果。模型也可以提出“任务完成”,但可靠系统还要依据任务标准检查完成状态。若目标是生成文件,完成条件可以包括文件已保存、内容齐全,以及必要检查已经通过。
自主性有哪些维度 自主性可以沿多个维度变化:由谁拆分任务、由谁选择工具、允许行动多少轮、遇到异常由谁处理、何时需要人参与。一个只自主选择检索词的系统,与能持续修改项目并验证结果的系统,都可能被称为 Agent。具体说明这些控制权,有助于比较不同产品的自主程度。
多 Agent 也只是另一种组织方式:不同实例负责可分开的子任务,再交换摘要或产物。它可能增加并行度和视角,也会引入重复工作、信息损耗、共享状态冲突和额外调用。任务能否分开、结果如何汇合,会影响增加 Agent 后的收益。
3.4 Plan 与 ReAct:组织任务和随反馈调整
Plan 是计划:把目标拆成步骤,列出依赖、待核实问题与完成条件。计划既可以由人给出,也可以由模型生成,再保存在任务状态中。它的作用是使长任务有方向,并把尚未解决的问题留在视野里。计划本身仍然可能漏项或建立在错误假设上。
ReAct 把 reasoning 与 acting 放在同一推进过程里,强调推理、行动、观察之间的交替。原论文在 2022 年提出这一方式:推理帮助选择行动,行动获得的信息再帮助修正后续判断。这个名称指推理与行动交替的模式;在界面中,可以用行动理由、工具记录与阶段结果呈现进度。[26]
Plan 与 ReAct 可以组合。先列“找定义—找数据—核口径—写结论”的计划,再在“找定义”这一步根据搜索结果连续调整查询;如果发现前后两期采用了不同统计范围,就重新安排“核口径”,甚至暂停原来的比较。高层计划保持目标,局部循环应对未知。
图 3-2|高层计划怎样容纳局部的 ReAct 循环
示例任务:比较同一指标的两期定义。下面是可观察的行动理由与状态记录。
进行中:核对版本 旧报告中的定义,是否仍适用于本期?
待开始:比较变化 取得适用定义后,再逐项比较并写说明。
判断需要什么 现有附注没有生效日期,需要补查变更通知。
更新任务状态:记录生效日期;在“比较变化”之前加入“核对分类表”。若通知仍不完整,就继续围绕缺口取证。
上层计划保存目标和依赖;下层循环利用新证据调整当前步骤。这里展示作者编写的操作示例。
这里也能看出 CoT 与 Agent 的差别:在一次模型响应中写出若干推理步骤,并不必然发生外部行动;反过来,Agent 可以执行多轮工具调用,而界面只呈现简要理由与进度。阅读执行过程时,可以沿着来源、行动与结果检查系统做了什么。界面上看得见的说明,长短受产品如何展示过程影响。
计划中的“完成”怎样对应实际结果 任务清单帮助记录进度,具体产物则用来检查完成程度。“完成校验”可能只意味着模型调用过校验程序,程序却发现了错误;“完成检索”也可能只意味着搜索过,并未找到支持结论的证据。把动作发生、动作成功、目标达成混在一起,会制造一种工作已经完成的错觉。
例如,“已读取两份报告”是一项事实,“定义一致”是需要证据支持的判断,“可以直接比较”又依赖这个判断。把这三层分别留下依据,就能看清下一步可以建立在哪些结果上。
3.5 Harness:使一次次模型调用成为连续工作
Harness 可以理解为 Agent 周围的运行支撑。它负责启动模型调用、接通文件访问等工具、等待工具和保存进度。软件决定何时调用模型、给它哪些信息、怎样执行动作、接到错误后怎么办,并在结束时留下可检查的结果。
它通常涉及上下文组织、工具路由、任务状态、执行环境、错误处理、时间与调用预算。这些安排共同决定任务怎样持续运行,权限控制也在其中。相同模型如果得到更清楚的工具反馈、更完整的阶段产物和更有效的恢复机制,就可能完成原先做不完的任务。这种提升不要求改变模型权重。
当任务跨越多个上下文窗口时,状态尤其重要。对话记录回答“之前说了什么”,任务状态回答“现在做到哪里、哪些结果已验证、哪些事情仍未完成”。压缩上下文时,需要保留目标、关键决定、有效证据的位置与下一步;完整文件可以继续放在外部环境,必要时再读。压缩会丢失细节,保留下来的原始产物可供后续重新核对。
图 3-3|上下文换了一轮,任务怎样接着做
窗口 A:已经做过的工作 读取两份报告,确认单位相同,找到定义变更线索;原文与对照草稿已保存。
保存交接状态 写下已核实结论、证据位置、当前问题和下一步;保留完整文件。
窗口 B:恢复工作 加载目标和交接状态,检查已有文件,从待解决的问题继续。
外部文件继续保存 报告原文、引用页码、已生成的对照草稿。需要细节时重新读取。
本轮上下文装入摘要 “已核对两期单位;新版定义待查;下一步读取变更通知第 2 页。”
如果摘要只剩“材料已处理”,下一轮很难知道核对到哪一步。明确留下范围与待办,才能减少重复工作。发生意外中断时,则从最近一次已保存状态恢复,并核实外部动作是否已经完成。
Anthropic 在 2025 年 11 月的长任务实验中,使用初始化与后续增量工作的安排,并用任务记录和产物帮助跨会话衔接。这是一种适合该实验任务的衔接办法;其他系统可以采用不同的状态存储与恢复方式。[27]
失败恢复为什么会改变最终能力 考虑这样一个操作:文件已经生成,但返回消息时网络中断。模型看到超时后,需要核实文件是否已经保存。再次执行可能创建重复文件;正确恢复需要先检查当前状态。若工具执行涉及写入,系统还需要知道哪些操作能安全重试,哪些应使用唯一标识、检查点或补偿步骤。
另一类失败是进度消失:压缩摘要只留下“正在分析”,没有留下已确认口径和证据路径。下一轮就可能从头搜索甚至推翻正确结论。harness 的评估因此要覆盖中断后的恢复与持续推进,以及最终产物的质量。
3.6 Agentic RAG:让检索也参与行动循环
第二章的基础 RAG 是“检索相关材料,再据此生成”。Agentic RAG 把检索放入动态决策过程:先判断需要什么证据,再选来源和查询方式;读到结果后检查是否足够,必要时改写查询、拆成子问题或补查其他来源,最后综合回答。这里的 agentic 描述检索流程的组织方式,所用模型与检索设施可以有多种组合。
例如,要比较两个时期的流动性指标,直接搜索指标名可能已经能找到数字,但无法说明口径是否相同。系统可以进一步找附注:若定义变化,再寻找可比数据;若只有一方披露,明确留下缺口。新的检索由当前证据暴露的问题触发。研究型 Agent 的工程实践提供了多步搜索与资料综合的例子;本书把这种可调整的取证方式概括为 Agentic RAG。[28]
循环需要停止条件。目标中的问题已获得充分证据、合理搜索后仍有资料缺口,或预算已到上限,都可以触发停止,但最终回答应说明是哪一种。否则系统可能不断改写查询,获得大量相似材料,却没有增加有效证据。对一个有明确答案和固定来源的问题,简单 RAG 往往已经足够。
检索可靠性要按链条检查 一次错误可能来自查询没覆盖正确材料,也可能来自检索排序不佳、片段遗漏上下文、模型误读数值,或把正确引文贴到了错误结论旁。增加搜索次数主要帮助扩大候选材料范围,其后的解读与引用仍需单独检查。评估应分别观察来源是否找全、证据是否相关、结论是否被支持,以及未找到证据时是否如实保留不确定性。
3.7 把 Agent 当初级员工:理解交接,也理解边界
“初级员工”是一个有用的工作比喻:给清楚的目标和背景,允许完成中间步骤,查看产物并提供反馈,由它安排中间动作。交接时说明背景、资料位置与完成条件,系统才能把这些要求带入后续动作。
这个比喻也有适用范围。Agent 的常识与任务判断来自模型及当前信息,经历的连续性则依赖系统保存和取回状态。它可能在难题上表现惊人,又在简单文件路径或过期口径上犯错;不同任务的能力分布也不均匀。一次演示展示了一条成功路径;换一批材料后是否稳定,需要继续观察。
训练损失描述模型对训练目标的拟合,业务验收则检查具体任务中的事实、口径、计算和执行结果。可靠性应通过代表性的任务集合衡量:是否完成目标,结果是否正确,证据是否可追溯,花费多少时间与调用,有没有不必要的人工补救。需要看多次运行的表现,也要保留失败案例。例如,一份说明写得流畅,却引用了旧版指标定义,评估时就应记录为证据使用问题。对 Agent 的评估通常同时查看执行轨迹与实际结果。[29]
同一项任务,可以从几方面记录结果。 例如,给系统一组相同口径的报表,要求生成对照文件。评估可以同时检查文件是否存在、数字是否正确、引用是否对应原表,并记录用时和人工补充次数。若三次运行都生成了文件,其中一次取错期间,就应分别报告文件完成情况与数据正确情况。这个例子中的两项记录,回答的是两个不同的问题。
把任务的各部分连起来。 Chatbot 让我们表达任务;workflow 规定可行路径;Agent 在目标和反馈之间选择行动;harness 把多次调用组织成可持续的过程。下一章继续拆开“行动”本身:模型怎样调用工具,Skill 又怎样把可复用的方法放到任务现场。
理解自测|把概念放回任务过程
1. 同一个聊天窗口,一次直接解释术语,一次查资料后生成文件。怎样描述两种工作方式? 二者共享 chatbot 入口。前者可以由一次模型调用完成;后者包含读取、判断、执行和返回结果,可能由固定 workflow 或动态 Agent 组织。继续看下一步由谁决定,就能区分具体结构。
2. 一个流程调用模型提取字段,再按字段完整性分支。哪些部分预先规定,哪些部分由模型完成? 程序规定提取、检查、补充或生成摘要的路径;模型负责提取内容和生成摘要。模型输出可能变化,后续分支仍依据预设条件运行。
3. 比较两期指标时发现定义变更,plan 与 ReAct 各起什么作用? Plan 保存“取得资料、核口径、比较”的目标与依赖;ReAct 循环根据变更线索补查通知,再将生效日期和新增核对步骤写回任务状态。
4. 长任务切换上下文窗口时,保存哪些内容有助于继续工作? 保存目标、已核实结论及证据位置、尚未解决的问题和下一步,同时保留原始文件与阶段产物。恢复后读取这些状态,必要时重新检查文件或未确认的执行结果。
5. Agentic RAG 完成多轮搜索后,怎样判断可以结束? 检查任务所需证据是否齐备、版本与适用范围是否明确。若充分搜索后仍有缺口,或达到预算上限,也可以结束,并说明哪些问题仍未解决。
继续阅读 第四章:工具与 Skill 如何扩展行动能力 。
第四章 agent 的工具和 skills:给 agent 配上手脚
第三章把工具看作 Agent 能够采取的动作。这一章放大一次动作:模型如何提出调用,软件如何执行,Skill 又怎样提供任务方法。最后再看系统的改进发生在哪里,理解“记住了”“学会了”与“递归自我改进”之间的距离。
4.1 Tool:把语言判断接到外部世界
Tool 是系统提供给模型使用的外部能力。搜索工具获取资料,文件工具读取或写入内容,计算工具执行公式或代码,浏览器工具观察页面并进行操作。它们的共同之处,是让任务获得模型生成文字之外的输入或结果。
工具扩展能力有两条路径。一条是获得信息 :读取最新文件、查询数据库、观察屏幕,使模型接触训练时没有见过的材料。另一条是执行操作 :让程序计算结果,或把文件写到指定位置。工具执行依赖运行环境与权限。例如,发送邮件需要可用的邮件接口、账号连接和相应授权。
使用计算器时,选择公式与确认输入仍由任务分析决定。假设模型把年利率误当成月利率,计算器可能非常准确地算出一个基于错误输入的结果。计算器这类工具能让特定运算更稳定、可复现,仍需要正确的问题、参数、口径和结果解释;检索和其他工具也可能返回不完整或错误的结果。错误可能出现在动作选择之前,也可能出现在返回结果之后。
从“我算了一下”到可检查的计算。 若问“余额从 100 增至 108,增长多少”,模型可能直接回答 8%;也可以调用计算工具执行 (108−100)/100。后者留下了可复现过程。若任务需要比较平均余额,就要先确认这两个数的口径。取成期末余额时,问题出在输入选择,计算器会继续按收到的数字运算。
读写能力还需要区分。查询一份报表主要改变系统掌握的信息,覆盖一份报表则改变外部状态。因此,执行记录可以列出所用工具、读取内容、外部改动及返回结果。取得工具结果后,模型再根据任务要求解释或继续处理。
4.2 Function calling 与 MCP:提出请求和接通能力
Function calling 是模型以结构化方式提出工具调用请求的一种机制。系统先给模型可调用工具的名称、用途和参数约束;模型依据任务,输出要调用的工具以及对应的输入值;应用或运行平台执行对应程序,再把结果送回模型。随后模型可以生成回答,也可以提出新的调用。[30]
例如,工具说明“查询指标值”需要指标名和日期。模型输出的请求可能是“指标=某余额,日期=某月末”。运行系统拿到这份请求后向数据源查询,再将数值、单位、统计范围与时间返回模型。一次调用因此留下请求、执行结果和后续处理三个可观察的部分。
MCP,即 Model Context Protocol,是让应用与外部能力提供方交换信息的一套开放协议。使用者面对的应用是宿主(host),它通过内部的协议客户端(client)连接能力服务端(server);服务端可以提供工具、资源和提示模板。MCP 主要约定能力如何被发现、调用以及返回结果。任务如何推进,由应用的流程或 Agent 决策;应用也可以直接调用自有接口。[31]
把两者放在一次请求里看更清楚:模型通过 tool calling 提出“读取文件”;运行系统把它路由到相应接口;如果接口由 MCP server 提供,调用与结果便沿 MCP 通信。前者关注模型如何表达行动,后者关注系统之间如何交换能力与结果。连接建立后,系统可以按需选择工具、读取资源,再将选出的结果交给模型。
图 4-1|读取文件时,调用怎样经过 MCP
准备阶段:宿主中的 MCP 客户端获取服务端提供的工具信息,宿主据此选择向模型提供哪些能力。下面展示一次已选定工具的调用。
宿主应用 运行层接到调用;内部 MCP 客户端组织协议请求。
MCP 服务端 将请求交给它连接的文件系统或文档服务,取得页面内容。
返回方向:页面内容 → 服务端 → 客户端与宿主 → 本轮工具结果 → 模型据此回答或继续行动。
模型与宿主之间 模型表达要做什么、参数是什么;宿主组织实际执行与结果回传。
客户端与服务端之间 MCP 约定能力发现、调用和结果交换;服务端可以运行在本机或远端。
若工具由宿主直接集成,宿主也可以直接调用文件接口。Function calling 与 MCP 可以连在同一条路径上,分别处理不同层的交互。
参数格式与参数含义分别怎样检查 参数结构说明(schema)可以约束字段类型、必填项和允许值;在支持严格结构约束的机制中,系统能进一步减少不符合格式要求的请求。但一个格式完全合法的日期,仍可能选错月份;一个合法的文件路径,仍可能指向错误版本。结构约束解决“能否解析”,语义检查解决“是不是应该这样做”。
模型可见的工具描述也属于上下文。名称模糊、多个工具用途重叠、返回结果缺少单位或只显示“成功”,都会提高误用概率。清楚的工具描述和返回结果,能帮助模型选动作、理解反馈并决定下一步。
工具选择与调用需要多少时间 想象一位新同事面对十个功能相近、命名含糊的系统入口:花时间选择并不奇怪。工具集合也会增加模型需要理解和区分的信息。系统有时先提供少量能力,或先搜索工具目录,再加载适合的接口,而非把所有说明一次性放进上下文。
工具调用还有网络、排队和执行等待。最终任务耗时取决于第一章讨论的 token 生成速度、模型与工具的调用次数,以及各步骤能否并行。一个少走两次无效检索的系统,可能比单次生成更快的模型更早完成工作。
4.3 Skill:把可复用的方法和资源带到现场
这里的 Skill,主要指 Agent Skills 这类可被兼容的 Agent 发现和加载的能力包。它通常以目录组织,以 SKILL.md 提供名称、适用说明和任务指导,还可以携带参考资料、模板与脚本。脚本和其他资源按任务需要附带。[32]
Tool 让系统能够做某个动作,Skill 提供一套可复用的方法。例如,读取表格的工具可以告诉系统单元格里有什么;一份报告核对 Skill 可以提示如何查找版本、确认口径、处理差异并组织结果。Skill 所包含的脚本还可能承担具体计算,但执行它仍然需要实际运行能力。
加载 Skill 会把相关指导与资源带到当前任务中,模型继续使用已有权重处理它们。 例如,Skill 指导先读取共享盘资料,实际读取仍依赖共享盘连接和文件权限。拿到资料后,模型要结合内容执行指导,并检查产物是否满足要求。
概念 在同一任务中的作用
Prompt 本次调用中表达目标、要求和上下文;加载的 Skill 指导也可能成为其中一部分。
Knowledge 提供事实、定义、口径与依据;可以位于知识库或 Skill 附带的参考材料中。
Tool 执行读取、查询、计算和写入等动作。
Skill 打包可复用的方法与资源,帮助系统知道何时以及怎样使用已有能力。
Workflow 由运行系统组织控制流程;Skill 里的流程说明则由模型结合当前任务理解和执行。
这些概念按主要角色区分,在具体文件与系统中可以组合。同一段指标定义可以出现在知识页和 Skill 参考资料里;同一份流程既可以作为给模型的说明,也可以被实现为固定工作流。关键在于:任务真正运行时,这段内容是在提供证据、给出指导,还是实际控制执行。
4.4 从发现到加载:为什么许多 Skill 能共存
如果每次任务都把所有操作手册放进上下文,窗口很快就会拥挤,也会带来无关指令的干扰。Agent Skills 使用渐进式加载的思路:先让系统知道有哪些 Skill、分别适合什么;任务匹配时读取详细指导;只有遇到具体需要,才读附带资料或运行脚本。[32]
可以把它想成先看目录,再翻相关章节,必要时打开附录。目录用于发现;正文提供详细指导;参考资料按当前步骤继续读取。不同产品如何列目录、触发匹配、缓存内容会有差异,本书讲的是这种组织原则。
这一机制把 Skill 与第二章的上下文工程连接起来:系统保存的资源可以很多,本次进入上下文的只需与任务相关的一部分。代价是选择本身也可能失败。如果描述太宽泛,系统可能误选;如果任务与描述用词差异很大,也可能漏选。因此,可以从发现、加载、理解和执行几个环节观察一个 Skill 在当前任务中的作用。
2025 年的变化:让经验可以随任务加载 Anthropic 在 2025 年 10 月 16 日介绍 Agent Skills,随后于同年 12 月 18 日更新文章,说明已将其发布为开放标准。这种格式用文件与约定组织任务经验,让兼容的运行系统按需读取。底层模型仍按第一章介绍的方式处理上下文并生成输出。[33]
从“在每段对话重新解释一遍”,到“把方法写入可复用资源”,改变的是上下文的来源与组织。这个视角也解释了为何 Skill 能跨任务复用,同时仍依赖兼容的运行系统、工具和模型能力。
资料、指令与执行权限要分别理解 外部文档或工具结果可能包含“忽略先前要求”之类的文字。如果系统把这些被读取的内容当成自己的操作指令,就可能发生提示注入。Skill 则本来就要提供操作指导,因此其来源、适用范围以及与现有指令的关系更值得分清。使用时,需结合文件来源和适用任务理解这些指导。
宿主应用的指令优先级、能力边界和权限机制,仍然决定它如何处理冲突。例如,资料中的命令句仍按外部内容处理;Skill 可以描述写文件的步骤,而执行层负责检查该路径是否允许写入。文字的用途与执行权限分别由系统的相应层处理。
4.5 有工具与有 Skill:读懂一个小例子
设想一个系统已经有文件读取、计算和写入工具,任务是“比较两份同名指标表”。只有工具时,它具备取数与相减的能力,却可能不知道这项工作最容易错在哪里。如果加载的 Skill 提醒先确认数据期间、单位、统计范围和版本,它就多了一套可参考的方法。
一段指导怎样参与实际任务。 一段示意性的 Skill 指导可以是:“比较前识别两表日期、单位与统计口径;发现口径不一致时列明差异;结果保留来源位置。”其中,“识别”与“比较”描述过程,“口径不一致”描述需要特别处理的条件,“保留来源位置”描述产物要求。模型读取这段指导后,还要通过工具取得数据,才能开始比较。
实际运行时,模型需要把指导转化为动作:先读取表头与说明,再取相关数据;如发现单位不同,调用计算工具进行换算;最后写出对照结果。若遇到 Skill 没有覆盖的情形,还需要回到模型的一般能力与当前证据作判断。Skill 为任务提供方法,但执行质量仍要看具体结果。
图 4-2|同一道比较题,知识、Skill 与工具怎样协作
示例数据:旧表记录 100 万元,新表记录 1,200,000 元;两表期间和统计范围已确认可比。任务是计算余额变化。
知识与证据 表头说明单位;口径文件解释指标范围。提供这两个数字怎样理解的依据。
Skill 指导 比较前确认期间和口径,统一单位,再计算并保留来源位置。
工具能力 读取表头与数值,执行换算和运算,把结果写到对照表。
执行计算 1,200,000 元 = 120 万元;(120−100)/100 = 20%。
形成产物 余额增加 20 万元,增长 20%;列明已统一单位及数据来源。
方法指导进入上下文,事实材料支持判断,计算工具完成运算。若读到统计范围发生变化,模型应先处理可比性问题,再决定怎样比较。
同一个例子也说明,改善系统时,要按任务选择适合的机制。重复任务可能适合沉淀 Skill;稳定且要求严格一致的转换,可能更适合程序;一次性的开放问题,可能只需要清楚的上下文;需要经常更新的事实,可能放在知识库更合适。理解这些机制,才能判断改善发生在哪里。
对使用者来说,读懂一个 Skill 最重要的是知道:它针对哪类任务,带来了哪些方法和资源,依赖什么外部能力,哪些结果仍需核实。这些信息有助于判断它适合当前任务的哪一部分。
4.6 从积累经验到 RSI:系统究竟改变了什么
当一个系统越用越顺手,我们常说它“学会了”。但至少有几种不同变化:保存了你的偏好,增加了资料,改进了任务指导,修复了工具代码,或者真的通过训练更新了模型参数。它们都会影响表现,却使用不同机制,也有不同的验证方式。
改变发生在哪里 一个具体例子 主要改变什么
Memory 保存“用户偏好先给结论”,后续取回使用。 后续取回的信息。
Knowledge / LLM Wiki 新增一页口径说明,并链接到相关指标。 外部知识内容。
Skill 把常见错误对应的检查加入任务指导。 任务指导与资源。
工具或 harness 代码 改进文件定位、重试与状态恢复。 实际运行的程序。
模型参数 用训练数据和优化过程更新权重。 模型权重与对应行为。
RSI 是 Recursive Self-Improvement,本书译为“递归自我改进”。这里的“递归”强调:系统产生的改进又能改变系统后续进行改进的能力,形成反馈。要研究这样的循环,需要跟踪修改怎样影响后续改进过程,以及效果能否在任务中复现。
2025 年 5 月 29 日首次发布的 Darwin Gödel Machine(DGM)研究,提供了一个有边界的例子:在底层模型权重保持固定的实验中,编码 Agent 修改自身代码,并用编码任务评估变化;不同版本被保留和探索,用于寻找更有效的工具与工作方式。论文报告了在所用编码基准上的提升;实验在沙箱(与外部隔离的受控运行环境)中进行,并有人工监督。这一结果适用于论文所设置的编码任务和实验条件;更广泛、长期持续的自我提升仍需进一步研究。[34]
图 4-3|完成任务的循环,与改进 Agent 的循环
下面示意一种修改 Agent 程序的研究路径。内层完成具体任务,外层根据评估探索新的程序版本。
内层:接收任务 某个固定 Agent 版本接收一个编码问题及所需工作文件。
执行与观察 模型提出读写操作,工具返回结果,再决定下一步。
交付与检查 提交任务项目的代码改动,用任务测试记录是否完成。
内层的反馈用来完成当前任务;外层则汇总多个任务中的表现,判断 Agent 本身怎样改进。
外层:生成候选 B 从版本 A 出发,尝试修改它的编辑工具、上下文处理或工作方式。
评估候选 用 B 运行任务,检查成功情况、失败原因和计算成本。
保存版本与结果 保留可继续探索的版本,记录这次修改带来的变化。
下一轮可以选择 B 等已有版本继续产生候选。若 B 改善了修改和验证代码的能力,它也可能改变后续自我改进的效率。
探索允许出现失败候选,结果也可能停滞。DGM 的相关实验保持基础模型权重固定,通过修改 Agent 代码研究这条路径;从有限实验推向持续的递归改进,还需要更多证据。
判断一个版本是否改好,需要看任务结果。如果系统只对已经反复见过的例子更好,可能是过拟合;如果它改变了评分规则却没改善任务结果,可能是指标失真;如果新版本提高成功率却把成本增加很多,就需要把分数与成本一起比较。持续改进需要稳定的比较条件、未参与修改的测试任务、成本记录和可回退的版本。新版本在实际任务中的结果变化,为是否采用提供依据。
运行时适应、参数训练与系统改进 普通对话中,模型基于当前上下文改变回答,属于运行时适应;系统把经验保存到文件、下一次读取,属于外部状态变化。训练更新则需要定义数据、目标和参数优化过程。某个产品可能使用反馈改进后续模型,是否发生、何时发生、覆盖什么数据,需要依据该产品的实际机制判断。
自我改进也可以发生在运行程序层。DGM 的这组实验保持基础模型权重固定,修改调用模型、处理环境和完成任务的 Agent 代码。理解第一章的模型与第三章的系统之别,才能读懂“AI 改进 AI”新闻到底报告了哪一层的进展。
走完四章,再看同一句“AI 变强了”。 它可能拥有更好的模型能力,也可能得到更合适的上下文,运行在更有效的 harness 中,或获得新的工具和 Skill。先辨认变化所在的层次,再看是否有任务结果支持,便能把产品体验、技术机制和新闻主张联系起来。
理解自测|解释一次完整的能力调用
1. 模型提出“读取本期报告”后,接下来怎样取得真实内容? 宿主接收工具名与参数,执行相应接口,并把成功结果或错误信息作为工具反馈返回模型。模型读取反馈后继续回答或安排下一步。
2. 这次读取通过 MCP 完成。Function calling 和 MCP 分别在哪一段起作用? Function calling 用于模型向宿主表达结构化行动请求;MCP 用于宿主中的客户端与能力服务端发现工具、交换调用和结果。
3. Skill 指导比较两份表格时先统一单位,真正完成这件事需要哪些部分? 模型先读取指导,再用工具取得表头、数字和口径资料,判断单位是否一致,需要时调用计算能力换算。Skill 提供方法,资料提供依据,工具执行读取与计算。
4. 从发现一个 Skill 到使用其中脚本,中间会加载什么? 先通过名称与描述判断是否适合任务,再读取详细指导,按当前步骤读取参考资料或调用脚本。相关内容在需要时进入上下文,脚本则由执行环境运行。
5. 怎样区分“记住偏好”和“改进自身的改进能力”? 记住偏好主要改变后续任务取回的信息。递归自我改进关注修改能否帮助系统在下一轮更有效地提出、验证或选择自身修改,需要跟踪版本、改进过程与任务表现。
回到 全书回顾 ,把模型、上下文、运行系统与能力扩展放在同一张图中。
看到一个 AI 系统,先分清它的四层
四章讨论的是同一个系统的不同部分。模型生成判断,上下文提供当前材料,运行系统推进任务,工具与 Skill 扩展行动能力和可复用方法。它们需要组合,也可以分别改进。
层次 主要内容 观察问题
模型能力 参数、Transformer、训练与推理计算 它具备哪些理解、生成与求解能力?
当前信息 提示词、历史、取回的知识和记忆 这一次究竟看到了什么?
运行系统 workflow、Agent 循环、计划、harness 谁决定下一步,怎样保存和恢复进展?
行动与方法 工具接口、执行环境、Skill 与资源 能做什么,依据什么方法去做?
当助手表现变好时,可以先辨认三种变化。模型改进 可能来自新的权重、训练方法或运行时求解方式;信息改进 可能来自更准确的检索、更好的资料组织与记忆;系统改进 可能来自工具、Skill、流程和错误恢复。现实产品经常同时改变几项,比较时可以保持任务与材料相同,逐项观察调整后的结果。
例如,同一份报表,昨天解释含糊,今天却答得很好:可能换了更强的模型,也可能只是补上了指标定义;能够连续修改代码,可能得益于模型能力,也离不开文件、执行工具和任务状态。更快则可能来自缓存或硬件。先定位变化发生在哪一层,再谈“更聪明”“更懂我”或“学会了”,判断会更准确。
把一项工作交给 AI 时,交接什么、核对什么
可委托的范围取决于已有资料、工具能力和岗位授权。下面以 ALM、司库与风险分析中的常见工作为例;所用资料须先符合序章的数据准入要求。
可以委托的工作 需要提供与核对的内容
解释报告和术语,起草摘要 提供获准使用的原文、读者与范围;核对定义、日期和引文出处。
比较两期报表或制度口径 交代所比较的期间、单位和范围;检查重分类、版本变化及被遗漏的附注。
用计算工具复算指标,制作图表 提供适用公式与输入数据;复核分母、年化、平均/期末余额以及结果与源表的对应。
调查异常波动,整理候选原因 区分事实与假设,列出证据和缺口;由业务人员判断因果、重要性及后续措施。
准备会议材料与报告草稿 说明格式、受众和使用场景;按岗位职责审核后,再走正式发布或报送流程。
正式口径的认定、限额的设定与调整、交易指令和对外发布,都涉及机构授权和责任承担。系统即使具备执行接口,也要按对应流程使用。把“整理材料、提出建议、执行操作、批准采纳”分别说清楚,任务交接才完整。
一个新手也能说清楚的交接 “我会让它比较两份获准使用的季度报告,输出带页码的差异表。交接时说明所比较的期间与口径;拿到结果后,先核对原表、单位和重分类说明,再判断哪些差异能解释业务变化。”这段话同时交代了工作、材料和复核点。
合上正文,试着解释四个问题
选择你手头的一项报告工作:准备交给 AI 哪部分,提供什么资料,如何核对?
展开参考答案 例如让它对比两期公开报告,提供报告、所比较的期间与单位要求,要求差异表保留页码。核对原文、数值和口径变化后,再由业务人员形成判断。资料准入、工作授权和完成标准都应在交接时明确。
上传文件、保存记忆、命中 KV Cache,分别改变什么?
展开参考答案 文件成为可读取的外部材料;记忆保存供后续选择的信息;KV Cache 复用计算。这三种机制分别改变外部材料、持久信息和计算状态;参数更新发生在训练过程中。
Agent 的计划、工具与 Skill 怎样配合?
展开参考答案 计划组织当前步骤,工具执行动作,Skill 提供可复用的方法与资源。harness 让调用、结果与状态衔接起来,观察结果还可能触发重新计划。
“写下一条经验”与 RSI 的反馈循环有什么区别?
展开参考答案 保存经验后,系统可以在未来任务中取回它。递归自我改进进一步关注:系统对自身的修改如何改善下一轮提出、选择和验证改进的能力。评估需要跟踪多轮版本与独立任务结果。
需要回查名词或新闻节点时,使用下面的术语索引 与发展时间轴 。
术语、发展节点与来源
术语索引
这里用于找回正文中的解释。短定义帮助定位概念;点击“主讲位置”可阅读机制、示例和适用条件。
查找中文、英文或缩写
显示 45 条术语
术语 本书中的含义 主讲位置
Hallucination / 幻觉 生成的内容看似可信,却与事实或所给材料不符,或缺少依据。 1.7 幻觉
Prompt injection / 提示注入 借输入内容使助手偏离原定任务或覆盖既有指令;检索文档夹带操作命令是常见情形。 2.8 指令与资料
RLHF / 基于人类反馈的强化学习 利用人类对回答的评价构建反馈,进一步优化模型行为的一类方法。 1.3 后训练
Top-p / 核采样 按概率排序,保留累计概率达到阈值的一组候选,再从中采样。 1.1 采样
Top-k / 最高 k 项采样 保留概率最高的 k 个候选,再从中采样。 1.1 采样
Token 模型处理文本的基本单位,与字、词没有固定换算关系。 1.1 生成
Transformer 借助注意力、前馈网络等结构处理序列的一类神经网络架构。 1.2 网络
Embedding / 嵌入 把 token 或文本等对象编码为向量;词元表示与检索表示用途不同。 1.2 表示 · 2.5 检索
Pretrain / 预训练 用大量数据学习广泛规律,为后续任务提供能力基础。 1.3 训练
Post-train / 后训练 在已有模型基础上进一步塑造能力与行为的一组训练方法。 1.3 训练
SFT / 监督微调 用输入与期望输出示例更新模型参数。 1.3 训练
RL / 强化学习 模型生成尝试,依据奖励信号优化策略;用于后训练时可更新模型参数。 1.3 训练
DPO / 直接偏好优化 直接利用偏好回答与较差回答的配对数据优化模型的一种方法。 1.3 训练
Attention / 注意力 计算当前位置与可见位置的匹配权重,再加权汇集信息。 1.2 网络
FFN / 前馈网络 在各位置上进一步变换向量表示的网络部件。 1.2 网络
Prefill / 预填充 处理已知输入、建立内部状态,并用最后位置输出预测首个新 token。 1.4 运行
Decode / 解码 利用已有输入与此前输出,逐步生成后续 token。 1.4 运行
Test-time compute / 测试时计算 解决任务时投入的计算,可用于中间步骤、多候选求解与验证等。 1.6 求解
Chunk / 资料片段 从文件中拆出的检索单元,通常连同标题、出处和适用条件保存。 2.5 检索
Reranking / 重排 对初步检索出的候选进一步评价相关性,重新安排顺序。 2.5 检索
Model inference / 模型推理运行 利用已有模型权重计算输出,包括简单任务和复杂任务。 1.4 两种推理
Reasoning / 推理求解 从条件出发进行推导、比较、规划或问题求解。 1.6 求解
CoT / 思维链 以中间推理步骤组织求解;也指利用此类示例的提示方法。 1.6 求解
GPU / 图形处理器 常用于模型运行的并行计算硬件;算力、显存容量与带宽各影响效率。 1.5 算力
KV Cache / 键值缓存 复用注意力计算的 K、V 状态,以减少重复计算。 1.5 缓存
Context / 上下文 模型本次生成时可利用的输入与已有生成信息。 2.1 上下文
Context window / 上下文窗口 模型能处理的序列长度容量边界,通常按 token 计量。 2.1 窗口
Prompt / 提示词 引导任务的输入;提示工程关注目标、约束、示例等如何表达。 2.3 提示
Knowledge / 知识 区分参数中学到的规律、外部存储资料与当前上下文中的证据。 2.4 知识
RAG / 检索增强生成 取回相关外部材料,并把它们用于生成回答。 2.5 RAG
LLM Wiki 由模型协助维护互联知识页、积累整理成果的实践模式。 2.6 Wiki
Memory / 记忆 系统保存并在后续使用的交互信息,涉及写入、检索与取回。 2.7 记忆
Context engineering / 上下文工程 持续选择、组织、更新、压缩与取回模型当前所需的信息。 2.8 信息组织
Chatbot / 聊天机器人 以对话交互的入口;背后可以接入多种任务运行方式。 3.1 交互入口
Workflow / 工作流 按预定义路径组织任务,可包含模型调用、分支与循环。 3.2 工作流
Agent / 智能体 围绕目标,依据观察结果动态决定下一步行动的系统。 3.3 Agent
Plan / 计划 对当前任务步骤与依赖关系的组织,可随新信息调整。 3.4 计划与反馈
ReAct 让推理与行动交替,用外部观察调整后续求解。 3.4 计划与反馈
Harness / 运行支撑系统 组织调用、上下文、状态、工具执行与恢复,使任务连续推进。 3.5 Harness
Agentic RAG / 智能体检索增强生成 将检索放入会判断、行动、观察和继续查找的循环。 3.6 动态检索
Tool / 工具 可被系统调用以取回信息、计算或改变外部状态的能力接口。 4.1 工具
Function calling / 函数调用 模型提出结构化调用请求,由应用执行并返回结果的交互机制。 4.2 调用与连接
MCP / 模型上下文协议 连接应用与外部工具、资源等能力的协议。 4.2 调用与连接
Skill / 技能包 以说明、参考资料和可选脚本组织的可复用方法与资源。 4.3 Skill
RSI / 递归自我改进 系统对自身的改进进一步影响后续自我改进能力,形成反馈循环。 4.6 改进层次
从技术前史,到过去三年的工作方式变化
下面按论文公开或产品发布日期,回看本书涉及的技术变化。同名产品在不同年份可能指向模型或完整应用,阅读时可结合该节点的具体含义。
前史:今天的体验从哪里来
2017.06
Transformer:新的序列处理结构 《Attention Is All You Need》提出 Transformer。这一以注意力与并行训练为特点的架构,后来成为许多生成式模型的组成核心;原论文采用编码器—解码器结构,后来的生成模型发展出多种变体。[1]
2020.05
GPT-3:通用模型与当前示例相结合 GPT-3 论文展示了通过输入说明和少量示例完成多种任务的能力。同月公开的 RAG 论文则研究外部检索知识与生成结合,两条线分别连接本书的模型能力和当前信息。[2] [15]
2021.08
早期 Codex:代码生成模型 2021 年 8 月 10 日,OpenAI 发布 Codex 的相关介绍和 API 测试计划。当时的 Codex 是理解自然语言并生成代码的模型,是 GitHub Copilot 的技术基础之一;它与 2025 年同名 Agent 产品处在不同层次。[38]
2022
CoT、指令后训练与 ChatGPT CoT 论文展示中间步骤示例的价值,InstructGPT 论文研究如何改进指令遵循;11 月 30 日发布的 ChatGPT 把多轮对话带到易于使用的入口。这些变化分别涉及求解方法、训练和交互。[6] [3] [35]
2023—2026:从问答走向持续工作
2023
GPT-4 与长上下文:能处理的任务变宽 3 月 14 日 GPT-4 发布,复杂任务与图文输入受到更多关注;5 月 Claude 发布 100K token 窗口。更强能力与更大输入空间,让对比长文档、分析多份资料成为更常见的使用方式,也凸显了上下文组织的重要性。[36] [14]
2024.03
Claude 3 Opus:模型系列进入日常讨论 3 月 4 日发布的 Claude 3 系列包含 Haiku、Sonnet 与 Opus。这里的 Opus 是模型系列中的名称;后来的 Claude Code 则是使用模型处理开发任务的产品。能力、速度与成本也成为选用模型时常见的比较维度。[37]
2024 下半年
o1 与 MCP:求解计算和外部连接各自推进 9 月 12 日的 o1-preview 让“回答前投入更多推理计算”变得直观;11 月 25 日发布的 MCP 则尝试统一外部能力的连接方式。前者关联模型求解,后者关联系统接口。[7] [40]
2025.01
DeepSeek-R1:推理训练与蒸馏受到关注 1 月公开的 R1 论文讨论强化学习、多阶段训练和小模型蒸馏。R1-Zero 探索从基础模型直接进行 RL;R1 则结合冷启动数据与多阶段训练。[8]
2025.02—05
Claude Code 与新 Codex:从生成代码到执行任务 2 月 24 日 Claude Code 进入有限研究预览;5 月 16 日 OpenAI 发布云端软件工程 Agent Codex。读文件、改代码、运行检查与汇报结果成为产品能力的一部分,模型与 harness 的协作更容易被看见。这里的 Codex 发布日期指云端 Agent 版本的发布。[25] [39]
2025.10—12
Agent Skills:让方法与资源可以按需装载 10 月 Anthropic 介绍 Agent Skills,12 月更新为开放标准。它把说明和资源组织成可被发现、按需读取的能力包,使复用方法成为 Agent 系统的一个明确组成部分。[33]
2026.04
LLM Wiki:让整理成果持续积累 4 月 4 日 Karpathy 发布 LLM Wiki 构想,关注由模型协助维护互联知识页。它提供了一种组织外部知识的思路,可以与 RAG 组合;这里积累的是可维护、可回查的外部知识页。[17]
来源与核验说明
优先采用原始论文、官方发布和技术文档。历史节点按相应版本解读,动态文档记录核验日期。各条来源旁注明它支持的机制或事件,便于回查。
以下以原始论文、官方说明与作者原文为主;日期为发布、首次提交或注明的核验日期。版本行为可能继续变化。点击正文中的编号可定位来源,浏览器后退可回到阅读位置。
Attention Is All You Need 2017-06-12 · 提出 Transformer;原论文为机器翻译编码器—解码器架构,包含注意力与前馈网络。
Language Models are Few-Shot Learners 2020-05-28 · GPT-3 研究在不更新梯度、不针对每项任务微调的情况下,利用输入说明与示例完成任务。
Training language models to follow instructions with human feedback 2022-03-04 · InstructGPT 采用监督示范微调与基于人类回答排序的强化学习,说明指令遵循不只取决于规模。
Mastering LLM Techniques: Inference Optimization 2023-11-17 · 常见自回归模型的 prefill/decode 区别、GPU 计算与数据搬运瓶颈、KV Cache 的作用及内存开销。
vLLM — Automatic Prefix Caching 访问核验:2026-09-18 · 相同请求前缀可复用 KV Cache;主要降低 prefill 工作,不省掉新输出的 decode。
Chain-of-Thought Prompting Elicits Reasoning in Large Language Models 2022-01-28 · 带中间推理步骤的提示示例改善论文所测大模型在算术、常识及符号推理任务的表现。
Learning to reason with LLMs 2024-09-12 · o1-preview 发布;官方报告强化学习和 test-time compute 对推理表现的改善,属于指定实验与任务结果。
DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning 2025-01-22 · R1-Zero 在基础模型上直接采用 RL,R1 则结合冷启动数据与多阶段训练;论文研究推理能力蒸馏。
Hugging Face Transformers — Causal language modeling 动态文档,核验 2026-09-18 · 因果语言建模预测下一 token;文本标签按位置移位,利用原文形成训练目标。
Direct Preference Optimization: Your Language Model is Secretly a Reward Model 2023-05-29 · 可直接利用偏好对优化语言模型;区别于先训练奖励模型再进行 RL 的传统路线。
Self-Consistency Improves Chain of Thought Reasoning in Language Models 2022-03-21 · 采样多条推理路径并汇总答案,作为区别于单一路径生成的一种测试时求解方式。
Hugging Face Transformers — GenerationConfig 动态文档,核验 2026-09-18 · top-k 保留最高概率的指定数量候选;top-p 保留累计概率达到门槛的最小高概率候选集合。
Why Language Models Hallucinate 2025-09-04 · 研究语言模型幻觉与统计学习、训练和评价激励的关系;不将其解读为所有错误只有一种成因。
Anthropic · Introducing 100K context windows 2023-05-11 · Claude 100K 上下文发布节点;不采用发布文中的性能主张作为普遍结论。
Lewis et al. · Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks 2020-05-22 · RAG 将参数生成模型与可检索的非参数知识结合;本书区分原论文方案与当下广义系统模式。
Elastic Docs · Hybrid search 动态文档,核验于 2026-09-18 · 语义与词汇检索可组合,RAG 不应被等同于单一向量检索。
Andrej Karpathy · LLM Wiki 原始构想 2026-04-04 · 以持久、互联的知识页积累整理成果;这是个人知识库实践模式,并非行业标准或正确性保证。
LangChain Docs · Memory overview 动态文档,核验于 2026-09-18 · 区分会话范围状态与跨会话长期记忆;状态可持久保存,记忆包含写入与取回机制。
Anthropic · Effective context engineering for AI agents 2025-09-29 · 上下文工程在多轮任务中持续选择和管理信息;包含提示、工具、外部数据与历史。
Liu et al. · Lost in the Middle: How Language Models Use Long Contexts 2023-07-06;修订 2023-11-20 · 特定模型与检索、问答测试中的位置敏感现象;本书不把该结果泛化为所有新模型的固定规律。
Reimers & Gurevych · Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks 2019-08-27 · 句子向量可以按余弦相似度比较语义关系;正文二维坐标由编者手工设定,非论文或模型输出。
Elastic Docs · Semantic reranking 动态文档,核验于 2026-09-18 · 重排对先前检索出的少量候选重新排序;cross-encoder 一并处理问题与文档,适用于检索结果的后续细化。
OWASP Gen AI Security Project · LLM01:2025 Prompt Injection 2025 风险分类;核验 2026-09-18 · 提示注入可通过外部网页与文档影响模型行为;区分资料和指令、约束执行权限等措施可降低风险。
Anthropic — Building effective agents 2024-12-19 · 以预定义控制路径和模型动态决定过程区分 workflow 与 agent;二者可组合。
Anthropic — Claude 3.7 Sonnet and Claude Code 2025-02-24 · Claude Code 作为 agentic coding 工具于该日进入有限研究预览,与模型发布分属不同层次。
Yao et al. — ReAct: Synergizing Reasoning and Acting in Language Models 首版 2022-10-06;ICLR 版本 2023-03-10 · 推理与行动交替,使行动取得的信息帮助调整后续判断。
Anthropic — Effective harnesses for long-running agents 2025-11-26 · 以初始化、增量工作与持久产物帮助任务跨多个上下文窗口衔接。
Anthropic — How we built our multi-agent research system 2025-06-13 · 研究型 agent 通过动态多步搜索与资料综合推进开放任务;本书用它说明 Agentic RAG 的组织思路,不视为统一定义。
Anthropic — Demystifying evals for AI agents 2026-01-09 · Agent 评估需要考虑多轮工具与状态变化、执行轨迹、最终结果及多次试验。
OpenAI API — Function calling 动态文档,核验 2026-09-18 · 提供工具定义,模型提出调用,应用执行,结果返回模型,模型回答或继续调用。
Model Context Protocol — Architecture overview 文档版本 2026-07-28;核验 2026-09-18 · MCP 的 host/client/server 关系及 tools/resources/prompts;协议不规定应用如何管理上下文与使用模型。
Agent Skills — Overview 动态规范概览,核验 2026-09-18 · Skill 以 SKILL.md 和可选资源组织;按发现、激活与执行所需资源渐进加载。
Anthropic — Equipping agents for the real world with Agent Skills 发布 2025-10-16;开放标准更新 2025-12-18 · Agent Skills 发布节点、开放标准更新及文件资源按需加载的机制。
Zhang et al. — Darwin Gödel Machine: Open-Ended Evolution of Self-Improving Agents 首版 2025-05-29 · 在受限实验环境中迭代修改编码 agent 自身代码、维护候选版本并用编码基准评估;不据此推断已实现通用无限自我改进。
OpenAI · Introducing ChatGPT 2022-11-30 · ChatGPT 研究预览发布日期,多轮对话交互与后训练背景。
OpenAI · GPT-4 2023-03-14 · GPT-4 发布日期及复杂任务、图文输入能力;未将发布时图像能力描述为已向所有用户开放。
Anthropic · Introducing the next generation of Claude 2024-03-04 · Claude 3 系列包含 Haiku、Sonnet、Opus;模型系列与 Claude Code 产品相区分。
OpenAI · OpenAI Codex 2021-08-10 · 早期 Codex 为代码生成模型,发布与 API 测试计划及 GitHub Copilot 关系;区分 2025 年 Agent 产品。
OpenAI · Introducing Codex 2025-05-16 · 云端软件工程 Agent Codex 发布;包含读写代码、执行检查和汇报任务的系统能力。
Anthropic · Introducing the Model Context Protocol 2024-11-25 · MCP 首次发布日期与连接外部数据及工具的开放协议定位。
OpenAI · tiktoken 2026-09-18 核验 · 本页分词示例使用 tiktoken 的 o200k_base 与 cl100k_base 编码预先计算,结果内嵌。