跳到主要内容

《大模型应用开发:动手做AI Agent》拆解 —— 节级大纲(定稿)

这一版是审读意见改完之后的定稿。 每行写成「进来时以为…… → 出去时知道……」。 正文的节序与本表一致;有出入的地方在本文件末尾「与初稿的差异」里逐条交代。

全书主线一句话: 模型只吐一段文字 → 外面接住并真的去跑 → 把结果塞回去再问一次 → 哪一轮它不点工具就停。十三章就是把这条线上的每一格拆开。

主走查的输入分配(这条进总纲兑现表,逐行核过):

输入哪几章用它为什么是它
「玫瑰花进货价是多少?加价 5% 怎么定价」第 01、03、05 章同一个问题、三种转法:先看整圈、再看提示词那一层、最后看执行器内部
四条消息的鲜花对话(89 进 254 出)第 02、08 章书里唯一给全了用量数字的那次调用,讲账单和记忆只能用它
北京/上海/深圳三城库存第 04 章书里唯一一次「一句话点三个工具」的样本
「进价 80 元加价 20% 售价是多少」→ 96第 06、13 章托管那一套唯一一段从头到尾的真实代码;第 13 章拿它对照今天
五步接力做一份 PPT第 07 章书里唯一一趟「产内容」而不是「查东西」的任务
「查查玫瑰的库存然后给出出货方案」第 09 章书里唯一一趟需求不清的真实轨迹,8 步 6 步重复
「花语秘境的员工有几种角色 / Agent 叫什么名字」第 10 章书里唯一一处检索型问答给出了完整回答原文
「分析北京市今天的天气,写出花卉存储策略」第 11 章书里唯一一趟六轮完整的自主任务循环
「整理出一个夏季玫瑰之夜的营销活动的策略」第 12 章书里唯一一处多方对话给出了真实文本(任务改写那一句)

第 01 章 它只会吐一段文字

进来时以为 → 出去时知道
1模型很聪明,问什么答什么 → 它没有查过任何东西,答案是照着语感续写出来的;书里那张截图就是作者当场把它带歪的样子
2让它「去做」一件事 → 它能写出「我要搜一下」,但搜这个动作必须由外面的程序替它跑
3一问一答就完了 → 一问、一跑、一回填才算一轮;这一圈就是全书的骨架
4循环转几次由代码定 → 由它自己说停;「自主」这个词在这本书里唯一的落点就是这一句
5agent 是个说不清的词 → 书给了定义(能感知环境、做决策、采取行动的系统)和四大特性、四个核心组件
6上一节那套就是标准答案 → 书里同时用了两套切法,规划/记忆/工具/执行是同一圈的另一种看法(三行对照表,不展开)
7agent 是大模型带来的新东西在它之前已经有四类 agent,拿同一个鲜花定价问题走一遍,各卡在哪一步(新增,吃掉原书 1.3.2)
8这是本框架介绍书 → 作者真正的主张只有一句:操作序列不写死在代码里,而是让模型来选;配真格基金那张五级表
9感知和行动这两块本书会讲 → 多模态与具身智能各一句话带过,本书不再展开
走查「玫瑰花进货价是多少?加价 5% 怎么定价」整圈走完:Search → 那段搜索结果 → 25 * 1.0526.25 → 停

第 02 章 一次调用里到底有什么(定稿标题;初稿叫「接口那一层」)

进来时以为 → 出去时知道
1调一次模型就是发一句话 → 发过去的是一个消息数组,回来的是一个带账单的对象
2对话是连续的 → 三种角色(系统/用户/助手)拼出来的一段文字,才是它看到的全部
3它记得刚才说过什么 → 它什么都不记得;所谓记忆就是你每次把整段重发一遍
4输出不稳是模型不行 → 有个旋钮管这件事,取值 0 到 2,做 agent 拧到 0(只讲机制)
5想要它吐结构化数据就直接要 → 上下文里必须出现「JSON」这四个字母,否则接口直接报错
6回复就是一段文字 → 回复里有个「为什么停下来」的字段,后面四章全靠它
7每家接口都要重学一遍 → 一个框架把提示、模型、解析器串成三段,换模型不改代码
8框架就是一堆工具函数 → 六个模块彼此松耦合,没有固定调用顺序
9按调用次数收费 → 按 token 收费,输入输出分开计价;还有速率上限和 30 天数据保留
走查四条消息(生日送什么花/玫瑰/送货要多久)→ 输入 89、输出 254、合计 343,停止原因 stop

第 03 章 用一段提示词把循环装进模型脑子里

进来时以为 → 出去时知道
1让模型学会转圈得训练 → 一段十行的文字就够了,原文全在书里(定稿把这一节的标题从「一个 agent 的协议只有十行字」改成「让它开始转圈,只需要一段十行的文字」,理由:「协议」两个字留给第 13 章第 4 节那份共同规矩,免得一词两义)
2「思考/行动/观察」是个抽象说法 → 它是四行写死的格式,模型照着填空
3观察是模型自己写的 → 「观察:」那四个字必须由外面写;所以要给模型一条停车线
4上一轮的结果模型自己记着 → 全部原样贴回一个叫记事本的占位符里,每轮重发
5这段提示词是框架内置的 → 是从社区里按名字拉下来的一份别人写的模板
6这是工程惯例 → 它出自一篇 2022 年的论文,编号照书架核
7→8把旋钮拧到 0 就复现了 → 轨迹长度是一轮一轮长出来的,多绕两圈少绕两圈不是旋钮能关掉的(定稿里它是第 8 节:第 3 节的主走查另占了一节,后面顺延;第 02 章那处指路已同步改成「第 03 章第 8 节」)
8只有这一种转法 → 书里另列了六种认知框架,各自适合什么
走查同一个鲜花定价输入,只看提示词这一层:模型每一轮读到的那段文字长什么样

第 04 章 工具怎么接上去:一份说明书加一张调用单

进来时以为 → 出去时知道
1把函数给模型,它就会调 → 它永远不执行你的函数,它只写一张调用单
2模型靠函数名猜用途 → 靠你写的那句说明;说明写歪了它就挑错
3交给模型的是代码 → 交给它的是一份 JSON 格式的说明书,三件套:名字、说明、参数表(往后指:这份说明书后来被标准化了,第 13 章第 4 节)
4一次只能点一个工具 → 一次响应里可以带三张调用单,每张各带一个编号
5结果随便塞回去就行 → 每条结果必须用工具角色、并带上对应的编号
6拿到工具结果就完了 → 还要第二次把整段丢给模型,它才吐人话
7三个调用会并行 → 书里是顺序 for 循环;能不能并行今天各家怎么答,看书架
8JSON 模式保证结果对 → 它只保证是合法 JSON,不保证符合你要的结构;还有三条坑
走查「北京、上海和深圳的鲜花库存是多少?」→ 停止原因 tool_calls、三张单、95 进 67 出;回填后第二次 235 进 90 出

第 05 章 转圈的那个东西叫执行器

进来时以为 → 出去时知道
1那段脚本里有个 while 循环 → 二十来行里一个循环都没有;转圈的是被一行带过的那个对象,书直到 6.5 才把它拆开
2执行器是个调度器 → 它就是一条链,循环体在 _call
3一步是一次工具调用 → 一步 = 问一次模型 + 跑一次工具
4模型返回一段文字,你去解析 → 返回的是一个对象:工具名、工具输入、原始文字三样都在里面
5出错就抛异常 → 执行器碰到错不抛,把错变成下一份输入;两条错各自怎么兜,只有一条留了开关(合并原第 5、6 节)
6退出条件是「答对了」→ 只有一条:这一步的产出是不是「结束」那个类型
7计算器就是算术 → 它内部还是在调模型,只是让模型写表达式、交给数值库跑
8工具出错都被兜住了 → 只兜「工具不存在」和「格式解析不出来」;工具自己抛异常,书里没讲(补书架的做法)
9照书敲就能跑 → 今天同名函数有两个来源,而且都劝你别用了;还有一个默认 15 的上限书里没提
走查第三次用同一个鲜花定价输入,这次逐行走执行器内部,每一步写出真实字串

第 06 章 托管的那一套:助手、线程、运行

进来时以为 → 出去时知道
1上下文得自己拼 → 这一套里不归你管了,代价是你也控制不了它花多少钱
2一个对象就够了 → 四个名词:助手、线程、消息、运行,各管一段
3线程属于某个助手 → 两者技术上互相独立,一个线程可以换助手
4调用完就有结果 → 运行有一张状态图,创建出来先排队
5接口会等你 → 它立刻返回,你得自己转圈问它好了没
6状态只有成功和失败 → 还有第五个:它停在那儿等你回话;不回它,程序就永远转下去
7回话之后就完事 → 提交结果后运行回到排队状态,再跑一段才出最终文字
8这套接口现在什么样 → 官方主推已经换成另一套;弃用的具体状态我们没核到,照实写(不承诺两处互证)
走查「进价 80 元加价 20% 售价是多少」→ 排队 → 进行中 → 完成 → 读回「96 元」;另起一处走 101 次轮询那次死循环

第 07 章 让它自己产内容:五步接力做一份 PPT

进来时以为 → 出去时知道
1agent 就是查东西的 → 这一趟是产东西,每一步的产出都是下一步的输入
2画图要写代码 → 一句话交代要求,它自己写代码画完再把文件给你
3它一次就成了 → 它中途失败过两次(读不出文件、日期解析不了),自己换方法重试
4见解要人来写 → 它看着自己刚画的图写了两句
5标题也一样稳 → 同一句指令跑两次,两个不同的标题
6配图得找设计 → 一句公司简介喂进去,画图模型出一张首页图
7拼 PPT 得有人排版 → 给它两段模板代码 + 素材,它把文件生成出来
8文字模型只处理文字 → 这一趟里出现了三种产物:数字、图片、文件
9跑两次结果差不多 → 五步接力,每一步的偏差都被下一步继承,整趟不可复现;验收只能落到人工抽检(书架:评测)
走查五步全程,真实产出:两句见解原文、两次运行的两个标题原文

第 08 章 它记得住什么、记不住什么

进来时以为 → 出去时知道
1记忆就一种 → 书里数了四种,是四件不同的事
2训练过就等于记住了 → 那是压进一大堆数里、查不出出处的一种记法;这就是它敢编一个花价的原因
3短期记忆是模型的功能 → 就是你这一轮重发给它的那段文字,没有别的
4长期记忆是模型自己长的 → 是外面挂一个库,用的时候搜出来贴进去
5微调也是一种记忆 → 它是把知识焊进参数里,改一次要重训一次
6中间步骤攒着不要紧 → 记事本一路累加,书里没讲长任务下怎么压
7这一层到今天没变 → 今天这一层长成了两种明确做法(书架:上下文当内存/库当硬盘;抽事实去重落库 + 三路合并)
走查第 02 章那四条消息逐条问「这一句是从哪来的」,并算出接着问第三个问题要重发多少

第 09 章 先列清单,再一条条执行

进来时以为 → 出去时知道
1一圈圈转下去总能成 → 转久了提示词越来越长,模型开始不堪重负
2那就多给点提示 → 换个分工:先把步骤全列出来,再一条条执行
3规划是代码干的 → 规划者是一个模型,执行者也是一个模型,而且执行者本身就是个转圈的 agent
4计划会很粗 → 一个真实的计划有 8 条,读起来相当漂亮
5计划漂亮结果就好 → 8 步里 6 步都在查同一个库存,6 次都拿回 100;这一趟真正需要查库存的只有 1 次
6中途发现不对会改计划 → 清单一旦列好就改不动了,第 5 步已经说了「没需求数据没法比」,第 6、7 步照样往下走
7需求补全就没问题了 → 补全后 5 步跑通,但它自己编了一个基础价和一个加价比例,得出「50 朵玫瑰花的价格是 12.0」
8至少不会跑飞 → 没有轮数上限、没有连错熔断、没有打转检测,书里一条都没有
9待办清单是标配 → 今天它被从默认里拿掉了,要用得自己打开(书架)
走查「查查玫瑰的库存然后给出出货方案!」8 步全程,每步写出真实动作与观察值

第 10 章 让它去查它没见过的资料

进来时以为 → 出去时知道
1模型不知道是因为它笨 → 这份资料训练时根本不可能在里面:私有、且新;书里问「花语秘境的老板是谁」就是这个
2那就把资料训进去 → 四条路摆在一起,难度和成本差一个数量级
3检索增强是个模型 → 它不是模型,是「先搜一遍,把搜到的贴进问题里再问」这个动作
4建索引很复杂 → 五行代码:读文件、建索引、建查询引擎、问、存
5索引就是关键词表 → 是把每段文字变成一串数,按意思找而不是按字面找
6全都塞给模型 → 只取相似度最高的几段,书里设的是 3
7一个库只能问一个问题 → 把查询引擎包成工具,agent 就能自己挑该问哪个库
8检索准不准看感觉 → 今天有一套按字段打分的做法(书架)
走查「花语秘境的员工有几种角色?」「花语秘境的 Agent 叫什么名字?」→ 真实回答原文含「花语灵」;另起一处走两家电商财报那趟(两个工具、similarity_top_k=3)

第 11 章 让它自己给自己派活

进来时以为 → 出去时知道
1任务是人给的 → 这一支只给目标,任务由它自己生
2一个模型分饰三角很虚 → 三个角色各有一段提示词:执行、生成新任务、重排优先级
3第一轮会先干活 → 第一轮它先给自己列了一张 6 条的待办清单
4任务只会越滚越多 → 编号一路涨到 8 → 14 → 18,「只增不减」是排序那一步的设计意图
5至少事实是真的 → 第 2 轮它报了「北京 18°C、湿度 70%」,而它从头到尾没有任何天气工具
6提示词能管住它 → 第 5 轮任务表从 18 号掉到 11 条并被整体重编号,而排序提示词明写「不要删任何任务」
7六轮之后会有结论 → 最后一轮的产出又绕回「先分析天气、再列清单」
8另一支不一样 → 另一支会联网:搜太宽 → 自己改关键词重搜;这一支明确不搜
9它会自己知道什么时候停 → 唯一的出口是轮数上限,书里设的是 6
10这两个项目还是当年那样 → 今天一个已归档转型、一个变成了拖积木连数据流图的执行引擎(书架)
走查「分析一下北京市今天的天气,写出花卉存储策略」六轮全程,每轮写出任务表条数、编号区间与真实产出

第 12 章 让几个 agent 互相说话

进来时以为 → 出去时知道
1一个模型自问自答就够了 → 两个角色互相下指令,能省掉人来写引导语这一步
2任务直接交给它们 → 中间先有一个改写任务的角色,把一句模糊的话改具体
3两个 agent 是平等的 → 一个只下指令、一个只给方案,分工写死在提示词里
4让它们聊就行 → 三样硬拦:永远不要角色互换、一个暗号收尾、外面还有一个 30 轮上限
5谁说话是轮着来的 → 「下一个谁说话」本身是一个可选的策略(书里没有,书架有:轮流、让模型挑、按交接单接力)
6多方协作就是群聊 → 另一种连法是公共板 + 谁订阅谁被叫醒(书里只写到订阅方法名,机制在书架)
7多方就是聊天 → 另一支让两个 agent 一写一跑,错了自己装包重来
8角色是虚设的 → 另一支把一家软件公司的六个岗位写成六个 agent,按流程一棒接一棒
9这三个框架都还活着 → 一个进了维护模式、一个长出了动态调度层、一个在两人对聊之外又长出一层任务分派(书架)
走查「整理出一个夏季玫瑰之夜的营销活动的策略」→ 任务改写后的真实原文;承重步落在三样硬拦上(两个 agent 的对话原文书里只给了截图,照实说明)

第 13 章 这本书站在哪个时间点

进来时以为 → 出去时知道
1这是本讲通用原理的书 → 它封笔在 2024 年初春,书里每一处「最新」都要按那个时间读
2作者只讲技术 → 他给了两条预测:炒作周期上 agent 落在哪一段、以及规律会跨语言迁移
3代码照敲就能跑 → 有三处已经搬家或改名,其中一整个实验模块已经不在主仓里(书架)
4每接一个工具写一遍胶水 → 那份说明书后来被做成了一份共同规矩(书架;兑现第 04 章第 3 节的钩子)
5循环就是一个 while → 今天它外面多了一层:状态图 + 存档,能断点续跑(书架)
6附录那张论文表可以照抄 → 里面的编号被系统性排错了,一个都不能抄(判断块;能核到的照书架写,核不到的照实写「没核到」)
7书完全没讲怎么评怎么看 → 它讲了:装框架就带上那个平台、四个环境变量、日志里能看到每次链运行的轨迹;它没给的是另外三样(书架)
8附录的六条方向都很远 → 挑与本书主线相关的两条(人机混合、伦理内化)对照今天
9这本书过时了 → 主走查:拿 4.3 那段真实代码逐行对照今天,哪几行还在、哪几行换了名字、同一件事在后继接口上是哪几行
10那还剩什么 → 四条仍然成立的判断,以及为什么它们不会随接口一起过时
走查4.3 那段助手代码(助手 + 线程 + 「进价 80 元加价 20% 售价是多少」+ 轮询到 completed + 读回「96 元」)逐行走「今天照敲会发生什么」

与初稿的差异(审读意见逐条落实)

审读意见怎么改的
第 13 章第 7 节把「书完全没讲评测」写成结论 —— 事实错误改成「书给了一个入口,但只教了怎么点开看」:先落地 3.2.4 的真实状态,再说它没给的三样
原书 1.3 整节(8.6k 字符)没有落点 —— 覆盖不全第 01 章新增第 7 节「在它之前,人们是怎么让机器办事的」;炒作周期与泛化两段挪到第 13 章第 2 节
第 13 章 walkthrough 是审计清单不是走查 —— 缺主走查换成 4.3 那段真实代码逐行对照今天,每步写出具体字串
第 09 章「8 步里 4 步」—— 数错了改成 6 步,并配参照物:真正需要查库存的只有 1 次
第 11 章「只增不减」—— 与书里轨迹相反改成「只增不减是设计意图,而第 5 轮 18 号 → 11 条当场打脸」
第 05 章第 5、6 节「出去时知道」是同一句 —— 两节重复合并成一节;腾出的位置补「工具真的抛异常怎么办」
第 10 章第 1 节与第 01、08 章撞第三遍 —— 两节重复换落点:这份资料训练时根本不可能在里面(私有 + 新)
第 03 章第 7 节与第 07 章第 7 节同一条落点 —— 两节重复分工写死:第 02 章第 4 节只讲旋钮机制;第 03 章第 7 节讲轨迹长度这一层;第 07 章第 9 节讲逐级放大
第 05 章第 1 节「40 行」书里没有、after 说书没讲 —— 事实错误改成「6.4 那段二十来行的脚本」,after 改成「直到 6.5 才拆开,本章走的就是那次拆解」
第 01 章 walkthrough 承诺「贯穿到第 05 章」—— 兑现不了改成「第 01、03、05 三章走同一个输入」,第 02、04 章开头各交代一句为什么换输入
第 12 章第 5、6、9 节漏了现成拆解 —— 没用上书架第 5、6 节各补一条 ② 类脚注;第 9 节改成盘三个框架,补上第 12 章主走查用的那个
第 04 章全章一条 ② 类来源都没有 —— 没用上书架第 3 节末尾挂钩子(记进兑现表)、第 7 节接上前沿书架的现状
论文编号照书抄必错 —— 事实错误凡要落编号的地方一律不抄书里的数字;能在书架 clone 里找到出处的照书架写,找不到的照实写「没核到」
第 06 章第 8 节「两处互相印证」无处兑现 —— 其它降级成能核到的说法,弃用的具体状态照实写「没核到,也不写日期」
前言五级表、1.2 四大特性、1.4、1.5.3、附录 A.2/A.3 没落点 —— 覆盖不全五级表进第 01 章第 8 节、两套切法进第 01 章第 6 节、1.4 与 1.5.3 进第 01 章第 9 节、A.2 并进第 13 章第 6 节、A.3 挑两条进第 13 章第 8 节
第 10、12 章走查主体落在书里的图上 —— 其它第 10 章主走查改挂 3.3.3 那次真实运行;第 12 章把「全部是真实产出」改成照实说明,承重步落到三样硬拦上

定稿与本表的三处出入(交稿时说明)

  1. 第 02 章的标题改了。 初稿叫「接口那一层」,定稿叫「一次调用里到底有什么」—— 理由是「接口」这个词如果出现在标题上,读者第一次见到它时身边没有解释, 而这本书的读者未必知道它指的是「两个程序之间约好的说话方式」; 这个词在正文第 2 节有完整解释,标题就不占它了。
  2. 第 03 章第 1 节的标题改了,而且那一章的节号整体顺延一位。 初稿第 1 节叫「一个 agent 的协议只有十行字」,定稿叫「让它开始转圈,只需要一段十行的文字」; 同时主走查在定稿里单独占了第 3 节,所以初稿的第 7 节(旋钮治不了的那一层) 在定稿里是第 8 节。第 02 章里那处「那是第 03 章第 X 节讲的」已同步改过, 并记进了总纲的兑现表。
  3. 每一章的节数比本表多一到两节。 本表只列了「进来时以为 → 出去时知道」的承重节; 定稿里每章末尾还有「可带走的」和「原文地图」两节,那是标准规定的固定结构,不在本表内。