跳到主要内容

智能体与记忆:会自己走几步的模型

这一章讲三件事: 为什么说 RAG 系统和 ChatGPT 本来就是智能体——以及「工具」的准确含义和三条权限红线; 规划为什么是个搜索难题、怎么把「想」和「做」拆开,以及一套罕见硬货——三类各带可数指标的故障清单; 模型的三种记性(内部知识、短期、长期)和把上下文管好的三种策略。 它在全书的位置:上一章的检索器是「问一次查一次」,这一章让模型自己决定查什么、查几轮、什么时候停;下一章开始讲第三种适配技术——动权重的微调。

1. 顶层全景:智能体不是玄学,是个组合

「智能体」这个词被营销聊坏了,书里把它拉回教科书定义: Russell & Norvig 把 AI 领域定义为「对理性智能体的研究与设计」;智能体指任何能够感知其环境并作用于环境的事物1

按这个定义,你已经在前面几章见过好几个智能体了:

ChatGPT 环境 = 互联网 + 你的对话 动作 = 联网搜索、执行 Python、画图
RAG 系统 环境 = 你的文档库 动作 = 检索、读块、作答
SWE-agent 环境 = 一台带终端的计算机 动作 = 浏览仓库、搜索、编辑代码

图说:智能体 = 环境 + 动作集合。给模型接什么工具,它就是什么智能体。

上一章的 Kitty Vogue 电商就是现成的走查素材:面对「预测 Fruity Fedora 未来三个月的销量」,系统自己走了一条八步的路——推理任务 → 生成 SQL → 执行 → 推理(发现缺历史营销数据)→ 再生成 SQL → 再执行 → 生成预测 → 判断完成2。**「自己决定下一步」**就是智能体与单纯问答的分界线。

还有一个冷静的注脚:智能体对模型能力要求更高,原因有二——错误的累积效应(每步 95% 的准确率,10 步后整体只剩约 60%,100 步后约 0.6%)和风险更高(写动作会改真实世界)。业界一句刻薄话:有些智能体「只擅长烧光你的 API 配额」3

2. 工具:三类,一条红线

工具既帮智能体感知环境(只读动作),也帮它作用于环境(写入动作)。书里分了三类4:

类别干什么例子
知识增强把模型不知道的信息递进来检索器、SQL、内部 API、网页浏览(防知识过时,但会接触垃圾信息)
能力扩展补模型算不动的活计算器(199999÷292)、日历时区、代码解释器、文生图、文字识别(从图片里认字的那类工具)
写入动作修改外部世界改数据库、发邮件、银行转账

红线只有一条,但书里说得极重:写入动作就是权限管理——正如你不会授予一名实习生删除生产数据库的权限,你也不应该允许一个不可靠的 AI 发起银行转账5

「模型用工具」这项能力的行话叫函数调用:把工具注册成函数,模型输出「调哪个函数、参数是什么」,由系统代为执行后把结果喂回6。具体流程见 §4。

3. 规划:一个搜索难题,先想后做

3.1 任务 = 目标 + 约束

书里的定义很清楚:任务由目标和约束共同定义——「预算 5000 美元,规划从旧金山到印度的两周旅行」,目标是方案,约束是钱袋7。好方案与坏方案有优劣之分(「融不到资的公司」的方案远多于「融资 10 亿」的,先筛后者更高效),所以规划值得拆成独立环节。

3.2 想与做解耦

核心工程决策:先生成计划 → 验证计划 → 再执行。验证有两种:请 AI 裁判评审;或者用不需要 AI 的土规则——行话叫启发式(拍脑袋定死的几条检查)。

最常用的两条土规则:计划里调用了不存在的工具?步数超过阈值(事先定好的上限)?不合格就重新生成。还可以并行生成多个计划,让评估器挑最有希望的——又是延迟换质量的权衡8。人可以在三个阶段中的任意一处插入:专家给宏观计划让智能体细化;高风险动作交人批准9

3.3 为什么难:模型缺的不是动作清单

学界对「基础模型到底会不会规划」有真实分歧。LeCun 认为自回归模型做不了规划;Kambhampati 的诊断更细:LLM 擅长提取「一般规划知识」,却拿不出可执行的具体计划——「生成的计划在普通用户看来合情合理,一旦执行就出交互问题」10

书里给了一个漂亮的重述:规划的核心是一个搜索问题——在通往目标的多条路径之间搜索,预测每条路径的结果,选最有希望的。而预测结果需要「执行这个动作之后世界会变成什么样」的模型;有研究(Hao 等 2023)论证 LLM 恰好内含大量世界信息、能充当这种「结果预测器」,这是乐观派的依据11

3.4 函数调用的流程与两个坑

流程四步:创建工具清单(函数名、参数、文档)→ 每次请求声明可用工具 → 模型返回函数与参数 → 系统执行并回填结果。书里的例子:问「40 磅是多少千克」,模型返回一次工具调用——指定函数 lbs_to_kg,参数 {"lbs": 40}——由系统执行后拿回千克数12

两个坑值得抄在墙上13:

  • 参数往往要从前一步输出里推断(第一步拿到日期 "2030-09-13",第二步才知道 start_date 该填什么);信息不足时模型会,猜错就是幻觉——无效函数名、错参数值都由此来。作者的电令:务必要求系统报告每次函数调用所用的参数值,并人工核查;

  • 工具清单会变:get_time() 改名 get_current_time(),提示词和示例全得跟着改。解法是让计划用自然语言写(「获取当前日期」),另配一个翻译器把自然语言翻成函数调用——翻译比规划简单,弱模型即可胜任。

计划粒度本身也是权衡:细计划难生成易执行,粗计划易生成难执行,解法是分层规划(先季度、再月度)14。控制流(顺序/并行/条件/循环)则决定计划的表达力:并行执行(同时查 100 个产品价格)能显著降延迟;但在 AI 智能体里,控制流的分支条件由模型判断——非顺序的计划更难生成也更难翻译,选框架时要查它支持哪种15

3.5 两个现成循环:ReAct 与 Reflexion

不用从零发明循环,书里给了两个范式16:

  • ReAct(2022):「推理与动作交替」——每步先写思考(规划),再执行动作,再分析观察(反思),循环到认为完成。它把规划与反思合并在一个输出格式里,靠示例教模型按格式走;

  • Reflexion(2023):把反思拆成两个模块——评估器判成败,自我反思模块分析败因,然后生成一条新「轨迹」(即新计划)再试。书里的代码例子:第一版代码没过全部测试,反思出「没考虑全负数组」,第二版修正。

作者的评语:反思实现便宜、提升惊人,代价是延迟与 token 成本——中间步骤越多,等得越久、花得越多17

3.6 工具选择:不是越多越好

从 Toolformer 的 5 种、Chameleon 的 13 种,到 Gorilla 直接从 1645 个 API 里挑——工具越多能力越强,但描述会撑爆上下文、选择难度也上升。书里给的选法:对比不同工具集的表现;做消融实验(移除某工具,性能不降就删);找出常出错的工具;画工具调用分布图。Voyager 甚至让智能体把好用的「技能」(代码程序)存进技能库日后复用18

4. 硬货:三类故障,每类都能数

这是本章最值钱的部分——智能体评估不该问「感觉聪不聪明」,该问「坏在哪一类、坏几次」。书里把故障分成三类19:

一、规划故障——计划本身是错的。最常见的「工具使用失败」细分为三档:调用了无效工具(清单里根本没有 bing_search)、工具有效但参数个数错(lbs_to_kg 被塞了两个参数)、参数个数对但数值错(该填 120 填了 100)。三档的排查手段完全不同。此外还有:目标失败(要河内给成胡志明市)、时间约束(资助申请在截止日之后才写完,价值归零)、以及最有趣的一种——反思错误:智能体确信自己完成了任务,实际没有。书里的例子:要求把 50 个人分进 30 个房间,它只分了 40 个人,却坚称做完了20

对应的可数指标:有效计划的比例、平均生成几个计划才出一个有效的、无效工具/无效参数/错误参数值各自的频率21

二、工具故障——计划对,工具层出错:工具输出本身错、翻译模块错、或压根缺工具(没接互联网就查不了股价)。检测靠每工具独立测试、打印每次调用与输出;「缺工具」的判定需要和人类专家对表——看人在同类任务里用什么22

三、效率故障——做对了,但太贵太慢。三个测量:平均多少步完成一个任务、平均成本多少、每个动作耗时多久。和人对比时要当心:访问 100 个网页对人低效、对能同时抓取多个网页的智能体却是举手之劳——人和 AI 的高效操作不是同一套23

判断(我们的,不是书里的): 这份三分类清单真正的用法不是「评估时照着数」,而是「设计时就照着防」:给写入动作配审批(防写入失控)、给反思配外部校验(防「50 人分 30 房」式的自信)、给时间敏感任务配截止断路器。三类故障对应三道闸门。 如果错,会错在: 若下一代模型的自洽反思已能把「完成度」算准(反思错误率趋零),第二道闸门可以撤,清单退化为纯评估工具。

5. 记忆:三种记性与三种管法

5.1 内部知识、短期、长期

书里把记忆——模型存住过去信息的能力——拆成三层,每层的读写特性完全不同24:

是什么特性
内部知识模型权重里记住的训练知识不更新就不变,谁也删不掉
短期记忆模型的上下文快,但容量有限,不跨任务持久
长期记忆外部数据源(RAG 那套)跨任务持久,可不更新模型就删除

记忆的价值书里列了四条:防信息溢出、跨对话保持(AI 教练记得你的目标)、一致性(同一个笑话两次打分一样)、把对话内容落成结构化数据(比如把聊天里的销售线索存成表格)25

5.2 管理与检索,和那 30%

记忆系统两个功能:记忆管理(往短期/长期里添加、删除)与记忆检索(从长期取——它就是 RAG 检索,不再展开)。管理的关键是一道算术:给定的查询,上下文 = 短期记忆 + 检索回来的内容;若给检索预留 30% 的上下文空间,短期记忆最多只能用剩下的 70%——溢出的内容转移到长期记忆26

5.3 三种删除策略

  • FIFO(先进先出):最早的消息最先移出。实现最简单,但假设「早期消息不重要」可能有严重偏差——很多对话的目的恰恰写在开头27;

  • 去冗余:生成对话摘要,配合命名实体追踪;Bae 等(2022)更细一步,训练一个逐句打标签的小模型,判断「旧记忆与摘要」里每句话去还是留28;

  • 反思法(Think-in-Memory):每轮结束后让模型反思该把哪些信息写入记忆——插入、合并还是替换;遇到矛盾信息,要么保留最新,要么由 AI 判断谁对29

6. 作者的判断与证据

  • 「ChatGPT 也是智能体」是定义层面的判断,依据是 Russell & Norvig 的经典定义;它直接反驳了「智能体 = 全自动机器人」的营销化想象。
  • 对「基础模型能否规划」书里给了双方论据(LeCun/Kambhampati 的否定,Hao 一派「模型内含世界规律、可预测动作结果」的乐观判断),作者不下判决,只指出两条路线长期看会融合。
  • **反思「便宜且提升惊人」**是从 ReAct/Reflexion 论文里读出的实践归纳,书里同时标清了代价(延迟、token 成本、示例占上下文)。

7. 边界与局限

  • 故障三分类是评估框架,不是发生率统计——书里没给「哪类故障最常见」的数据。
  • 多个智能体协作的系统只以「生成/验证/执行三组件」的形式带过,智能体间通信、冲突处理未展开。
  • 记忆一节的三种策略都针对「删除」;长期记忆的写入质量控制(什么值得存)书里着墨很少。

8. 可带走的

  1. 智能体 = 环境 + 动作集合:ChatGPT、RAG 系统、SWE-agent 都是;给模型什么工具,它就是什么智能体;

  2. 错误会按步数滚雪球式放大:每步 95% 的准确率,十步后约 60%,百步后约 0.6%——多步任务要用更强的模型和更严的校验;

  3. 工具三分类:知识增强、能力扩展、写入动作——写入是权限红线,「不会给实习生的权限别给 AI」;

  4. 规划与执行解耦:先生成、再验证(启发式或裁判)、后执行;可并行生成多计划择优;

  5. 规划本质是搜索问题,难点在「预测动作后的结果状态」——这是模型与规划器的真正差距;

  6. 函数调用两坑:参数靠猜(务必让它报告参数值并核查)、工具改名(用自然语言计划 + 翻译器解耦);

  7. ReAct = 思考/行动/观察循环;Reflexion = 评估器 + 自我反思再生成轨迹——反思便宜、提升惊人、代价是延迟;

  8. 故障三分类各带指标:规划故障(无效工具/错参数/反思错误——50 人分 30 房只分 40 个却称完成)、工具故障、效率故障(人和 AI 的高效不是一套);

  9. 记忆三层:内部知识(改不了)、短期(上下文)、长期(外部库);检索预留 30% 上下文,短期只剩 70%;删除策略 FIFO/去冗余/反思各有偏差。

9. 原文地图

主题原书章原文位置
智能体定义(Russell & Norvig)第6章text/13-ch06.txt:805(搜「感知其环境并作用于环境」)
SWE-agent:环境与动作第6章text/13-ch06.txt:818(搜「SWE-agent」)
Kitty Vogue 八步走查第6章text/13-ch06.txt:830(搜「动作序列」) · text/13-ch06.txt:842(搜「营销活动」)
错误累积 95%→60%第6章text/13-ch06.txt:860(搜「95%」)
工具三分类、写入动作第6章text/13-ch06.txt:889(搜「只读动作」) · text/13-ch06.txt:952(搜「写入动作」)
实习生与权限红线第6章text/13-ch06.txt:958(搜「实习生」)
函数调用第6章text/13-ch06.txt:972(搜「函数调用」)
任务 = 目标 + 约束第6章text/13-ch06.txt:984(搜「5000美元」)
先生成→验证→执行第6章text/13-ch06.txt:1014(搜「重新生成一个计划」)
并行生成多计划第6章text/13-ch06.txt:1031(搜「并行生成多个计划」)
人在三个阶段参与第6章text/13-ch06.txt:1043(搜「人类专家」)
LeCun 与 Kambhampati第6章text/13-ch06.txt:1067(搜「合情合理」)
规划是搜索问题第6章text/13-ch06.txt:1073(搜「搜索问题」)
世界模型(Hao)第6章text/13-ch06.txt:1082(搜「悬崖」) · text/13-ch06.txt:1085(搜「World Model」)
工具清单、lbs_to_kg 例子第6章text/13-ch06.txt:1232(搜「工具清单」) · text/13-ch06.txt:1274(搜「40磅」)
参数从前步推断、务必报告参数值第6章text/13-ch06.txt:1178(搜「2030-09-13」) · text/13-ch06.txt:1319(搜「务必要求系统报告」)
幻觉导致无效调用第6章text/13-ch06.txt:1208(搜「无效函数」)
计划粒度与分层规划第6章text/13-ch06.txt:1322(搜「计划粒度」) · text/13-ch06.txt:1325(搜「分层规划」)
工具改名问题、自然语言计划第6章text/13-ch06.txt:1328(搜「get_current_time」)
控制流四种第6章text/13-ch06.txt:1364(搜「控制流」) · text/13-ch06.txt:1394(搜「由AI模型做出」)
ReAct 循环第6章text/13-ch06.txt:1433(搜「ReAct」)
Reflexion 与轨迹第6章text/13-ch06.txt:1474(搜「Reflexion」)
反思便宜、提升惊人第6章text/13-ch06.txt:1477(搜「惊人的性能提升」)
工具数量谱系(5/13/1645)第6章text/13-ch06.txt:1492(搜「1645」)
Voyager 技能库第6章text/13-ch06.txt:1546(搜「技能管理器」)
规划故障:工具使用失败三档第6章text/13-ch06.txt:1569(搜「工具使用失败」)
反思错误:50 人 30 房第6章text/13-ch06.txt:1596(搜「50个人分配到30个」)
时间约束:资助申请第6章text/13-ch06.txt:1593(搜「资助申请」)
规划故障的四个指标第6章text/13-ch06.txt:1599(搜「规划数据集」) · text/13-ch06.txt:1611(搜「无效工具」)
工具故障与缺失工具第6章text/13-ch06.txt:1626(搜「工具故障」) · text/13-ch06.txt:1638(搜「缺失工具」)
效率故障三测量、人机对比第6章text/13-ch06.txt:1650(搜「平均成本」) · text/13-ch06.txt:1656(搜「100个网页」)
记忆三层第6章text/13-ch06.txt:1679(搜「内部知识」) · text/13-ch06.txt:1685(搜「短期记忆」) · text/13-ch06.txt:1691(搜「长期记忆」)
记忆四好处、一致性第6章text/13-ch06.txt:1706(搜「记忆管理工具」) · text/13-ch06.txt:1724(搜「保持一致」)
管理 vs 检索、30%/70%第6章text/13-ch06.txt:1736(搜「记忆管理」) · text/13-ch06.txt:1745(搜「30%」)
FIFO 及其偏差第6章text/13-ch06.txt:1761(搜「FIFO」)
去冗余与 Bae 分类器第6章text/13-ch06.txt:1768(搜「去」;若定位失败搜「Bae」)
Think-in-Memory 反思法第6章text/13-ch06.txt:1771(搜「Think-in-Memory」;若定位失败搜「反思」)

Footnotes

  1. 出处:「第6章」第 765 段(text/13-ch06.txt:765,搜「对理性智能体」)与第 805 段(text/13-ch06.txt:805,搜「感知其环境并作用于环境」)。

  2. 出处:「第6章」第 830 段(text/13-ch06.txt:830,搜「动作序列」)与第 842 段(text/13-ch06.txt:842,搜「营销活动」)。

  3. 出处:「第6章」第 860 段(text/13-ch06.txt:860,搜「95%」)。烧配额的引语见第 866 段附近。

  4. 出处:「第6章」第 889 段(text/13-ch06.txt:889,搜「只读动作」)。

  5. 出处:「第6章」第 958 段(text/13-ch06.txt:958,搜「实习生」)。

  6. 出处:「第6章」第 972 段(text/13-ch06.txt:972,搜「函数调用」)。

  7. 出处:「第6章」第 984 段(text/13-ch06.txt:984,搜「5000美元」)。

  8. 出处:「第6章」第 1014 段(text/13-ch06.txt:1014,搜「重新生成一个计划」)与第 1031 段(text/13-ch06.txt:1031,搜「并行生成多个计划」)。

  9. 出处:「第6章」第 1043 段(text/13-ch06.txt:1043,搜「人类专家」)。

  10. 出处:「第6章」第 1067 段(text/13-ch06.txt:1067,搜「合情合理」)。

  11. 出处:「第6章」第 1073 段(text/13-ch06.txt:1073,搜「搜索问题」)、第 1082 段(text/13-ch06.txt:1082,搜「悬崖」)与第 1085 段(text/13-ch06.txt:1085,搜「World Model」)。

  12. 出处:「第6章」第 1229 段(text/13-ch06.txt:1229,搜「函数调用的工作流程」)与第 1274 段(text/13-ch06.txt:1274,搜「40磅」)。

  13. 出处:「第6章」第 1178 段(text/13-ch06.txt:1178,搜「2030-09-13」)、第 1319 段(text/13-ch06.txt:1319,搜「务必要求系统报告」)、第 1328 段(text/13-ch06.txt:1328,搜「get_current_time」)与第 1208 段(text/13-ch06.txt:1208,搜「无效函数」)。

  14. 出处:「第6章」第 1322 段(text/13-ch06.txt:1322,搜「计划粒度」)与第 1325 段(text/13-ch06.txt:1325,搜「分层规划」)。

  15. 出处:「第6章」第 1364 段(text/13-ch06.txt:1364,搜「控制流」)、第 1376 段(text/13-ch06.txt:1376,搜「并行检索」)与第 1394 段(text/13-ch06.txt:1394,搜「由AI模型做出」)。

  16. 出处:「第6章」第 1433 段(text/13-ch06.txt:1433,搜「ReAct」)与第 1474 段(text/13-ch06.txt:1474,搜「Reflexion」)。

  17. 出处:「第6章」第 1477 段(text/13-ch06.txt:1477,搜「惊人的性能提升」)。

  18. 出处:「第6章」第 1492 段(text/13-ch06.txt:1492,搜「1645」)与第 1546 段(text/13-ch06.txt:1546,搜「技能管理器」)。

  19. 出处:「第6章」第 1566 段(text/13-ch06.txt:1566,搜「规划故障」;若定位失败搜「三类」)。

  20. 出处:「第6章」第 1569 段(text/13-ch06.txt:1569,搜「工具使用失败」)、第 1593 段(text/13-ch06.txt:1593,搜「资助申请」)与第 1596 段(text/13-ch06.txt:1596,搜「50个人分配到30个」)。

  21. 出处:「第6章」第 1599 段(text/13-ch06.txt:1599,搜「规划数据集」)与第 1611 段(text/13-ch06.txt:1611,搜「无效工具」)。

  22. 出处:「第6章」第 1626 段(text/13-ch06.txt:1626,搜「工具故障」)与第 1638 段(text/13-ch06.txt:1638,搜「缺失工具」)。

  23. 出处:「第6章」第 1650 段(text/13-ch06.txt:1650,搜「平均成本」)与第 1656 段(text/13-ch06.txt:1656,搜「100个网页」)。

  24. 出处:「第6章」第 1679 段(text/13-ch06.txt:1679,搜「内部知识」)、第 1685 段(text/13-ch06.txt:1685,搜「短期记忆」)与第 1691 段(text/13-ch06.txt:1691,搜「长期记忆」)。

  25. 出处:「第6章」第 1706 段(text/13-ch06.txt:1706,搜「记忆管理工具」)与第 1724 段(text/13-ch06.txt:1724,搜「保持一致」)。

  26. 出处:「第6章」第 1736 段(text/13-ch06.txt:1736,搜「记忆管理」)与第 1745 段(text/13-ch06.txt:1745,搜「30%」)。

  27. 出处:「第6章」第 1761 段(text/13-ch06.txt:1761,搜「FIFO」)。

  28. 出处:「第6章」第 1768 段(text/13-ch06.txt:1768,搜「Bae」)。

  29. 出处:「第6章」第 1771 段(text/13-ch06.txt:1771,搜「Think-in-Memory」;若定位失败搜「反思」)。