8 周深度学习计划 · 动手构建 Agent

Agentic Design Patterns A Hands-On Guide to Building Intelligent Systems · Antonio Gulli

21 章 + 7 附录 424 页 · 作者免费开源 原书作者:Antonio Gulli (Google Office of CTO Sr. Director) 所有版税捐赠给 Save the Children

📚核心学习资源(先收藏)

原书 + 配套代码 + 速查卡,按以下顺序使用效率最高。

① 原书完整 PDF(社区镜像,可下载)

github.com/evoiz/.../Agentic_Design_Patterns_Complete.pdf
482 页全本 PDF,可离线阅读 / 打印 / 检索。本门户的"原文定位"直接链到各章独立 Google Doc。

② 配套代码官方 Drive 文件夹

drive.google.com/.../1Y3U3IrYCiJ3E45Z8okR5eCg7OPnWQtPV
作者维护的 Colab notebook 集合,21 章代码示例都在这里。

③ 21 模式速查卡 + 多框架代码(社区整理)

github.com/ColtMercer/agentic-design-patterns
LangChain / LangGraph / CrewAI / Google ADK 对照实现,作为补充参考。

④ Springer 正式出版页(含 ISBN 引用)

link.springer.com/.../978-3-032-01402-3
正式引用、勘误、读者评价。所有版税捐赠给 Save the Children。

⑤ 作者 LinkedIn(追更新 + 提问)

linkedin.com/in/searchguy
Antonio Gulli 经常发新的 pattern 草稿和案例。

🧭怎么用这份学习门户

每周一个面板,按以下 5 步循环。

① 读原文 (60-90 min)

用本周"原文定位"区跳转到 Google Doc 对应章节,圈出 3 个最关键的术语。

② 跑配套代码 (45 min)

章节卡里的"配套代码"链接:Ch1 是 Colab Notebook 可一键运行;Ch2-21 在作者维护的 Drive 文件夹里。改一处参数看输出变化。

③ 做 Hands-on (90 min)

本周"动手项目"自己实现一遍。

④ 测自己 (20 min)

完成本周自测题,错的回去重读相应小节。

⑤ 写学习笔记 (30 min)

用自己的话写"这个模式什么时候用、不该用"。

⑥ 勾选 checklist

本页面会自动保存进度(仅在本机浏览器)。

建议节奏: 周一 ~ 周三读 + 跑 notebook,周四 ~ 周六做 hands-on,周日总结 + 测验。每周 5-7 小时投入。
📖 每章带 PDF 深度摘要: 21 个章节卡片下都新增了"展开本章深度摘要"折叠区——基于 PDF 实际内容写的中文学习笔记(每章 800-1200 字),包含:核心机制、实战要点、易错点、与其他章节的关系。可作为读原文前的"预读"或读后的"复习提纲"。
💡 一键直达章节: 每周"原文定位"区的链接直接指向作者维护的各章独立 Google Doc(从原书 PDF 第一页提取,由 Antonio Gulli 本人维护)。点击立刻打开对应章节的原文,无需 Ctrl+F。
0 / 0 项完成 进度本地保存(localStorage,浏览器独立) ·
Week 1基础 + 链式
Week 2并行 + 反思
Week 3工具 + 规划
Week 4多智能体 + 记忆
Week 5学习 + MCP + 目标
Week 6异常 + HIL + RAG
Week 7通信 + 推理 + 护栏
Week 8评估 + 综合项目

W1基础概念 + Prompt Chaining + Routing

本周目标:搞清楚"什么算 Agent"、能写出顺序链 / 条件分支的最小 Agent。

📍原文定位 + 章节摘要

Introduction · "What makes an AI system an agent?"
📍 直达此章节:点击在 Google Doc 中打开 →
作者用 5 个维度定义 Agent:目标导向(goal-oriented)、感知(perception)、推理(reasoning)、行动(action)、自适应(adaptability)。一段简洁的总结:"An agent is an LLM with goals, memory, tools, and the ability to take actions in a loop."
本章还铺垫了全书结构:21 个模式不是规则,而是可组合的词汇(vocabulary)。开篇即点明立场:好 Agent 来自正确组合多个模式,而非"用最新的框架"。
Chapter 1 · Prompt Chaining
把复杂任务拆成顺序的 LLM 调用,每步只做一件事。典型 3 步链: 抽取 → 转换 → 生成。关键: 步骤间用结构化中间表示(JSON / 严格 schema)传递,纯自然语言传递容易丢信息。
陷阱:① 错误会向后传染(前一步抽错,后续全错);② 不能并行,延迟累加;③ 链太长(≥6 步)调试地狱。
适用场景: 文档处理 pipeline、NL2SQL、内容审核分步。本章给出 LangChain LCEL 风格的具体实现。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

把一个会让 LLM 抓狂的"巨型 prompt"拆成有先后顺序的小 prompt 链——这是 Gulli 在书中放在第一章的"祖师爷模式",是所有更复杂模式(Routing、Reflection、Multi-Agent)的基础。

🧠 核心机制:为什么链式比单次 prompt 更稳?

书中给的"市场分析报告"例子很经典:你让一个 prompt 同时做"总结报告 + 找出趋势 + 起草邮件"——LLM 会出现五种典型故障:① instruction neglect(漏指令);② contextual drift(跑题);③ error propagation(早期错误放大);④ context window 不够;⑤ cognitive overload 导致幻觉。

链式做法:第 1 步只做 summarization(角色=Market Analyst)→ 第 2 步只做 trend identification(角色=Trade Analyst)→ 第 3 步只做 draft email(角色=Documentation Writer)。每一步认知负荷骤降,结果显著更稳。

🛠 实战要点

  • 角色赋予:每步给 LLM 不同身份("You are a Market Analyst..."),提升专注度
  • 结构化中间表示:步骤之间必须传 JSON / XML,不要传自然语言——书中说"the reliability of a prompt chain is highly dependent on the integrity of the data passed between steps"
  • JSON Schema 兜底:用 Pydantic 或 JSON Schema 校验每步输出,失败要么重试要么 fallback
  • 主流框架:LangChain(LCEL 线性链)、LangGraph(带状态、可循环的图)、CrewAI、Google ADK
  • 7 类应用:信息处理 pipeline、复杂问答、数据抽取、内容生成、有状态对话、代码生成、多模态推理

⚠️ 易错点

  • 链太长(≥6 步)= 调试地狱:错误难定位、监控代价高、延迟累加
  • 步骤之间用纯文本传递看似自然,实则丢信息——下游模型要重新理解上下文
  • 没在每步加 validation,错误会向下传染

🔗 与其他章节的关系

Chaining 是"固定流水线"。当你需要"分支"时用 Ch2 Routing;需要"并发"时用 Ch3 Parallelization;需要"自我修正"时用 Ch4 Reflection。整本书的其他 20 个模式都在 Chaining 上做拓展。

Chapter 2 · Routing
Chaining 是固定流水线,Routing 是 LLM 世界的 if-else。一个 router 节点判断输入应该去哪条链 / 哪个 handler。
三种实现:
· LLM Router:最灵活,最贵,最慢
· Embedding Router:把类别先 embed 成 centroid,输入向量找最近——快 100×,准确率略低
· Rule Router:正则 / 关键字,最便宜,最脆
必备: 返回结构化 {"route":"X","confidence":0.92}、置信度阈值、fallback 路径。本章给出客服分流、文档分类两个完整案例。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

给 Agent 装上"if-else 的眼睛"——根据输入动态选择走哪条链 / 调用哪个 sub-agent / 用什么工具。Chaining 是固定流水线,Routing 是流水线的分流器。

🧠 核心机制:三种 Router 实现

书中明确给出三种实现方式,按成本-准确率-延迟的 trade-off 排列:

  • ① LLM-based Router:用一个 LLM 调用做分类决策。最灵活(能处理复杂语义),最慢(数百 ms 到数秒),最贵。适合低 QPS、高复杂度场景。
  • ② Embedding-based Router:把每个类别用一组代表样本算 centroid,输入向量做 cosine similarity 找最近类别。速度毫秒级,准确率略低于 LLM Router,适合高 QPS。
  • ③ Rule-based Router:正则、关键字、长度阈值等。最便宜最快,最脆——只适合已知意图边界非常清晰的场景(如 SQL 注入检测)。

🛠 实战要点

  • 客服场景示例(书中典型用例):用户输入 → Router 分类成 [Billing / Tech Support / General Q&A] → 各自交给专门 sub-agent
  • 结构化输出:Router 一定要返回 {"route": "billing", "confidence": 0.92, "reasoning": "..."},置信度低于阈值(如 0.7)走 fallback
  • Fallback 路径:任何 Router 都必须有兜底——遇到 unknown 类别时去通用 chain 或 escalate to human
  • 主流框架:LangGraph 用 conditional edge 显式表达分支;Google ADK 把 routing 隐藏在 framework 的"tool 选择"逻辑里

⚠️ 易错点

  • 类别不互斥(用户问题同时属于两类)— Router 会"摇摆"。解药:允许 multi-label + 设置主类别
  • 没监控 routing distribution — 模型 drift 后类别分布悄悄变化,发现时已经晚了
  • Embedding Router 的 centroid 不更新就老化得很快——业务上线 3 个月内必看一次

🔗 与其他章节

Routing 常与 Chaining 组合(先 route 再 chain)、与 Multi-Agent (Ch7) 组合(router 当作 supervisor),且本身可以"链式 routing"(先粗分再细分)。在 Resource-Aware Optimization (Ch16) 里又作为"模型路由"出现,根据复杂度选 Haiku/Sonnet/Opus。

💡核心概念(点击展开)

Agent 与普通 LLM 调用的本质区别
普通 LLM 调用是"输入→输出"的一次性映射;Agent 在此之上加了 感知(observation)、规划(planning)、行动(action)、反馈(feedback loop)。

判断一个系统是否"Agentic"可以看 4 个维度:是否有目标?是否能多步?是否能调用外部工具?是否能根据中间结果改变后续动作?都满足才是真 Agent。
Prompt Chaining:把复杂任务拆成顺序步骤
核心思想:"分而治之"。让 LLM 一步到位往往出错;拆成 step1 → step2 → step3,每步只做一件事,质量显著提升。

关键设计:step 之间的"中间表示"越结构化(JSON、Markdown)越稳定。
Routing:根据输入动态选择路径
实战经验:路由节点要返回结构化输出(如 {"route": "billing", "confidence": 0.92}),并设置 fallback 路径。

选型:高 QPS 用 Embedding Router;低频复杂分类用 LLM Router。

🛠本周动手项目

项目 W1:用户反馈智能分发 Agent(最小版)

设想一个产品有用户反馈群(客服反馈、Bug 报告、功能建议混在一起),构建 Agent 自动分发:

Step 1(Chain):接收一段反馈文本 → 抽取出 {user_id, issue_summary, attachments}
Step 2(Router):根据 issue 内容路由到 [Bug / 新需求 / 用户疑问] 三类
Step 3(Chain):根据路由结果生成对应回复模板(@on-call dev / @on-call PM / 直接答复)

LangChainPythonOpenAI / Claude API~150 行代码

📝本周自测题

Q1.下面哪种系统不算 Agentic 系统?
  • 能根据用户问题调用搜索 API 并基于结果回答的客服 Bot
  • 一个只把用户输入拼到 prompt 模板再调用一次 LLM 的应用
  • 能在失败时自动重试、修改策略的代码生成助手
  • 能拆解任务、多步调用工具达成目标的研究助手
答案:B。关键看是否有"循环 + 决策 + 工具"。一次性 prompt-in-out 没有反馈循环,本质还是 LLM 调用而非 Agent。
Q2.Prompt Chaining 比单次大 prompt 更稳定,最核心的原因是?
  • 每一步 token 数更少所以更便宜
  • 每一步只承担一个子任务,且步骤间用结构化中间表示传递,错误不会累积扩散
  • 链式调用可以并行
  • LLM 对短 prompt 更擅长
答案:B。便宜不是核心;并行恰好是 Chaining 的局限。核心是降低单步认知负荷 + 中间结果可验证。
Q3.Embedding Router 相比 LLM Router 的最大优势是?
  • 准确率更高
  • 延迟低、成本低,适合高 QPS 场景
  • 能处理任意复杂的分类边界
  • 不需要事先准备样例
答案:B。Embedding 一次推理就出结果(毫秒级),LLM 路由要几百毫秒甚至几秒。
Q4.设计 Router 节点时,最不该省略的是?
  • 置信度分数
  • Fallback 兜底路径
  • 日志记录
  • A/B 测试
答案:B。Router 必然会遇到"没有匹配类别"的情况,没有 fallback 会让整个 Agent 崩溃。
Q5.Chain 中两个步骤之间用什么传递信息最稳?
  • 完整对话历史
  • 原始自然语言段落
  • 明确 schema 的 JSON 对象
  • 长摘要
答案:C。结构化中间表示让下一步的 prompt 更短、更准;且可以单元测试每个 step 的输出。

W2Parallelization + Reflection

本周目标:把链式优化为并行节省时间,让 Agent 学会"自我审查"提升输出质量。

📍原文定位 + 章节摘要

Chapter 3 · Parallelization
三种典型形态:① Map-Reduce(大任务切片并行 → 汇总,如 100 个文档摘要);② 多视角(同一任务,3 个角色并行回答然后投票或汇总);③ 多采样 / Self-Consistency(同一 prompt 跑 N 次取多数票)。
陷阱: 子任务有依赖时强行并行 → 结果不一致;reduce 阶段上下文易超限(解药:分层 reduce);并发限流和 token 预算需要主动管理。
本章给出 asyncio + LangGraph 的两版实现,对比串行 vs 并行的延迟和质量。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

把"等着串行执行"改成"同时跑独立子任务",是降低 Agent 延迟最直接的杠杆——书中给的例子:研究 Agent 要总结 5 个来源,串行 50 秒,并行 10 秒。

🧠 核心机制:三种典型并行形态

  • ① Map-Reduce 型:100 个文档分别摘要(map)→ 汇总成一份报告(reduce)。最经典,但 reduce 阶段易爆 context
  • ② 多视角型:同一个问题,3 个 Agent 用不同角色(PM/Eng/Designer)并行回答,再投票或汇总。常用于决策类任务
  • ③ 多采样型 / Self-Consistency:同一 prompt 高 temperature 跑 N 次,选出现频率最高的答案。对推理题、数学题特别有效

🛠 实战要点

  • LangChain 的 RunnableParallel:声明式地让多个 chain 并行跑。语法很直观
  • Google ADK 的"LLM-Driven Delegation":Coordinator agent 自己识别哪些子任务独立,自动分派
  • asyncio:纯 Python 实现时用 asyncio.gather() 等所有任务完成
  • 并发上限:必须设 semaphore(如 max_concurrent=10),否则 API 限流会让所有请求一起 fail
  • I/O 密集场景收益最大:API 调用、向量检索、网页抓取等等

⚠️ 易错点

  • 误判独立性:以为两个任务独立,其实下游依赖上游某个字段 → 结果不一致。先画依赖图!
  • Reduce 阶段超 context:100 条 200 字摘要合在一起 = 20K tokens,可能超模型上限。解药:分层 reduce——每 10 条先合并,再合 10 个中间结果
  • 引入并行 = 引入复杂度:debugging、日志、错误处理、限流都变难,"the adoption of a concurrent architecture introduces substantial complexity and cost"(书中原话)。简单任务别强行并行
  • 部分失败处理:10 个并行任务 1 个失败怎么办?整体重试 / 用其他 9 个 / fail-fast?必须预先设计

🔗 与其他章节

常与 Chaining (Ch1) 混合:先并行抓数据 → 串行 synthesize。也是 Multi-Agent (Ch7) 的底层执行机制(不同 Agent 并行做事)。在 Reasoning Techniques (Ch17) 里 Self-Consistency 是并行采样的应用。

Chapter 4 · Reflection
三步循环:Generate → Critique → Refine。Critic 必须"不同于"Generator——换 system prompt 或换模型,否则 LLM 会自我偏好(self-preference bias),critic 形同虚设。
适用: 开放式生成(文案、代码 review、策略)。不适用: 事实性 / 有标准答案的任务(数学、SQL)——错的反思后还是错。
终止: 不要"直到 critic 满意"(死循环),用"最大轮数 + critique 输出无重大问题"组合条件。Anthropic 的 Constitutional AI 是工业级实例。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

让 Agent 学会"批判自己的初稿,再改一遍"——通过 Generate → Critique → Refine 的反馈环路提升输出质量,是 Agentic AI 区别于普通 LLM 调用的关键能力之一。

🧠 核心机制:Producer-Critic 模型

书中重点推荐 Producer-Critic 模型:用两个独立的 Agent(或同一模型但不同 system prompt)分饰两角:

  • Producer:生成初稿(如代码、报告、邮件)
  • Critic:扮演"严格审稿人"——对照预设 rubric / checklist 找问题
  • Refiner(可由 Producer 兼任):根据 critique 重写

Gulli 强调:"this separation of concerns enhances objectivity"。如果 Producer 和 Critic 是同一个模型 + 同一个 prompt,会陷入 self-preference bias——LLM 倾向于认可自己的输出,critique 形同虚设。

🛠 实战要点

  • Critic 用不同模型:Producer 用 GPT-4 + Critic 用 Claude,或反之;不能行的话至少换 system prompt
  • Rubric 必须可量化:"清晰度 1-5 分"远胜于"写得好不好"
  • 终止条件组合:max_iterations(如 3 轮)+ "no major issues" 判定。不能等 Critic "完全满意"——会陷入死循环(critic 永远能挑出小毛病)
  • 框架支持:完整迭代反思一般需要 stateful workflow(LangGraph 最适合);单轮反思可用 LangChain LCEL 实现;Google ADK 用 sequential workflow 模拟

⚠️ 易错点

  • 成本和延迟翻 2-3 倍:每轮要多调一次 Critic + 多调一次 Refiner。书中明确警告:"these benefits come at the cost of increased latency and computational expense"
  • 不是所有任务都适合反思:事实性 / 数学 / SQL 类——错的反思后还是错(反思帮不了 hallucination 类错误)。适合:开放式生成(文案、代码 review、策略分析)
  • 容易超 context window:迭代多轮后历史累积巨大

🔗 与其他章节

Reflection 是 Self-Correction 的实现方式之一,与 Reasoning Techniques (Ch17) 中的 Self-Consistency 互补。Anthropic 的 Constitutional AI 是 Reflection 的工业级实例(用 rules 当 critic 的 rubric)。在 Multi-Agent (Ch7) 中可看作"两 Agent 互相 review"的简化形态。

💡核心概念

Parallelization 的三种典型形态
① Map-Reduce 型:把大任务切分到多个独立子任务并行执行。
② 多视角型:同一任务让 3 个 Agent 用不同角色并行回答,最后投票或汇总。
③ 多采样型:同一 prompt 跑 N 次,选最常见或最高质量答案(Self-Consistency)。

陷阱:并行 ≠ 总是更好。子任务有依赖时强行并行会得到不一致结果。
Reflection 的核心循环
三步:Generate → Critique → Refine。
关键技巧:Critic 和 Generator 用不同的 system prompt 或不同模型,避免"自己看自己都觉得好"。
什么时候用 Reflection 反而是浪费?
不是所有任务都需要反思。对于事实性、有标准答案的任务,反思帮助有限——错的还是错的。
反思最有效的场景:开放式生成,且有清晰的"好坏标准"可以让 critic 参照。

🛠本周动手项目

项目 W2-A:多视角竞品分析(Parallelization)

给定一个竞品 URL,并行 3 个 Agent 分别从"产品功能 / 商业模式 / 技术架构"3 个角度分析,最后由 reducer agent 汇总成一页报告。

asyncioLangGraph~200 行
项目 W2-B:文档自动审查(Reflection)

给一份草稿文档(PRD / 技术方案 / 博客均可),Critic Agent 用"资深审稿人 checklist(清晰度 / 可量化 / 异常情况 / 数据上报)"逐项 review,Refiner 根据 critique 出修改建议。

LangChainClaude / GPT-4~250 行

📝本周自测题

Q1.下面哪个场景不适合用 Parallelization?
  • 100 篇评论的情感分类
  • 同一问题让 5 个 Agent 各自回答然后投票
  • 一个多轮对话的状态更新
  • 从一份合同中并行提取"金额 / 期限 / 违约条款"三类信息
答案:C。多轮对话有强时序依赖,必须串行。
Q2.Reflection 模式中,Critic 用同一个 prompt 直接评价 Generator 输出的最大问题是?
  • 速度太慢
  • "自我偏好"——LLM 倾向于认可自己的输出,导致 critique 失效
  • 成本翻倍
  • 无法处理多模态
答案:B。研究表明 LLM 对自己刚生成的内容有"自我偏好"。Critic 需要换 system prompt 或换模型。
Q3.Self-Consistency 的核心思路是?
  • 让一个 Agent 反复修改自己的答案
  • 同一 prompt 高 temperature 跑多次,选多数投票答案
  • 用多个不同 prompt 跑同一任务
  • 让两个 LLM 互相辩论
答案:B。对推理题特别有效——正确答案通常是众多采样里出现频率最高的那个。
Q4.关于 Reflection 的迭代终止条件,最合理的是?
  • 固定迭代 5 次
  • 设置最大轮数 + critique 输出"无重大问题"则提前停止
  • 一直迭代直到 critic 完全满意
  • 迭代到成本超过预算
答案:B。"完全满意"会陷入死循环;固定次数浪费。组合条件才是工业实践。
Q5.Map-Reduce 风格的并行处理 100 个文档摘要,最容易出问题的环节是?
  • Map 阶段的 LLM 调用
  • Reduce 阶段——合并 100 条摘要时上下文超长
  • 网络并发
  • 日志记录
答案:B。解决方案:分层 reduce(每 10 条先合并 → 再合并),或用 streaming summary。

W3Tool Use + Planning

本周目标:让 Agent 摆脱"只会说话"——能调用真实世界的工具,并自主拆解任务。

📍原文定位 + 章节摘要

Chapter 5 · Tool Use
Function Calling vs Tool Use 的区别: 前者是底层 API 机制(LLM 输出 JSON 表示要调函数);后者是设计模式(定义→决策→执行→回填→继续推理整个闭环)。
工具设计 5 原则: ① 单一职责(不要做万能工具);② 清晰描述(description 字段直接决定 LLM 用不用对);③ 幂等(可重复调用产生相同结果);④ 结构化错误(返回 {"error","code","suggestion"} 而非 throw);⑤ 限速友好(内置 rate limit 处理)。
ReAct 范式(Yao et al. 2022):交错输出 Thought / Action / Observation,让推理过程可见可纠。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

让 LLM 跳出"只会说话"的牢笼——通过 Function Calling 机制调用外部 API、数据库、代码执行器、计算器,把 Agent 接通真实世界。是从"聊天机器人"升级为"Agent"的临界点。

🧠 核心机制:5 步循环

书中明确列出标准流程:

  1. Tool Definition:把外部函数 / API 用结构化 schema 描述给 LLM(包含 name、description、parameters)
  2. LLM Decision:LLM 看到用户请求 + 工具列表,决定是否需要调工具、调哪个、传什么参数
  3. Structured Call:LLM 输出 {"name": "get_weather", "args": {"city": "Beijing"}} 形式的 JSON
  4. Orchestration Layer 执行:框架解析 JSON,真实调用函数,拿到结果
  5. Result Injection:把工具结果回填给 LLM,LLM 用它继续生成最终回答

🛠 工具设计 5 原则(书中精华)

  • ① 单一职责:一个工具只做一件事,不要做"万能工具"
  • ② Clear description:description 字段直接决定 LLM 用不用对——LLM 是看 description 而非函数名决策的。写人话,举例子
  • ③ 幂等:可重复调用产生相同结果(重试时不会副作用累加)
  • ④ 结构化错误:返回 {"error":"...","code":"...","suggestion":"..."} 而非 throw exception
  • ⑤ 限速友好:内置 rate limit 处理,不让上游 Agent 操心

📦 主流框架

  • LangChain:@tool 装饰器 + create_tool_calling_agent + AgentExecutor
  • Google ADK:预置 Google Search、Code Execution、Vertex AI Search 等工具,开箱即用
  • Crew AI:以 Agent + Task + Tool 三元组组织

⚠️ 易错点

  • 工具描述模糊 → LLM 选错工具或不知何时调用(最常见的故障!)
  • 参数没有类型限制 → LLM 传错类型导致执行失败
  • 没设超时 → 慢工具拖垮整个 Agent
  • 工具数量过多(>20 个):LLM 选择困难,准确率下降。解药:分组 + Routing 先选组

🔗 与其他章节

Tool Use 是 MCP (Ch10) 标准化的对象之一。与 Planning (Ch6) 组合形成 ReAct 范式。在 Reasoning Techniques (Ch17) 里 Program-Aided Reasoning 也是 Tool Use 的特例(代码执行器作为工具)。

Chapter 6 · Planning
两大范式对比:
· ReAct:边想边做,每步根据观察决定下一步。优点灵活,缺点遇到长任务易迷路。
· Plan-and-Execute:先一次性生成完整 plan,executor 逐条执行,中途允许 replan。
选型经验: 步数 ≤ 3 → ReAct;4-10 → Plan-and-Execute;>10 或高度不确定 → 分层 plan(粗规划,每个粗步骤再细规划)。
Plan-and-Execute 的灵魂是 Replan:执行中发现 plan 不可行时能重新规划,否则等同"按死规则执行"。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

给 Agent 一个 high-level 目标("组织一次团队 offsite"),让它自主拆解出可执行步骤序列——从"反应式响应"升级为"战略式执行"。这是真正 Agentic AI 的核心。

🧠 核心机制:Planning 的两种范式

书中对比了两条主线:

  • ① ReAct (Reason + Act):边想边做。每一步输出 Thought → Action → Observation,根据观察决定下一步。优点:灵活、能 react to surprises;缺点:步数多时容易迷路
  • ② Plan-and-Execute:先一次性生成完整 plan(步骤列表),然后 executor 逐条执行,中途允许 replan。优点:plan 可被人审查;缺点:plan 不够灵活

🛠 实战要点

  • 初始状态 + 目标状态 + 操作集合:经典 AI Planning 的三要素,LLM 也按这个套路生成 plan
  • "Plan is not a rigid script":书中强调初始 plan 只是起点,遇到障碍要能 replan
  • 选型经验:步数 ≤ 3 → ReAct;4-10 步 → Plan-and-Execute;> 10 步或高度不确定 → 分层 plan(先粗规划,每个粗步骤再细规划)
  • Google DeepResearch:书中标杆案例——它 reflects、plans、executes 三件事循环做
  • 典型应用:研究报告生成、员工 onboarding、竞品分析、复杂代码重构

⚠️ 易错点

  • 没有 Replan 机制= "按死规则执行"。Plan-and-Execute 的灵魂是 replan
  • Plan 太抽象:"研究市场" 这种步骤没法直接执行 → 拆得更具体或交给 sub-planner
  • 过度计划:简单任务(1-2 步)不需要 plan,直接 ReAct 反而高效
  • 状态管理混乱:plan 步骤之间共享什么状态、怎么共享?必须显式设计

🔗 与其他章节

Planning 几乎是所有高级模式的前置:Multi-Agent (Ch7) 通常用 Planner 当 supervisor 分派任务给 worker;Goal Setting (Ch11) 是 Planning 的指挥棒;Exception Handling (Ch12) 给 Replan 提供触发信号。ReAct 在 Reasoning Techniques (Ch17) 中是 reasoning + acting 的代表。

💡核心概念

Function Calling vs Tool Use 的概念区分
· Function Calling 是底层 API 能力:LLM 输出符合 schema 的 JSON 表示"我要调用 X 函数"。
· Tool Use 是设计模式:包含"工具定义 → LLM 决策 → 执行 → 结果回填 → 继续推理"整个闭环。
Function calling 是砖,Tool Use 是用砖砌成的墙。
ReAct (Reason + Act) 范式
Yao et al. 2022 提出。每一轮 Agent 输出:
Thought: 我现在需要 X
Action: search("X")
Observation: ...返回结果...
Thought: 根据结果,我下一步...
Action: ...
"Thought"让模型显式推理,"Action"调用工具,"Observation"回填结果。
Planning:Plan-and-Execute vs ReAct
经验法则:
· 步数 ≤ 3:直接 ReAct
· 步数 4-10:Plan-and-Execute
· 步数 > 10 或高度不确定:分层 plan
工具设计的 5 个原则
① 单一职责;② 清晰描述;③ 幂等;④ 结构化错误;⑤ 限速友好。详见原文。

🛠本周动手项目

项目 W3:运营数据查询 Agent(Tool Use + Plan-and-Execute)

构造一个能回答"营销活动 X 表现如何"的 Agent,提供以下工具集:

· get_campaign_meta(campaign_id) – 查活动基本信息
· query_metrics(campaign_id, date_range) – 查转化 / 留存指标
· compare_campaigns(id1, id2) – 对比两个活动
· get_user_segment(campaign_id) – 查用户分布

用户问:"分析活动 12345 并和上个活动对比" → Agent 自动 plan:[get_meta → query_metrics → find_prev_campaign → query_metrics(prev) → compare → summarize] → 依次执行。

LangGraphMock SQL / DuckDB~300 行

📝本周自测题

Q1.工具 description 写得不好最直接的后果是?
  • 工具执行报错
  • LLM 选错工具或不知道何时调用
  • API 限流
  • JSON schema 不合法
答案:B。LLM 是根据 description 而不是函数名来决策的。
Q2.ReAct 的核心创新是什么?
  • 让 LLM 能调用工具
  • 显式地交错"推理(Thought)"和"行动(Action)",让推理过程可见可纠
  • 提升 LLM 的数学能力
  • 降低 token 消耗
答案:B。调用工具不是 ReAct 独有;ReAct 的关键是把"想"和"做"分离并显式化。
Q3.下列哪个任务最适合用 Plan-and-Execute(而非 ReAct)?
  • "帮我查一下今天的天气"
  • "准备一份 5 家竞品对比报告,每家查官网、用户评价、定价、技术栈、市场份额"
  • "翻译这段话"
  • "总结这封邮件"
答案:B。明确多步、结构化、可预先规划——典型 Plan-and-Execute 场景。
Q4.下面哪个不是工业级工具设计的原则?
  • 单一职责
  • 幂等性
  • 结构化错误返回
  • 尽可能让一个工具能做多种事,减少工具数量
答案:D。工具越"万能",LLM 越难正确调用。宁可拆细。
Q5.Plan-and-Execute 中,最重要的"安全网"是?
  • 日志
  • Replan 机制——当执行中发现 plan 不可行时能重新规划
  • 缓存
  • 权限控制
答案:B。没有 replan 等于"按死规则执行",遇到中间结果意外就崩。

W4Multi-Agent + Memory Management

本周目标:从单 Agent 升级到协作系统,并解决"Agent 怎么记住事"的核心难题。

📍原文定位 + 章节摘要

Chapter 7 · Multi-Agent
四种协作拓扑:① Supervisor / Orchestrator(中心调度,最常见,最易调试);② Peer / Network(平等通信,AutoGen 默认,灵活但 debug 噩梦);③ Hierarchical(多层 supervisor,适合超大任务);④ Pipeline(流水线串行,本质是 Chain)。
反共识观点: 作者直言"很多 multi-agent 系统效果不如一个设计良好的单 Agent"。原因:Agent 间通信丢信息、协调开销大、错误跨 Agent 传播。
真正该用 multi-agent 的 3 种情况: 不同角色需要不同 system prompt / 不同模型;任务能真正并行;需要工具集 / 权限隔离(如安全 Agent 不该有写权限)。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

不是"一个超级 Agent",而是"多个专精 Agent 协同"——通过 task decomposition + inter-agent communication 解决单 Agent 搞不定的复杂多领域问题。

🧠 核心机制:4 种协作拓扑

书中重点介绍以下协作形态:

  • ① Sequential Handoffs:A 做完交给 B,B 做完交给 C(本质是 Chaining 的多 Agent 版)
  • ② Parallel Workstreams:多个 Agent 并行处理不同方面(Chaining 配合 Parallelization)
  • ③ Hierarchical / Supervisor:Supervisor 决定分派任务给哪个 worker,收集结果再汇总——最常用、最易调试
  • ④ Debate:两个或多个 Agent 互相论辩,提升答案质量(类似 Reflection 的扩展版)

典型示例:复杂研究任务 = Research Agent(信息检索) + Data Analysis Agent(统计) + Synthesis Agent(写报告)。

🛠 实战要点

  • 专精化 system prompt:每个 Agent 一份 role-specific 提示词。书中强调"shared ontology"——所有 Agent 共享相同术语表,否则 communication 出问题
  • Communication Protocol:定义清晰的消息格式(如 JSON schema 描述 task / status / result)
  • 框架:CrewAI(最早做 multi-agent 的)、AutoGen(Microsoft)、LangGraph(用图建模 agent 网络)、Google ADK(多 Agent 内置)
  • 主要价值:① 专业化(不同模型 / 工具 / 权限隔离);② 可扩展(加新角色不影响别人);③ 并行加速

⚠️ 易错点(书中最警告的部分)

  • "Multi-Agent 总是更好"是误区:很多 multi-agent 系统效果不如一个设计良好的单 Agent。原因:① 通信丢信息;② 协调开销大;③ 错误跨 Agent 传播放大
  • 真正该用 multi-agent 的 3 种情况:① 不同角色需要不同 system prompt / 不同模型;② 任务能真正并行;③ 需要工具集 / 权限隔离(如审计 Agent 不该有写权限)
  • Peer / Network 拓扑很 cool 但 debug 噩梦——消息满天飞,事后还原过程很难。90% 项目用 Supervisor 就够

🔗 与其他章节

Multi-Agent 是 Inter-Agent Communication / A2A (Ch15) 的应用场景;与 Memory Management (Ch8) 紧密关联(agents 之间共享什么记忆?);Supervisor 角色本质是 Planning (Ch6) 的执行体。

Chapter 8 · Memory Management
三层 Memory 模型: ① Short-term(工作记忆)当前对话 message 列表,受 context window 限制;② Long-term(语义记忆)跨会话事实和偏好,向量库存储;③ Episodic(情景记忆)过去完整任务执行记录,可被检索作为 few-shot。
长对话四种压缩策略: Sliding Window(简单粗暴)、Summarization(信息有损)、Vector Recall(无损但查询慢)、Hierarchical(推荐——最近原文 + 中期摘要 + 远期向量召回)。
关键操作三件套: 压缩 / 检索 / 遗忘(decay)。本章还讨论了"Memory 隐私"——用户要求删除特定记忆的工程实现。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

让 Agent "记住事"——从"每次对话都失忆"的 stateless LLM,升级为能跨会话记得用户偏好、过往任务、领域知识的真正智能体。书中说这是"agent 实用化"的硬门槛。

🧠 核心机制:双层 / 三层记忆模型

书中给的工业级 Memory 分层:

  • ① Short-term(工作记忆):当前对话的 message 历史,存在 LLM context window 里。受 token 上限约束
  • ② Long-term(语义记忆):跨会话的事实、偏好、知识。存在向量数据库(Chroma、Pinecone、Weaviate),按语义检索
  • ③ Episodic(情景记忆):过去完整任务的执行轨迹,可作 few-shot 示例反哺新任务

🛠 实战要点(以 Google ADK 为例)

  • Session:一次连续对话的容器,包含 events(消息历史)+ state(临时数据)
  • State:一个 dict,按前缀区分作用域:user:(跨 session 的用户级)、app:(跨用户的全局)、temp:(仅当前 session)
  • MemoryService:长期记忆的接口,对接外部向量库
  • 更新方式:用 EventActions.state_delta 或 output_key,不要直接改 state dict(会绕过 framework 的 audit 和持久化)

📐 长对话压缩 4 策略

  • ① Sliding Window:只保留最近 N 轮(简单粗暴,丢早期信息)
  • ② Summarization:旧消息总结成一段(信息有损,细节丢失)
  • ③ Vector Recall:旧消息存向量库按需检索(无损但查询慢)
  • ④ Hierarchical(推荐):最近原文 + 中期摘要 + 远期向量召回,三者组合

⚠️ 易错点

  • Memory 隐私:用户要求删除某条记忆怎么办?必须支持逐条 DELETE(这也是 memory 比 fine-tuning 优越的地方之一)
  • 关键信息只存摘要:丢细节后后续无法精确引用——必须 keep raw snippets in vector store
  • 没设 TTL(Time-To-Live):老旧记忆累积成噪声,影响检索准确度

🔗 与其他章节

Memory 是 Learning & Adaptation (Ch9) 的底层基础设施(memory-based learning 直接读写 episodic memory)。与 RAG (Ch14) 在技术栈上高度重叠(都用向量库)但目的不同:RAG 检索外部知识,Memory 检索 Agent 自身经验。

💡核心概念

Multi-Agent 的 4 种协作拓扑
详见摘要。90% 的实际项目用 Supervisor 就够了——简单可控。Peer 拓扑 debug 噩梦。
"Multi-Agent 比单 Agent 更好"是个误区
很多 multi-agent 系统效果不如一个设计良好的单 Agent。
真正需要 multi-agent 的场景:
· 不同角色需要不同 system prompt / 不同模型
· 任务可以真正并行
· 需要专业化的工具集隔离
Memory 的三层模型
① Short-term:当前对话 message 列表
② Long-term:跨会话事实,向量库
③ Episodic:过去任务执行记录
对话过长时的 4 种处理策略
① Sliding Window;② Summarization;③ Vector Recall;④ Hierarchical(推荐)

🛠本周动手项目

项目 W4:产品需求协作团队 Agent(Multi-Agent + Memory)

用 LangGraph 实现 4 个角色 Agent:

· PM Agent:写需求和用户故事
· Designer Agent:评估交互合理性
· Engineer Agent:评估技术可行性、估时
· Supervisor:协调,最终汇总成 PRD

加分层 Memory:每个 Agent 维护自己的工作记忆,Supervisor 持有全局 episodic memory(记录哪些方案被否决过,避免兜圈)。

LangGraphChroma 向量库~500 行

📝本周自测题

Q1.下面哪种情况最不适合用 Multi-Agent?
  • 需要安全和功能 Agent 严格隔离权限
  • 需要并行从 3 个不同视角分析
  • 一个清晰的 5 步线性任务
  • 不同子任务需要完全不同的 system prompt
答案:C。线性 5 步任务用 Chain / Plan-and-Execute 单 Agent 就够。
Q2.Supervisor 拓扑相比 Peer 拓扑的最大优势?
  • 效率更高
  • 控制流清晰、可观测、易调试
  • 能处理更复杂的任务
  • 不需要 Memory
答案:B。所有路径都过 supervisor,可以 trace 全过程。
Q3.Long-term Memory 一般用什么存储?
  • 关系数据库
  • 文件系统
  • 向量数据库(embedding + ANN 检索)
  • Redis 等 KV 存储
答案:C。长期记忆需要"按语义"检索而非精确匹配。
Q4.对话历史的"摘要式压缩"最大的代价是?
  • 速度慢
  • 成本高
  • 信息有损——细节会被丢失,影响后续精确引用
  • 不能用于多语言
答案:C。所以推荐 Hierarchical:摘要 + 关键原文向量召回。
Q5.Episodic Memory 主要用来?
  • 存用户的偏好
  • 把成功 / 失败的过往任务执行记录作为 few-shot 示例反哺当前任务
  • 缓存 LLM 调用结果
  • 存系统配置
答案:B。Episodic = "情景",存的是"做过什么"的完整轨迹。

W5Learning & Adaptation + MCP + Goal Setting

本周目标:理解 Agent 如何"在线学习"、掌握 MCP 协议、学会给 Agent 设目标和监控。

📍原文定位 + 章节摘要

Chapter 9 · Learning and Adaptation
Agent 的"学习"不是只有 fine-tuning。三种方式:① In-Context Learning(few-shot 示例,最便宜,重启即丢);② Memory-Based Learning(成功 / 失败经验存 episodic memory,下次检索复用,这是 Agent 自我改进的主流方式);③ Parameter Update(fine-tuning / RLHF / DPO,最贵但最持久)。
选型: 大多数项目先用 ②,效果到瓶颈再考虑 ③。Memory-based 还有隐私优势——用户要求删除自己的数据时可即时生效(fine-tuned 权重几乎无法做到)。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

让 Agent "越用越聪明"——不是只有 fine-tuning 一种学习方式,而是包含 in-context learning、memory-based learning、self-modification 等多种范式,让 Agent 在动态环境中自主进化。

🧠 核心机制:3 种学习方式

  • ① In-Context Learning:通过 few-shot 示例临时学习。最便宜、最即时、但重启即丢
  • ② Memory-Based Learning:把成功 / 失败经验存进 episodic memory,下次任务前检索"过去遇到过类似情况吗",作为 few-shot 注入。这是 Agent 自我改进的主流方式——成本低、可解释、可逐条删除(隐私友好)
  • ③ Parameter Update:fine-tuning / RLHF / DPO,真改模型权重。最贵、最持久、最难撤销

🌟 前沿案例(书中重点介绍)

  • SICA (Self-Improving Coding Agent):能修改自己的代码来提升 benchmark 表现。它发明了 Smart Editor、AST Symbol Locator 等工具——典型的 self-modification
  • AlphaEvolve(Google):用 LLM + 进化算法发现新的、更高效的算法解。已经在数学、计算机科学问题上发现人类未知的解
  • RLHF/RLAIF:用人类(或 AI)偏好作为 reward signal 微调模型

🛠 实战要点

  • 架构:Sub-agent + Overseer:自我改进系统通常需要一个 overseer 监督 sub-agent 的修改不破坏稳定性
  • Context window 是关键:system prompt、core prompts、assistant messages 的组织方式决定学习效率
  • 选型路径:先尝试 ②(memory-based),效果到瓶颈再考虑 ③(fine-tune)
  • 持续学习需要数据 pipeline:经验从对话流入 memory 的过程要自动化

⚠️ 易错点

  • Self-modification 失控:让 Agent 改自己的代码很危险——必须有 overseer + 沙箱 + 回滚机制
  • Memory 噪声:错误的 episodic 记忆会污染未来决策。需要"质量过滤"或"deprecation"机制
  • Fine-tune 的成本黑洞:标注数据 + GPU 时间 + 模型评估 + 部署——比想象中贵

🔗 与其他章节

Learning 直接依赖 Memory (Ch8)。与 Reflection (Ch4) 共同构成"自我改进"机制——前者是跨任务的学习,后者是任务内的修正。Evaluation (Ch19) 是 learning 的反馈信号源。

Chapter 10 · Model Context Protocol (MCP)
Anthropic 2024 年底推出的开放协议,业界戏称"LLM 的 USB-C"。解决核心痛点: 每接一个新工具 / 数据源就要写一遍适配代码。
三个核心对象: ① Tools(可执行操作,如 query_db);② Resources(可读数据,如文件 / URI);③ Prompts(参数化 prompt 模板)。
架构: Host(Claude Desktop / IDE)↔ Client(Host 内置)↔ Server(你写的工具封装),用 JSON-RPC 通信,支持 stdio 和 SSE / HTTP 传输。
关键收益: 你写一个 MCP server,所有支持 MCP 的客户端都能直接接入——告别 N×M 适配地狱。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

Anthropic 主导的开放协议,被业界戏称为"LLM 的 USB-C"——用一套标准让 LLM 接入任何工具 / 数据源,告别"每接一个新 API 就写一遍适配代码"。2025-2026 年 Agent 工程师必备技能。

🧠 核心机制:3 类对象 + Client-Server 架构

书中明确定义 MCP 的三种核心对象:

  • ① Tools:可执行操作(如 query_database、send_email)
  • ② Resources:可读数据(如文件、URI、数据库表)
  • ③ Prompts:参数化的 prompt 模板,让 server 推荐 prompt 给 client

架构:Host(Claude Desktop / Cursor / VS Code 等)↔ Client(Host 内置的 MCP 客户端逻辑)↔ Server(你写的工具封装)。三方通过 JSON-RPC 通信,传输层支持 stdio 和 SSE / HTTP。

🛠 实战要点

  • 能力可发现:Client 启动时调用 tools/list、resources/list、prompts/list,动态发现 server 能力,不需要硬编码
  • FastMCP(书中推荐):简化 Python 实现 MCP server,几行装饰器就能暴露工具
  • MCP Tools for Genmedia Services:Google Cloud 出品,让 Agent 接入 Imagen、Veo、Chirp 3 HD、Lyria 等生成媒体能力
  • ADK 双向支持:既能消费现有 MCP server,也能把自己的工具包装成 MCP server 暴露

⚠️ 易错点(书中犀利提醒)

  • "MCP 是 agentic interface 的契约"——但很多开发者只是把遗留 API 直接 wrap 一下就当 MCP server。例如:ticketing 系统只能"按 ID 取详情",Agent 要总结所有高优先级 ticket → 又慢又不准。解药:底层 API 要为 Agent 重设计,增加 filter / sort / batch 能力
  • Schema 写得糙:description 字段还是那个老问题——LLM 用不用对全看 description
  • 认证 / 权限隔离:MCP server 暴露的工具可能被任何 client 调用,必须设计好访问控制

🔗 与其他章节

MCP 是 Tool Use (Ch5) 的标准化形态。与 A2A (Ch15) 互补:MCP 管"LLM ↔ 工具",A2A 管"Agent ↔ Agent"。在 Multi-Agent (Ch7) 系统里,每个 Agent 可以是一个 MCP client,共享同一组 MCP servers 提供的工具池。

Chapter 11 · Goal Setting and Monitoring
Agent 目标定义直接影响行为质量。SMART 原则的 Agent 版: Specific / Measurable / Achievable / Relevant / Time-bound。差:"帮我写报告";好:"产出一份不超过 5 页的 Q1 销售分析报告,结构包含 [概述/数据/洞察/建议],引用 ≥ 3 个数据源"。
Monitoring 三件套: ① Progress tracking(每个 subgoal 完成度);② Deviation detection(发现偏离目标的动作时报警,防"随机漫步");③ Self-evaluation(完成后让 Agent 自评是否达成目标)。本章是 Guardrails 章节的前奏。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

给 Agent 一个明确目标 + 进度监控机制——把"被动响应任务"的反应式 Agent,升级为"主动追逐目标 + 自我评估"的目标导向 Agent。是 autonomous operation 的核心。

🧠 核心机制:SMART 原则 + 三大监控

书中明确借用经典 SMART 原则:

  • Specific(具体)— "总结报告" ❌ vs "总结这份 5 页的 Q1 销售报告" ✅
  • Measurable(可衡量)— 必须有判断"做完了没"的客观标准
  • Achievable(可达成)— 工具 / 数据 / 时间在能力范围内
  • Relevant(相关)— 与上层目标对齐
  • Time-bound(限时)— 设 deadline 防止无限 looping

三大监控组件:① Progress Tracking(每个 subgoal 完成度);② Deviation Detection(偏离目标的动作早期报警);③ Self-Evaluation(完成后自评是否真达成)。

🛠 实战要点(Google ADK 视角)

  • 目标通过 agent instructions 传达:在 system prompt / instructions 里明确写 SMART 目标
  • State management + Tool interactions 实现监控:每个工具调用都更新 state 里的进度字段
  • 反馈循环触发 replan:监控发现偏离时,触发 Ch6 Planning 的 replan 逻辑
  • 典型用例:客服 Agent 必须"30 秒内回应" + "解决问题" + "不能透露隐私"——三类目标同时监控

⚠️ 易错点

  • 目标模糊:"做个好报告" → Agent 行为也模糊。vague goal in, vague behavior out
  • 没有进度可视化 → 用户不知道 Agent 在干啥,体验差
  • Self-evaluation 用同一模型 → self-preference bias 又来了(同 Reflection)
  • Deviation Detection 阈值太松 / 太紧:松了任 Agent 漂;紧了频繁误报

🔗 与其他章节

Goal Setting 是 Planning (Ch6) 的输入。Monitoring 是 Evaluation (Ch19) 的实时版(线上 vs 离线)。与 Guardrails (Ch18) 紧密配合——deviation detection 触发 guardrail 干预。

💡核心概念

Learning 的 3 种方式
详见摘要。Memory-based learning 是 Agent 自我改进的主流方式,比 fine-tuning 灵活、便宜、隐私友好。
MCP 解决什么问题
标准化"LLM ↔ 工具 / 数据"对接,让所有支持 MCP 的客户端共享同一个工具生态。
SMART 目标 + Monitoring 三件套
SMART:Specific / Measurable / Achievable / Relevant / Time-bound
Monitoring:Progress / Deviation / Self-eval

🛠本周动手项目

项目 W5-A:写一个 MCP Server(强烈推荐)

把上周的"运营数据查询"工具集封装成 MCP server(Python SDK),然后在 Claude Desktop / Cursor 中接入测试。MCP 是 2026 年 Agent 工程师必备技能。

mcp-python-sdkJSON-RPC~150 行
项目 W5-B:自我学习 Document Reviewer

在 Week 2 的 Document Reviewer 上加 episodic memory:每次 review 完,把"问题类型 + 修改建议 + 用户是否采纳"存起来。下次 review 时先检索相似文档的过往经验,作为 few-shot 注入到 critic。

ChromaLangChain

📝本周自测题

Q1.MCP 协议解决的核心问题是?
  • 让 LLM 更聪明
  • 标准化 LLM 与外部工具/数据的对接方式,避免每个客户端重复适配
  • 降低 LLM 推理成本
  • 让 Agent 支持多模态
答案:B。MCP 是"协议层"标准,类似 LSP 之于 IDE。
Q2.MCP 三类核心对象不包括下面哪一个?
  • Tools
  • Resources
  • Prompts
  • Models
答案:D。模型由 Host 决定,不在 MCP 协议范围内。
Q3.Memory-based learning 相比 fine-tuning 的优势?
  • 效果更好
  • 可即时生效、可解释、可逐条删除(隐私友好)
  • 不消耗 token
  • 不需要标注
答案:B。"用户要求删除自己的数据"——fine-tuned 权重几乎无法做到。
Q4.给 Agent 设目标时,下面哪个写法最有效?
  • "帮我做调研"
  • "做一个很好的调研报告"
  • "在 30 分钟内产出一份关于 [topic] 的调研报告,包含 [3 个竞品 / 市场规模 / 用户反馈] 三部分,引用至少 5 个 1 年内的来源"
  • "做一份让老板满意的调研"
答案:C。SMART 原则。
Q5.Goal Monitoring 中的 "Deviation Detection" 指的是?
  • 监测 Agent 的延迟
  • 监测 Agent 当前动作是否偏离原始目标(如越界、跑题、滥用工具)
  • 监测 LLM 输出的统计分布
  • 监测内存占用
答案:B。防止 Agent "随机漫步"的关键机制。

W6Exception Handling + Human-in-the-Loop + RAG

本周目标:把 Agent 从 demo 推向 production——会处理错误、知道何时找人、能用外部知识。

📍原文定位 + 章节摘要

Chapter 12 · Exception Handling and Recovery
Agent 异常的五种类型 + 处理策略:① Tool 失败(429 / timeout)→ 指数退避重试 + 降级;② LLM 输出格式错(不合 schema)→ 反馈给 LLM 让它自纠;③ 逻辑死循环(反复调用同一工具)→ 最大步数 + 循环模式检测;④ 超 context window → 触发 memory 压缩 / 任务拆分;⑤ 权限不足 → 转 Human-in-the-Loop。
原则: 能自己解决就别打扰人;解决不了立刻寻求人类协助;永远不要静默失败——一定要日志 + 通知。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

让 Agent 在真实世界的各种故障下不崩——从 tool 失败、API 限流、模型超时、context 溢出到权限不足,每种异常都有标准处置策略。是 Agent 从 demo 推向 production 的硬门槛。

🧠 核心机制:错误检测 + 处理 + 恢复

书中把 Exception Handling 拆解为三阶段:

  • ① Error Detection:识别异常——invalid tool output、API 错误码(404、500)、超长响应、不合预期 schema、其他 Agent 的监控信号
  • ② Handling Strategies:① Logging(记录便于诊断);② Retries(指数退避);③ Fallbacks(降级到备用工具);④ Graceful Degradation(降级输出);⑤ Notifications(通知运维或用户)
  • ③ Recovery:① State Rollback;② Diagnosis(找根因);③ Self-Correction(Agent 自己调整 plan);④ Escalation(转人工)

🛠 5 种典型异常 + 对策

  • ① Tool 失败(429 / timeout)→ 指数退避重试 + 降级到备用工具
  • ② LLM 输出格式错(不合 JSON Schema)→ 把错误信息反馈给 LLM 让它自纠
  • ③ 逻辑死循环(反复调用同一工具)→ 最大步数 + 模式检测 → 中断 + replan
  • ④ Context 溢出→ 触发 memory 压缩 / 任务拆分
  • ⑤ 权限不足→ 抛给 Human-in-the-Loop(escalation)

⚠️ 核心原则

  • 能自己解决就别打扰人,解决不了立刻寻求人类协助,永远不要静默失败
  • 每次失败都要 log——便于后续 root cause 分析和 retroactive testing
  • 区分 transient vs permanent 错误:transient(如 network blip)适合 retry;permanent(如 invalid API key)retry 没意义,直接 escalate

📚 典型应用

  • 客服 Bot:数据库连不上时降级到 cached FAQ
  • 交易 Bot:金融 API 错误时立即停止并通知交易员
  • 智能家居 Agent:设备掉线时尝试重连 + 用户提示

🔗 与其他章节

Exception Handling 是 Planning (Ch6) 中 Replan 的触发器。Escalation 直接对接 Human-in-the-Loop (Ch13)。与 Goal Setting (Ch11) 的 monitoring 共享同一套基础设施(state tracking + alerting)。

Chapter 13 · Human-in-the-Loop
三种触发模式:① Approval Mode(高风险动作前必须人审,如转账、发邮件、写库);② Confidence Mode(Agent 置信度低于阈值时自动请求人类);③ Explicit Mode(用户主动按"暂停 / 接管"按钮)。
设计要点: ① UI 反馈必须即时——人类等 30 秒没反应就失去耐心;② 上下文要足量提供给审核者——人不该当 ML 黑盒;③ 审核结果要反哺训练,让模型逐渐减少打扰频率。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

承认"AI 不该完全自治"——把人类智慧、判断力、责任感有机嵌入到 Agent 工作流,在高风险、伦理敏感、复杂决策场景下保持人类最终掌控。是负责任 AI 部署的核心机制。

🧠 核心机制:5 种 HITL 形态

书中明确列出 5 种 human 嵌入方式:

  • ① Human Oversight:监控 Agent 表现(log review、real-time dashboard),不直接干预但有审计权
  • ② Intervention and Correction:Agent 遇到困惑时主动请求人介入,人修正错误 / 补数据 / 指导后续
  • ③ Human Feedback for Learning:人对输出打分(赞/踩)作为模型改进的 reward signal(RLHF 的精神)
  • ④ Decision Augmentation:Agent 出分析和建议,最终决策权在人——典型如医疗诊断辅助
  • ⑤ Human-Agent Collaboration:双向合作——日常处理交 Agent,创意 / 复杂判断交人

🛠 三种典型触发模式

  • Approval Mode:高风险动作前必须人审(如转账、发邮件、写数据库)
  • Confidence Mode:Agent 置信度低于阈值时自动请求人类
  • Explicit Mode:用户主动按"暂停 / 接管"按钮

📐 实战要点

  • UI 反馈必须即时:人等 30 秒没反应就失去耐心。给"思考中..."状态提示
  • 上下文要足量:给审核者完整背景,不要让人当 ML 黑盒
  • Escalation 政策必须明确:什么情况升级、升级给谁、SLA 多久回复
  • 审核结果反哺训练:人的纠正信号要回流到模型 / memory,让 Agent 下次少打扰

⚠️ 易错点(书中重点警示)

  • Scalability vs Accuracy trade-off:HITL 越多越准,但人手是瓶颈——必须设计"何时一定要人"的明确规则
  • 依赖高技能领域专家:医疗 / 法律 HITL 需要专业人员,不是随便招个 reviewer
  • 隐私问题:把数据展示给人审核可能涉及 PII,需要 anonymization
  • Trainer fatigue:长时间审核 AI 输出会让人疲劳,准确率下降——需要轮岗机制

🔗 与其他章节

HITL 是 Exception Handling (Ch12) 中 escalation 的去处。与 Guardrails (Ch18) 互补——前者是兜底机制,后者是预防机制。Human feedback 是 Learning & Adaptation (Ch9) 的高质量信号源。

Chapter 14 · Knowledge Retrieval (RAG)
RAG 不是"接个向量库就完事"。四个高频失败模式: ① 检索召回差(embedding 选错或没 reranker);② chunk 边界毁信息(事实被切两半);③ LLM 不用检索结果(按训练知识答);④ 幻觉引用(编造检索里没有的内容)。
对应解药: ① Reranker(Cohere / bge-reranker);② 重叠 chunking + parent doc retrieval;③ "只能基于以下文档回答"严格 prompt;④ 引用校验(NLI 模型逐句对照 source)。
Advanced RAG 升级路径: Query Rewriting → Hybrid Search(dense + sparse / BM25)→ Reranking → HyDE → GraphRAG(多跳推理)。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

让 LLM "先查书再答"——通过检索外部知识库(文档、数据库、web),把实时、领域特定、可溯源的信息注入 prompt,克服 LLM 静态训练知识的局限,大幅减少幻觉。RAG 是 2023+ 最重要的 Agent 模式之一。

🧠 核心机制:Retrieval + Augmentation + Generation

书中给的标准流程:

  1. Query 进来:不直接送 LLM
  2. 语义检索:把 query 转 embedding → 向量库找最相似的 chunks
  3. Augmentation:检索结果 + 原 query 拼成"增强 prompt"
  4. LLM 生成:基于增强 prompt 输出回答(可附引用)

🌟 RAG 的 4 大收益

  • ① 实时知识:突破训练时间 cutoff
  • ② 减少幻觉:让模型基于检索内容回答而非凭空编造
  • ③ 领域专精:用企业内部文档让通用 LLM 变专家
  • ④ 可溯源:每个答案能指出来自哪份文档

📐 Advanced RAG(超越 Naive RAG)

  • Query Rewriting:用 LLM 改写用户原始 query 让检索更准
  • Hybrid Search:dense (embedding) + sparse (BM25) 融合,对术语 / 缩写更友好
  • Reranker:粗排返回 100 条 → 用 cross-encoder 精排选前 5
  • HyDE:先让 LLM 生成"假设答案",用假设答案的 embedding 去检索
  • GraphRAG(书中专门介绍):构造知识图谱表达实体关系,能回答多跳推理问题(如"X 和 Y 有什么关联?")
  • Agentic RAG(书中重点):用 Agent 主动 reason + validate + refine 检索结果,而非被动用之

⚠️ 常见失败模式

  • ① 检索召回差:embedding 选错或没 reranker → 相关文档进不来。这是最常见的 RAG 故障
  • ② Chunk 切坏:把"金额是" + "100 万"切两半 → 事实丢失。解药:重叠 chunking 或 parent doc retrieval
  • ③ LLM 不用检索结果:仍按训练知识答。解药:"你只能基于以下文档回答"的严格 prompt
  • ④ 引用幻觉:检索回来了 ABC,LLM 编造"根据文档 D"。解药:output validation——用 NLI 模型逐句对照 source

📚 典型应用

企业搜索、客服知识库、法律研究、个性化推荐、医疗文献查询。

🔗 与其他章节

RAG 与 Memory (Ch8) 技术栈高度重叠但目的不同:RAG 检索外部知识,Memory 检索自身经验。在 Multi-Agent (Ch7) 里一个 Retrieval Agent 经常独立存在。Agentic RAG 把 Reflection (Ch4) + Planning (Ch6) 引入检索流程。

💡核心概念

Agent 异常的 5 种类型 + 处理策略
详见摘要。原则:能自己解决就别打扰人,解决不了立刻寻求人类协助,永远不要静默失败。
Human-in-the-Loop 的 3 种触发模式
Approval / Confidence / Explicit。详见摘要。
RAG 的 4 个失败模式 + Advanced RAG
详见摘要。选型:单文档问答用 naive;企业知识库用 hybrid + rerank;多跳推理用 GraphRAG。

🛠本周动手项目

项目 W6:企业知识库 Bot(RAG + HIL + 异常处理)

构造一个能回答企业内部知识问题的 Agent(任何你能拿到的文档都行,比如个人 Notion / Obsidian / 开源项目文档):

· 把文档 ingest 进向量库
· 用 Query Rewriting + Hybrid Search + bge-reranker
· 输出附引用(source citation)
· 当 confidence < 0.6 或问题涉及修改权限时,转 HIL → @on-call admin
· 所有工具调用带 retry + timeout 异常处理

LangGraphChromabge-reranker~600 行

📝本周自测题

Q1.Agent 检测到"反复调用同一工具且参数相似"应该?
  • 继续调用直到成功
  • 触发"循环检测"机制——中断当前路径,replan 或寻求人类协助
  • 忽略,相信 LLM 的判断
  • 降低 temperature 再试
答案:B。"工具调用环"是 Agent 卡死的常见原因。
Q2.下面哪个动作最适合用 Approval Mode HIL?
  • 查询数据
  • 总结邮件
  • 替用户给客户发出正式邮件
  • 读取文件
答案:C。不可逆 + 外部影响 + 高风险 → 必须人审。
Q3.Naive RAG 最常见的失败模式是?
  • 向量库太慢
  • 检索召回不足或 chunk 切坏,正确答案根本没进 LLM 上下文
  • LLM 不会用工具
  • JSON 解析失败
答案:B。"检索都没召回,再聪明的 LLM 也答不对"——RAG 第一性原理。
Q4.HyDE (Hypothetical Document Embedding) 的核心思路?
  • 把文档先翻译成英文再 embed
  • 用 LLM 生成一个假设答案,用假设答案的 embedding 去检索真实文档
  • 用图神经网络做检索
  • 把文档摘要后再 embed
答案:B。问题往往很短抽象,假设答案的形态更接近真实文档。
Q5.RAG 系统的"引用校验"主要防什么?
  • 检索慢
  • LLM 在最终回答里编造检索结果中实际不存在的内容
  • 向量库爆满
  • 用户输入注入
答案:B。"引用幻觉"是企业 RAG 上线前必须解决的问题。

W7A2A 通信 + 资源优化 + 推理 + 护栏

本周目标:进入企业级 Agent 工程——Agent 间标准通信、成本优化、复杂推理、安全护栏。

📍原文定位 + 章节摘要

Chapter 15 · Inter-Agent Communication (A2A)
Google 主导的 Agent-to-Agent 通信协议。A2A 与 MCP 的关系:互补,不冲突。MCP 管"LLM ↔ 工具 / 数据"(Agent 内部能力扩展),A2A 管"Agent ↔ Agent"(跨 Agent 协作)。类比:MCP 是"USB-C",A2A 是"HTTP"。
核心能力: Agent Card(能力宣告)、Task(任务对象)、Message(消息)、Streaming(流式响应)。让你的 LangChain Agent 调用别家 CrewAI Agent 的能力成为可能。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

Google 主导的开放跨框架 Agent 通信协议——让 LangChain Agent、CrewAI Agent、Google ADK Agent、自研 Agent 能通过同一套 HTTP 标准互相调用、协作完成任务。是 Agent 生态走向"互联互通"的关键基础设施。

🧠 核心机制:6 大概念支柱

书中详细介绍 A2A 的六大基础概念:

  • ① Core Actors:Client Agent(发起方)+ Remote Agent(响应方)
  • ② Agent Card:Agent 的"数字身份证"——JSON 文件,描述 capabilities、skills、endpoint、auth 等。其他 Agent 通过它发现你
  • ③ Agent Discovery:根据 Agent Card 自动发现网络中的可用 Agent
  • ④ Communication & Tasks:用 tasks/send(同步请求-响应)和 tasks/sendSubscribe(流式更新)
  • ⑤ Interaction Mechanisms:支持同步、异步、流式、多轮对话(input-required 状态让 Agent 能要求补充信息)
  • ⑥ Security:认证、授权、加密的标准做法

🌟 生态支持

书中列出的支持者(这是协议生死的关键):Atlassian、Box、LangChain、MongoDB、Salesforce、SAP、ServiceNow。Microsoft 计划集成到 Azure AI Foundry 和 Copilot Studio。Auth0、SAP 也在做 A2A 集成。

🛠 实战要点

  • 每个 Agent 一个独立 port:模块化、独立部署、可水平扩展
  • Trickle AI:可视化 + 追踪 A2A 通信的工具,对 debug 多 Agent 系统极有帮助
  • 典型用例:你的 Agent 需要发邮件 → 调用 Salesforce 的 A2A Agent;需要订机票 → 调用旅行平台的 A2A Agent

⚠️ 易错点

  • 认证 / 信任问题:跨组织调用 Agent 时如何确认对方身份、如何限制权限——A2A 提供协议但不解决信任本身
  • 失败处理:远程 Agent 挂了 / 慢了 / 给错答案——必须有 timeout、retry、fallback
  • 语义不一致:你的 Agent 理解的"订单"和别家 Agent 不一样——需要 shared ontology

📐 A2A vs MCP(关键区分)

  • MCP:管"LLM ↔ 工具 / 数据"(Agent 内部能力扩展)— 类比 USB-C
  • A2A:管"Agent ↔ Agent"(不同 Agent 跨组织 / 跨框架协作)— 类比 HTTP
  • 不冲突,互补:一个 Agent 内部用 MCP 接工具,对外用 A2A 暴露能力

🔗 与其他章节

A2A 是 Multi-Agent (Ch7) 跨组织 / 跨技术栈的标准化形态。与 MCP (Ch10) 互补。在 Resource-Aware Optimization (Ch16) 中可用 A2A 做"远程便宜 Agent 处理简单任务"。

Chapter 16 · Resource-Aware Optimization
四个优化维度:① Token 成本(动态选模型:简单任务 Haiku,复杂任务 Opus);② Latency(能并行就并行 + 预测式缓存);③ 内存(长任务用 streaming summary);④ API 配额(限速器 + 调用预算)。
实战王牌——模型路由前置: 先用便宜小模型判断任务难度,再决定主模型。可以把成本降 60% 而效果几乎不变。本章给出 token 预算追踪的工程实现。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

让 Agent 会"省钱省时"——根据任务复杂度动态选模型 / 工具 / 路径,平衡输出质量与计算 / 时间 / 金钱资源消耗。在 GPT-4 / Claude Opus 一次调用动辄几毛甚至几块的时代,资源优化是规模化部署的命脉。

🧠 核心机制:多 Agent 路由架构

书中给的经典架构:

  • ① Router Agent:先对 incoming query 做 complexity classification
  • ② Specialized Agents:根据复杂度路由到合适模型——简单 query 用便宜小模型(如 Gemini Flash),复杂推理用大模型(如 Gemini Pro)
  • ③ Critique Agent:评估回答质量,给 router 反馈,持续优化路由策略

🛠 4 大优化维度

  • ① Token 成本:动态选模型 + prompt compression + 用 prompt caching(Anthropic / OpenAI 都支持)
  • ② Latency:能并行就并行;常见 query 做预测式缓存
  • ③ 内存:长任务用 streaming summary 而非全量历史
  • ④ API 配额:限速器 + 调用预算追踪

💰 模型路由的实战公式

书中暗示的 cost-saving 套路:

  • 路由前置:先用 GPT-3.5 / Haiku / Flash 这种便宜模型(成本是大模型的 1/10-1/30)判断任务难度
  • 根据难度调用:简单 → Haiku;中等 → Sonnet;最复杂 → Opus
  • 实际效果:可把 token 成本降 60-80% 而效果几乎不变(前提是 router 准)

⚠️ 易错点

  • Router 自己很贵:如果 router 用 GPT-4 来判断难度,加起来比直接用 GPT-4 还贵——router 必须用便宜模型
  • 难度分类错误:把复杂任务 route 到小模型 → 答案差。需要 critique 反馈持续校准
  • 忽略 latency tail:平均延迟低 ≠ p99 延迟低,p99 才决定用户体验
  • 缓存命中率监控:缓存设了不监控 = 不知道实际收益

📐 Critique Agent 的角色

书中强调 critique 不只是给最终用户的"我说得好不好"——它是反哺 router的关键:当 critique 频繁报告"小模型答得不够好"时,router 自动提升下次相似 query 的模型选择。这是 self-correcting routing。

🔗 与其他章节

Resource-Aware Optimization 大量复用 Routing (Ch2) 思想。Critique Agent 本质是 Reflection (Ch4) 的应用。在 Multi-Agent (Ch7) 框架内自然实现。Evaluation (Ch19) 提供长期的 router 性能数据。

Chapter 17 · Reasoning Techniques
主流推理技巧:CoT(让模型显式写思考过程)、ToT(Tree-of-Thoughts:搜索多个分支并剪枝,token 消耗 5-10×)、Self-Consistency(多次采样投票)、Reflection(见 Week 2)、Program-Aided Reasoning(LLM 写代码 → 执行 → 拿结果,数学任务近 100% 准确)、Reasoning Models(o1 / o3 / Claude thinking 等模型内置 reasoning)。
选型: 算数 / 逻辑 → Program-Aided;开放分析 → CoT + Self-Consistency;战略决策 → ToT。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

把 LLM 的"思考过程"显式化、结构化、可纠错——通过 CoT、ToT、Self-Consistency、Self-Correction、Program-Aided、ReAct 等技巧,让 Agent 处理需要多步逻辑、决策权衡、外部交互的复杂任务。这是 Agent 智能上限的决定性章节。

🧠 核心范式速览(按从简单到复杂排列)

  • ① CoT (Chain-of-Thought):让模型显式写"我先想 A,再想 B,所以是 C"——Agent 的"内心独白"。简单加一句"Let's think step by step"就有效
  • ② Self-Consistency:CoT 跑 N 次(高 temperature),选多数投票答案。对推理 / 数学题特别有效
  • ③ ToT (Tree-of-Thoughts):搜索多个 reasoning 分支并剪枝,能"回溯"——避免单链推理一错到底。代价:token 5-10×
  • ④ Self-Correction:Agent 先答 → 自检 → 修正(Reflection 的推理版)
  • ⑤ Program-Aided Reasoning:LLM 写 Python 代码 → 执行 → 拿结果。对算术 / 统计 / 数据处理近 100% 准
  • ⑥ ReAct (Reason + Act):交替输出 Thought / Action / Observation,让推理过程可见可纠,是整本书最重要的范式之一
  • ⑦ Reasoning Models:o1 / o3 / Claude thinking——模型内置 reasoning,不需要 CoT prompt 也能深度思考

📈 Scaling Inference Law(书中重要概念)

"Agent 的表现不只取决于模型大小,更取决于 allocated thinking time"——给 Agent 更多推理预算(更多 token 、更多步、更多 ToT 分支),即便用同样模型,结果质量显著提升。这彻底改变了"必须用最大模型"的固有思路。

🛠 实战选型

  • 算术 / 逻辑 / SQL / 数据处理→ Program-Aided(让代码执行做精确计算)
  • 开放分析 / 文本理解→ CoT + Self-Consistency
  • 需要工具交互的任务→ ReAct
  • 战略决策 / 路径规划→ ToT
  • 多步任务 + 不确定→ ReAct + Self-Correction 组合

⚠️ 易错点

  • 用 CoT 做算术—— LLM 算 7×13=91 有时也错。Program-Aided 才对
  • ToT 不剪枝—— token 爆炸,成本失控
  • ReAct 没设最大步数—— Agent 在工具间"鬼打墙"
  • Reasoning Models 上当成普通 LLM 用——o1/o3 这类模型不该再加 CoT prompt,会冗余

🔗 与其他章节

Reasoning Techniques 是 Planning (Ch6)、Tool Use (Ch5)、Reflection (Ch4) 的"技巧集合"。ReAct 是 Planning + Tool Use 的具体范式。Self-Consistency 是 Parallelization (Ch3) 在推理上的应用。Program-Aided 实质是 Tool Use 的特例。

Chapter 18 · Guardrails / Safety Patterns
三层防护:① Input Guardrails(检测 prompt 注入、PII、违规内容);② Output Guardrails(检测幻觉、敏感泄露、JSON schema 违规);③ Action Guardrails(高风险工具调用前的策略检查:白名单、金额上限、权限校验)。
关键原则: 护栏必须独立于 Agent 主模型——同一个 LLM 既当裁判又当运动员等于没护栏。可选工具:NVIDIA NeMo Guardrails、Guardrails AI、Llama Guard。
本章还讨论了"对抗性输入"——越狱 prompt、间接注入(如让 Agent 读一封含恶意指令的邮件)。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

给 Agent 装"多层防护栏"——防 prompt injection、防有害输出、防数据泄露、防越权操作、防越狱。Guardrails 是负责任 AI 部署的最低门槛,没有它任何 Agent 都不应该上线。

🧠 核心机制:三层防御

书中明确列出 Guardrails 的三层架构:

  • ① Input Guardrails:检测 prompt 注入、PII 泄露请求、违规内容、越狱尝试(如经典"ignore all previous instructions")
  • ② Output Guardrails:检测幻觉、敏感信息泄露、JSON schema 违规、有害言论、品牌敏感词
  • ③ Action Guardrails:高风险动作前的策略检查——白名单(如只能调特定 API)、金额上限(转账≤500)、权限校验(用户身份核验)

🛡 5 大实现手段

  • ① Input validation:分类器 + 规则检测恶意 query
  • ② Output filtering:用专门模型(如 Llama Guard、OpenAI Moderation)筛选输出
  • ③ Behavioral prompting:在 system prompt 里明确写"绝不讨论 X"、"必须用礼貌语言"等
  • ④ Tool use restrictions:限制 Agent 能调用哪些工具、什么参数范围
  • ⑤ External moderation:把内容送给独立审核服务

📐 黄金原则(书中反复强调)

  • Guardrails 必须独立于主 Agent 模型——同一个 LLM 既当"裁判"又当"运动员"等于没护栏。同样的偏见 / 漏洞 / 攻击面会同步存在
  • 多种技巧组合使用比依赖单一手段更稳——纵深防御
  • 持续监控 + 迭代:攻击方式在演化,guardrails 也要
  • 把 Agent 当传统软件工程对待:fault tolerance、state management、robust testing——这些经典工程实践不能因为是 AI 就忽略

🔧 可选工具栈

  • NVIDIA NeMo Guardrails:开源 framework,用 Colang 语言定义对话流和安全规则
  • Guardrails AI:Python 库,校验 LLM 输出结构和内容
  • Llama Guard:Meta 开源的内容审核模型,专门做 Input/Output filtering
  • OpenAI Moderation API:成熟的有害内容分类服务

⚠️ 易错点

  • "对抗性输入"考虑不足:jailbreak prompt、间接注入(如让 Agent 读一封含恶意指令的邮件)
  • 过度防护:把 Agent 锁太死导致正常需求被拒,用户体验差
  • Guardrail 自己出错:分类器误判正常内容为违规(false positive)
  • 没 audit log:被攻击后无法追踪手段

🔗 与其他章节

Guardrails 与 Goal Setting / Monitoring (Ch11) 的 deviation detection 联动——前者预防,后者侦测。Action guardrails 与 Human-in-the-Loop (Ch13) 的 approval mode 紧密配合。Evaluation (Ch19) 测的是 guardrails 是否有效。

💡核心概念

A2A vs MCP:两个协议的分工
2025+ 两个并存协议,不冲突:MCP 管"LLM ↔ 工具/数据",A2A 管"Agent ↔ Agent"。
Resource-Aware Optimization 的核心套路
"路由前置"——先用便宜模型判断任务难度,再决定后续用什么模型。可以把成本降 60%。
主流 Reasoning 技巧速览
CoT / ToT / Self-Consistency / Program-Aided / Reasoning Models。
选型:算数 → Program-Aided;战略 → ToT;推理 → CoT + Self-Consistency。
Guardrails 的 3 层防护
① Input;② Output;③ Action。
关键:护栏必须独立于 Agent 主模型。

🛠本周动手项目

项目 W7:成本优化版协作系统

升级 Week 4 的多 Agent 系统:

· 加 模型路由:简单问答用 Haiku,主要生成用 Sonnet,关键 review 用 Opus
· 加 3 层 Guardrails:input 防 prompt injection、output 防泄露、action 防越权写入
· 加 Reasoning 增强:技术可行性评估用 Program-Aided(让 Engineer Agent 写 Python 估算成本和 RPS)
· 实现一个 A2A 接口:让 PM Agent 能被外部系统通过 HTTP 调用

LangGraphNeMo GuardrailsFastAPI

📝本周自测题

Q1.MCP 和 A2A 的关系?
  • A2A 是 MCP 的升级版
  • 两者互斥,二选一
  • 两者互补:MCP 管 Agent 内"用工具",A2A 管 Agent 间"协作"
  • 两者都已废弃
答案:C。一个 Agent 内部用 MCP 接工具,对外用 A2A 暴露能力,是企业 Agent 标配。
Q2.Resource-Aware Optimization 中"模型路由"最经济的形态?
  • 所有任务都用最贵的模型
  • 用便宜小模型先判断任务复杂度,再决定主模型
  • 永远用最便宜的模型
  • 随机选模型
答案:B。"分类器+主模型"两段式是最普遍的 cost-saving 模式。
Q3.对一个"5 + 7 等于多少"类型的算术任务,下列哪种推理方式最稳?
  • CoT
  • ToT
  • Program-Aided(让 LLM 写代码并执行)
  • Self-Consistency
答案:C。算术 / 数据处理交给代码执行,准确率几乎 100%。
Q4.Guardrails 设计的原则性错误是?
  • 既做 input 又做 output 防护
  • 使用专门的小模型做分类
  • 用主 Agent 自己当 guardrail(自己审自己)
  • 设置 action 级别白名单
答案:C。"自己当裁判"等于没护栏——同样的偏见 / 漏洞会同步存在。
Q5.ToT (Tree-of-Thoughts) 比 CoT 强在哪里?
  • 速度更快
  • 能搜索多个推理路径并剪枝,避免单链推理错到底
  • 不需要 LLM
  • 成本更低
答案:B。代价是 token 消耗 5-10 倍;只在高价值复杂决策上用。

W8Evaluation + Prioritization + Exploration + 综合项目

本周目标:学会怎么测一个 Agent 真的好不好;完成一个集大成的 capstone 项目。

📍原文定位 + 章节摘要

Chapter 19 · Evaluation and Monitoring
三层评估: ① Component-level(单步 LLM 调用、单工具准确率,用静态数据集);② Trajectory-level(整个执行轨迹是否合理:步骤数、工具选择、是否绕路);③ End-to-end(最终输出是否满足目标)。
常见错误:只测端到端——失败的 trace 不知道哪步坏了。三层都要测。
LLM-as-Judge 正确用法: 不要用同一模型同时生成和判断(自我偏好);给 judge 明确 rubric;让 judge 必须说理由;定期用人类标注校准。
监控指标: 任务成功率、平均步数、平均成本、p99 延迟、用户满意度、tool error 率、loop 检测率。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

让 Agent 不是"上线了就完事"——通过结构化评估 + 实时监控,持续衡量 Agent 的有效性、效率、合规性,发现退化、捕获异常、为持续改进提供数据。是 Agent 生命周期管理的最后一块拼图。

🧠 核心机制:3 层评估

书中强调评估必须分层做,只测端到端是不够的:

  • ① Component-level:单步 LLM 调用、单个工具的准确率(用静态数据集做单元测试)
  • ② Trajectory-level:整个执行轨迹是否合理——步骤数、工具选择、是否绕路。这是 Agent 特有的评估维度,对照"理想 ground-truth 轨迹"找偏差
  • ③ End-to-end:最终输出是否满足用户目标(任务成功率、用户满意度)

📐 LLM-as-Judge(重点技巧)

用 LLM 自动评估输出已是工业标配,但有坑:

  • 不要用同一个模型同时生成和判断 — self-preference bias 又来了
  • 给 judge 明确的 rubric:"评分 1-5,依据下列 5 个维度"
  • 让 judge 必须说理由(chain-of-thought judge)— 提升准确性 + 可审计
  • 定期用人类标注校准 — 防止 judge drift

🛠 实战要点(ADK 视角)

  • Test Files:定义单条用例,做单元测试(component-level)
  • EvalSet Files:定义场景,做集成测试(trajectory + end-to-end)
  • 3 种执行方式:① Web UI(交互式 debug);② pytest(CI/CD 集成);③ CLI(批量自动化)
  • 核心指标:accuracy(响应正确率)+ latency(响应延迟)+ token usage(成本)+ trajectory quality(路径合理性)

📊 监控的实战指标

  • 任务成功率(最终输出是否满足目标)
  • 平均步数 / 平均成本(resource consumption)
  • p99 延迟(tail latency 决定用户体验)
  • Tool error rate(工具失败率)
  • Loop detection rate(死循环触发率)
  • HITL escalation rate(升级人工率)
  • User satisfaction score(用户主动评分)

⚠️ 常见错误

  • 只测最终输出——失败的 trace 不知道哪步坏;好的输出也可能来自"坏轨迹+运气"
  • 没有 A/B testing——模型 / prompt 改了不知道改善还是退步
  • 没监控 data drift——线上输入分布偷偷变化,模型悄悄退化
  • 评估集不更新——3 个月前的 test cases 已经不能代表当前场景

🔗 与其他章节

Evaluation 是 Goal Setting (Ch11) 的离线 / 长期版本。是 Learning & Adaptation (Ch9) 的反馈源(评估结果驱动学习)。监测 Guardrails (Ch18) 的实际效果。在 Multi-Agent (Ch7) 中特别难做(要评估"整体协作质量"而非单个 Agent)。

Chapter 20 · Prioritization
Agent 多任务时如何排序:① Urgency(deadline 近的优先);② Impact(影响后续多少步骤);③ Uncertainty(先做最不确定的,避免后期返工);④ Dependency(被依赖的先做)。
实战模板: 让 Agent 在 plan 阶段就输出每个 task 的 {urgency, impact, uncertainty, deps},executor 按综合分数取任务。本章还讨论了"动态重排"——执行过程中根据中间结果重新打分。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

让 Agent 在"多个相互冲突的任务和目标"面前做出合理选择——综合 urgency、importance、dependencies、resource cost 等维度,决定先做什么、跳过什么、停掉什么。是 Agent 从"按命令执行"升级为"自主决策"的关键能力。

🧠 核心机制:4 大评估维度

书中明确列出 prioritization 的判断标准:

  • ① Urgency(紧急度)— deadline、时效性
  • ② Importance(重要性)— 对主目标的影响程度
  • ③ Dependencies(依赖)— 这个任务是否是其他任务的前提
  • ④ Resource Availability(资源可用性)— 需要的工具 / 数据 / 算力是否就绪
  • ⑤ Cost/Benefit(成本-收益分析)— 投入产出比
  • ⑥ User Preferences(用户偏好)— 个性化场景下用户的偏好排序

🛠 实现 4 步法

  1. Criteria Definition:明确各维度的定义和权重
  2. Task Evaluation:对每个候选任务按 criteria 打分(用规则 / LLM reasoning / hybrid)
  3. Scheduling / Selection Logic:算法(queue、A*、heuristic)选出下一步
  4. Dynamic Re-prioritization:环境变化时重新评分——这是关键能力,让 Agent 能在 deadline 临近、紧急事件出现时立刻调整

📐 两层优先级

  • Strategic(战略层):长期目标排序——比如季度 OKR
  • Tactical(战术层):当下下一步动作选择——比如"先回复邮件还是先开会"

🛠 实战 prompt 模板

书中暗示的工业实践:让 Agent 在 plan 阶段就输出每个 task 的 priority 字段,executor 按综合分数取任务。

{
  "task": "...",
  "urgency": 0.9,      // 0-1
  "impact": 0.7,
  "uncertainty": 0.3,
  "deps": ["task_id_1"],
  "score": 0.78        // 综合分
}

⚠️ 易错点

  • 权重设错:所有任务 urgency 都打满 → 退化为先到先做
  • 不做 dynamic re-prioritization:环境变了 Agent 还在执行老优先级
  • 循环依赖:A 等 B,B 等 A → 死锁。需要 cycle detection
  • 过度重排:每个 tick 都重新排,本身就是 overhead。需要事件触发式重排

📚 典型应用

  • 个人助理 Agent:邮件 / 日历 / 待办综合排序
  • 客服 Agent:多通道工单并发时决定先处理谁
  • 运维 Agent:多告警同时到来时按 severity + impact 排
  • 电商推荐 Agent:多商品候选时按用户偏好 + 库存 + 利润排

🔗 与其他章节

Prioritization 是 Planning (Ch6) 的执行层细化——plan 给出 task 列表,prioritization 决定顺序。与 Goal Setting (Ch11) 紧密关联(goal 决定 importance 权重)。在 Multi-Agent (Ch7) Supervisor 内部往往就是个 prioritizer。

Chapter 21 · Exploration and Discovery
高级 Agent 不止"完成任务",还能"发现任务"。三种范式:① Curiosity-driven(识别知识盲点,主动检索 / 提问);② Hypothesis-driven(生成假设 → 设计实验验证);③ Anomaly Detection(发现数据中的异常作为后续动作触发器)。
典型应用: 科学研究助手(AutoGen + Code Interpreter)、自动数据洞察(DataAgent)、漏洞挖掘(fuzz Agent)、自动 A/B 测试设计助手。本章是全书最具想象力的一章,预示了未来 3-5 年 Agent 的发展方向。
📖 展开本章深度摘要(基于 PDF 原文)

🎯 一句话定位

让 Agent "主动探索未知"——不再被动等指令,而是自主识别知识盲点、生成假设、设计实验、发现"unknown unknowns"。这是真正的 Agentic AI 的终极形态,预示了未来 3-5 年 Agent 的发展方向。

🧠 核心机制:三种探索范式

  • ① Curiosity-driven Exploration:识别知识盲点("我不知道的部分"),主动检索 / 提问。类比一个好奇的研究员
  • ② Hypothesis-driven Discovery:先生成假设 → 设计实验 → 收集数据 → 验证 / 推翻。这是科学方法的自动化
  • ③ Anomaly Detection-driven:发现数据中的异常作为后续动作的触发器——典型如运维 Agent 看 metric 异常 → 自动追查根因

🌟 前沿案例(书中重点)

  • Google Co-Scientist:能自主生成科研假设、设计实验、辅助人类科学家——已经在生物医学领域帮研究者找到新候选药物
  • Agent Laboratory:多 Agent 框架,分饰研究员、实验员、写作员等角色,自动完成文献综述 → 实验 → 报告全流程
  • AlphaEvolve(与 Ch9 学习章呼应):探索 + 进化算法发现新算法

🛠 实现模式:多 Agent 模拟科学方法

书中描绘的典型架构:

  • Hypothesis Generator Agent:基于已知文献生成多个假设
  • Critic Agent:对假设的合理性、可验证性、新颖性打分
  • Experiment Designer Agent:把假设转换为可执行的实验 / 查询 / 测试
  • Evolver Agent:从结果中挑出 promising 假设,进化(变异 / 组合)成下一代
  • Report Writer Agent:把整个过程整理成可读报告

📐 典型应用

  • 科学研究助手:自动文献综述、假设生成、实验设计
  • 自动数据洞察(DataAgent 类):从公司数据中主动发现异常和机会,而非等人提问
  • 漏洞挖掘 Agent(fuzz Agent):自主探索代码 / 系统的脆弱点
  • A/B 测试设计助手:根据业务指标自动提出值得测的假设
  • 自动 prompt 工程:尝试新 prompt 变体并自评效果

⚠️ 易错点

  • 探索 vs 利用平衡:纯探索浪费资源,纯利用没新发现。需要 ε-greedy / UCB 类算法平衡
  • 假设质量不可控:生成的假设很多是低质量的——必须有强 Critic 过滤
  • 无法验证的假设:超出可用工具 / 数据范围。需要先评估"是否可测"
  • 计算成本爆炸:探索可以无限消耗资源 — 必须设 budget

🌌 哲学意义

书中把这一章放在最后,是因为 Exploration & Discovery 代表了 Agent 的真正"能动性"——从"完成任务"到"发现任务",从"按指令做"到"自主探索"。这才是 Antonio Gulli 心目中"真正 Agentic"的样子。

🔗 与其他章节

Exploration 是 Planning (Ch6) + Reasoning (Ch17) + Multi-Agent (Ch7) + Learning (Ch9) 的集大成应用。Hypothesis generation 是 Reflection (Ch4) 的反向——从"批判已有"转向"提出新的"。这一章是整本书的高潮,所有前 20 个模式在这里融汇。

附录 A · Advanced Prompting Techniques
高级 Prompt 工程技巧:role prompting、constraint prompting、negative prompting、structured output forcing、prompt compression(用 LLMLingua 等工具)、prompt caching(Anthropic / OpenAI 都支持)。每个技巧附 before / after 对比例子。
附录 C · Agentic Frameworks 横向对比
主流框架对比:LangChain / LangGraph、AutoGen、CrewAI、Google ADK、LlamaIndex Workflows、Pydantic AI、OpenAI Swarm。维度:抽象层级、可观测性、生产成熟度、学习曲线、社区生态。选型建议矩阵。

💡核心概念

Agent 评估的 3 个层次
详见摘要。常见错误:只测端到端——无法定位是哪一步出错;好的最终输出可能也来自坏的轨迹(运气)。
LLM-as-Judge 的正确用法
不要用同一模型同时生成和判断;给 judge 明确的 rubric;让 judge 必须说理由;定期用人类标注校准。
Prioritization:4 个维度
Urgency / Impact / Uncertainty / Dependency。在 plan 阶段就输出 priority 字段。
Exploration:Agent 主动学习的三种范式
Curiosity / Hypothesis / Anomaly Detection。是未来 3-5 年 Agent 的发展方向。

🏆Capstone 项目(本周核心)

综合项目:业务团队 AI Co-pilot

把 Week 1-7 学的所有模式融合成一个生产级 Agent,目标是:给业务团队(PM / 运营 / BD)用的智能助手。

功能矩阵:

对应模式            │ 功能
────────────────────┼─────────────────────────────────────────
Routing            │ 自动判断用户意图(数据查询/反馈分类/文档/数据分析)
Tool Use + MCP     │ 封装数据查询、文档模板、通知 API 为 MCP server
Planning           │ 复杂任务(如"分析数据 + 写复盘 + 通知团队")自动 plan
Multi-Agent        │ PM / Data / Comms 三角色协同
Memory             │ 长期记住用户偏好和团队术语
RAG                │ 内部文档 / 历史项目 知识库问答
Reflection         │ 输出前自检(文档完整性、数据准确性)
Guardrails         │ 防数据越权、防 prompt injection、防误发消息
HIL                │ 高风险动作(发邮件、写库)必须人审
Evaluation         │ 每周自动跑 50 个测试 case,追踪指标退化
Resource-Aware     │ Haiku 路由 + Sonnet 主力 + Opus 关键 review
    

交付物:

① GitHub 仓库(代码 + README + 架构图)
② Demo 视频 5 分钟
③ 一份"我学到了什么"复盘文档
④ 团队内分享 30 分钟(强烈推荐)

LangGraphMCPChromaFastAPINeMo Guardrails~2000 行代码

📝本周自测题(综合)

Q1.评估一个 Agent,只测最终输出准确率有什么问题?
  • 没问题,端到端测就够了
  • 无法定位是哪一步出错;好的最终输出可能也来自坏的轨迹(运气)
  • 耗时太长
  • 数据隐私问题
答案:B。Trajectory-level 评估能识别"靠运气过关"的 trace——这是改进 Agent 的关键。
Q2.LLM-as-Judge 最容易翻车的设置?
  • 不给 rubric
  • 不让 judge 写理由
  • 用同一个模型既生成又评估
  • 用 temperature 0
答案:C。会系统性高估自家输出。
Q3.下面哪个不是 21 模式中的核心模式?
  • Reflection
  • Routing
  • Token Compression
  • Prioritization
答案:C。Token compression 是 memory management 的子技巧,不是独立模式。
Q4.选择"用 Multi-Agent 还是单 Agent"的第一性问题是?
  • "Agent 越多是不是越聪明"
  • "子任务之间是否真的需要不同 system prompt / 工具集 / 权限"
  • "用什么框架最方便"
  • "老板想要 multi-agent"
答案:B。没有差异化就没必要分 Agent。
Q5.读完本书你最该记住的一句话是?
  • "用最新的 Agent 框架"
  • "模型越大越好"
  • "模式不是规则,是工具——根据具体场景组合,并永远测量结果"
  • "避免使用 LLM"
答案:C。作者贯穿全书的核心立场——Pattern 是 vocabulary,不是 dogma。

🎓结业 checklist

🎯 下一步学习方向: 完成本书后建议追三个方向 — ① Anthropic / OpenAI 官方 cookbook 持续追新(每月 2-3 个新模式);② 读 AutoGen、CrewAI、LangGraph 各自的 advanced docs;③ 参加一次 Agent 比赛(Kaggle / GAIA / SWE-bench)检验实战能力。