全局认知
建立模型、Agent、上下文与工程系统的完整地图
沿着对象与状态理解本章
先沿着实际对象追踪:用户文字不是消息包,消息包不是Token数组,编号也不是Embedding。把这四种对象分别认出来,后面的shape和API角色才有落点。下图的词表是独立教学约定;不要把它当成所有Tokenizer的真实结果。
下方图解的固定输入在“输入与适用条件”中声明。它用于解释本章机制,不与本章其他独立例子的数值暗中接续。
文字、字节、Token、编号是四件事
为什么不能把“一个汉字”当成“一次生成”?
Token是分词规则选出来的片段,编号是它在词表中的地址。一个Token可以跨越多个字符,也可能只覆盖字符编码的一部分。教学中把“学习”合成一个Token,只是明确的演示规则,不能当成所有模型的实际分词。
输入与适用条件:本图使用人为词表:PAD0、我1、爱2、学习3、你4、!5;不演示真实BPE训练。
1 / 6 · 原文字
窄屏可左右滑动图形,或点击“放大图形”。文字解释紧随图后。
先确定待编码原文,两句之间不能直接接起来当作同一人的上下文。
本步状态由图形与说明共同给出。默认静止。用“下一步”看完解释再继续;播放到最后一步自动停止。键盘聚焦播放器后,可用左右键逐步查看、空格播放/暂停。图中颜色辅助区分,含义同时用文字注明。
为什么需要
弄清计数单位,可避免上下文预算、输出长度和界面刷新混为一谈。
怎样实现
用目标模型配套分词器编码和解码,并分开观察字符数、字节数、Token数。
可能的代价与误解
更换分词器后沿用旧编号,会读到错误的词表项。
如何判断是否做对
对实际输入做一次往返编解码,并按所用分词器规则处理特殊Token。
先建立完整系统模型
把AI用于工作,不只是输入一句话再等待答案,而是建立一个能够获取信息、形成判断、执行动作、检查结果的系统。先区分四个对象:模型根据输入计算输出;Harness(运行框架)组织调用和执行;环境提供文件、终端、数据库与业务系统;任务目标决定什么才算完成。课程与Agent工程资料分别解释这些不同层面。[S001][S003][S004]
用户目标、约束与当前状态
↓
Harness选择本轮需要的信息
↓
LLM生成回答或候选工具调用
↓
程序检查参数、权限并执行工具
↓
环境返回观察,状态发生变化
↓
更新上下文 → 继续执行或验证结束
这是一张教学职责图,不是某个产品的完整内部实现。模型能访问代码,不代表代码已经进入本轮输入;文件被读取,不代表其中每条约束都被正确利用。要分别追踪“可以访问、确实读取、正确理解、已经验证”,不能把其中一个状态当成全部。
一个贯穿全书的工程案例
本书使用一个假设任务:为构建流水线增加exclude,使它跳过指定目录,同时不改变未配置该字段时的旧行为。案例不是对用户真实仓库的审计,也不代表某产品已完成这些修改。
任务涉及参数语义、配置入口、路径基准、过滤时机、兼容性和测试。如果模型说“已修复”,仍要检查补丁是否真正应用、对应哪一版代码、测试是否在修改后运行、是否覆盖默认行为。完整工作证据比流畅的完成声明更重要。
本书采用的工程分析方法是:遇到错误,先寻找第一处关键断点。没有读取正确文件是证据供给问题;读取后误解条件是推理问题;补丁未应用是执行问题;代码改错却未发现是验证问题。相同的最终失败,可能需要完全不同的修复。
一次模型调用与一个完整任务
一次调用处理有限输入并产生输出;一个任务可能涉及许多次模型调用。第1轮选择搜索,第2轮读取文件,第3轮产生修改,第4轮根据测试继续。各轮的信息不同,不能只看用户最初的Prompt解释整个任务。Codex公开的Agent Loop正是这种模型与工具交替的组织方式。[S004]
界面、CLI和IDE扩展是交互入口;模型、工具与状态管理是执行部件。相同界面不保证相同上下文,不同界面也可能共享核心执行逻辑。具体是否共享,应依据产品说明或某个版本源码,而非从外观推测。
五类容易混淆的“知识”
| 对象 | 存放什么 | 怎样变化 | 不能替代什么 |
|---|---|---|---|
| 模型参数 | 训练形成的语言和任务规律 | 训练、微调 | 最新外部事实 |
| 本轮上下文 | 指令、证据、历史与状态 | 输入组装 | 跨会话持久化 |
| 外部知识源 | 源码、文档、数据库 | 源系统更新 | 正确检索与解释 |
| 执行状态 | 已做动作、测试、待审批事项 | 工具与Harness更新 | 实际环境核验 |
| 计算缓存 | 可复用的中间计算 | 服务端策略 | 经验记忆 |
In-Context Learning利用输入示例改善当前表现,不要求在该次推理中更新模型权重。因此,“告诉模型十个例子后它做对了”不等于永久学会。KV Cache和Prompt Cache同样不是把业务知识写进参数。[S015][S036][S039]
从最小有效系统开始
已知步骤的工作流与动态Agent可以混合。参数校验、测试执行、补丁应用适合确定性程序;未知Bug的调查方向可以由模型决定;发布、删除等高风险副作用仍需要明确授权。不要为了“更像Agent”而把成熟的控制流全部改成概率判断。[S003]
一个原创反问是:去掉这个环节,会发生什么具体错误?如果答案只是“不够专业”,还不足以支持增加它;如果缺少权限校验会泄露凭据,则有明确保留理由。这个方法用于判断工程必要性,不是某篇论文证明的普遍定律。
本章自检与答案
问题:读取源码后仍修改错误,一定是检索问题吗?不是。可能读取范围不足,也可能误解、执行或验证出错,应检查证据、补丁和测试。
问题:把架构写进AGENTS.md是否属于微调?不是。只要运行时读取而未训练参数,它属于上下文供给;是否加载取决于Harness。
问题:学习完成的标准是什么?能追踪一次任务的信息、动作、状态与验证,并判断该改模型、Prompt、检索、工具还是流程,而不只是会背技术名称。
逐项中文讲义
保留拓展阅读目录编号与A/B/C优先级;每项包括机制解释、边界与原创练习。
A0.1 · LLM课程:概念与工具全景
对应资料:Hugging Face LLM Course
Hugging Face课程把Tokenizer、模型、数据与任务接口连接起来。理解一个高层pipeline时,应继续追踪输入如何变成ID、模型怎样产生张量、后处理怎样还原为结果。调用成功不等于已经理解内部机制。
Token ID只是词表索引,数值大小不代表语义距离。模型输出也可能是分类分数、隐藏表示或生成Token,不同任务头的语义不同。一个分类模型不会因为使用了Transformer就自动运行Agent循环。
从文本输入到工具结果分清边界
输入与条件。任务是询问config.txt的timeout,文件内容为3,单位未提供。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1模型输入 | 先只有任务和工具说明 | 还不知道文件值。 |
| 2工具结果 | 程序读到timeout=3 | 新事实来自文件。 |
| 3回答边界 | 可以报告数值3 | 不能无依据补“秒”。 |
把过程连起来。每一步问“这份信息从哪里来”,就能分清模型与系统。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:用同一意思的中文、英文与代码表达,分别记录输入长度、特殊符号和预期输出形式。不要使用固定汉字/Token比例,真正计数依赖配套Tokenizer。再把工具调用结果加入上下文,指出这是新增输入而不是参数更新。
完成标准是能把一次调用拆成编码、计算、解释三个阶段,说明错误可能出现在哪一层。课程是基础入口,不需要先读完全部训练内容才开始构建小Agent,但不能把工具库封装当作底层知识的替代。
拓展阅读目录事实依据 [S001] · 练习与工程推导为本书独立编写。
A0.2 · 图解GPT-2:自回归模型
对应资料:The Illustrated GPT-2
图解GPT-2以Decoder-only结构解释自回归生成。已有序列进入模型,当前位置产生下一Token分布,选中的Token又成为后续输入。它是理解聊天生成的桥梁,但不代表所有现代模型保留GPT-2的全部组件与参数。
逐Token输出不意味着模型一次只利用一个Token。预测可以依赖完整可见前缀;缓存使部分历史计算可复用。第一步处理长提示与后续生成在计算安排上也不同。
两个输出Token分两次决定
输入与条件。输入A/B后,先选出C,再根据A/B/C选D。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1第1次 | 依据输入A/B的末位置状态 | 得到C。 |
| 2第2次 | 把C送入下一步并延续缓存 | 得到D。 |
| 3停止 | 若生成上限为2 | D不必再前向处理才能展示给用户。 |
把过程连起来。输出不是先在隐藏空间写好完整句子,再统一翻译出来。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:为“文件不存在,因此需要……”列出几个合理续写,再问它们是否证明真实文件状态。答案是否定的,模型可以按语言模式补全,而文件存在性需要工具观察。继续把“文件其实存在”的新证据加入,分析下一轮条件分布为何变化。
完成标准是区分条件生成、证据验证与工具执行。不要把流畅续写解释成模型查过磁盘,也不要把后来依据证据改口描述成模型参数在会话中重新训练。
拓展阅读目录事实依据 [S002] · 练习与工程推导为本书独立编写。
A0.3 · 构建有效的智能体
对应资料:Building Effective Agents
Building Effective Agents区分预设流程与动态Agent,并讨论链式、路由、并行、协调工作者和反馈等模式。文章强调从简单方案开始,复杂性应有任务需要,而不是把所有模式串成固定长流程。
原创例子:字段提取可用一次模型加校验;未知Bug需要依据观察调整搜索;互不依赖的材料可并行研究。三者都调用LLM,却不应采用相同编排。
每种模式都有反例。链式会传播前一步错误;路由会分错领域;并行增加整合;评估循环可能没有新证据,只反复修饰表达。只有识别这些代价,才能判断额外步骤是否值得。
练习是为自己的一个任务画最短可行流程,再逐个提出“去掉这一环会造成什么具体失败”。若不能给出实际风险,就先不要增加。完成标准是依据不确定性与验证成本选模式,而不是依据流行架构名称。
固定工作流与Agent的分岔点
输入与条件。流程收到测试失败日志,候选动作有读文件、修改、重测。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1固定工作流 | 预先规定read→patch→test | 动作顺序由程序决定。 |
| 2Agent循环 | 模型看到结果再决定下一动作 | 可能先补读调用方。 |
| 3共同边界 | 两者都必须校验写权限和测试结果 | 自主选择不等于无限执行。 |
把过程连起来。区别在谁决定控制流,不在是否调用了LLM。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
拓展阅读目录事实依据 [S003] · 练习与工程推导为本书独立编写。
A0.4 · 展开Codex智能体循环
对应资料:Unrolling the Codex Agent Loop
Codex Agent Loop展示模型、工具与用户之间的循环组织:组装输入,接收动作或回答,执行工具,把结果回填,再继续。模型提出动作与环境已经执行是两种状态,必须分开。
把“用户输入”扩展为“每轮实际输入”,才能解释后期为何出现源码、日志与压缩状态。第一轮不天然拥有整个仓库,工具返回构成增量证据。模型生成Shell参数,也不说明命令成功。
用户的一句话变成多轮请求
输入与条件。请求“修复配置”后,模型先请求读文件。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1轮1 | 任务+工具定义 | 输出读取提议c1。 |
| 2轮2 | 加入c1返回的文件内容 | 输出修改提议c2。 |
| 3轮3 | 加入写入和验证结果 | 才能形成有证据的完成说明。 |
把过程连起来。工具反馈改变下一轮输入,因此一个任务通常不止一次推理。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:画搜索、读取、修改、测试四次动作之间的消息边界,标明每条边新增的信息。删除测试返回后,指出“通过验证”的结论失去了什么依据。若只保留模型说过的话,而没有执行观察,就无法建立可靠审计链。
本条用于全局认知,后面产品章进一步讨论会话原语与上下文。它不是对Codex隐藏系统Prompt的猜测,也不声称已审计当前完整源码提交。
拓展阅读目录事实依据 [S004] · 练习与工程推导为本书独立编写。
B0.5 · 从零构建语言模型的知识版图
对应资料:Stanford CS336
CS336从零构建语言模型,把Tokenizer、架构、数据、优化、推理系统和评测串起来。它的价值是展示各组件相互约束,而不是让学习者只背注意力公式或参数量。
词表影响序列长度,序列影响计算和缓存,数据影响能力,预算决定可行规模,评测决定是否真的进步。某个局部指标更好,不代表整套系统更适合业务。
从零实现时最小验收顺序
输入与条件。准备一个只含A/B/C的教学语言模型。
| 步骤与对象 | 内部动作 | 中间结果 / 新状态 |
|---|---|---|
| 1先表示 | A/B/C有稳定编号,形状可检查 | 不要先调学习率。 |
| 2再计算 | 前向给合法概率,损失可计算 | 确定数值链路。 |
| 3最后训练 | 反传使参数改变,独立样本检验 | 训练损失下降不等于泛化通过。 |
把过程连起来。把整个系统拆成可核验中间对象,定位错误会更直接。
边界与反例。本表是独立教学构造,用来解释该研究主题的一个局部机制,不是原论文实验或产品实测;完整方法与适用条件仍需结合本节正文。
依据与适用范围:[DERIVE]。示例输入和场景由本书明确设定。
原创练习:在有限计算预算下,比较增加参数、增加训练数据、改善清洗和改变序列长度。先说明目标是训练损失、下游任务还是总服务成本,再讨论取舍,不凭空给出提分比例。
第一轮学习只需掌握依赖关系。深入时再实现优化和系统实验。完成标准是能解释“为什么更大不一定更划算”,并把训练系统知识与后续Agent中的成本、延迟和能力边界联系起来。
拓展阅读目录事实依据 [S005] · 练习与工程推导为本书独立编写。