智能体设计模式(三)多智能体协作-记忆管理-学习与适应
本文是"智能体设计模式"系列的第三篇,涵盖第7-9章:多智能体协作、记忆管理、学习与适应。
系列文章:
- 智能体设计模式(一)提示链-路由-并行化
- 智能体设计模式(二)反思-工具使用-规划
- 智能体设计模式(三)多智能体协作-记忆管理-学习与适应(本文)
- ...
第七章:多智能体协作(Multi-Agent Collaboration)
一个好汉三个帮,一个篱笆三个桩。AI 也需要团队合作。
一、一句话定位
多智能体协作模式解决什么问题?
多智能体协作 = 让多个 AI 像团队一样分工合作
就像公司里有产品、开发、测试、运维------各司其职,协同作战
适合谁学?
- 需要处理复杂跨领域任务的开发者
- 构建大型智能体系统的工程师
- 想让 AI 系统更强大、更可靠的技术人员
不适合谁?
- 简单任务,一个 AI 就能搞定的场景
二、核心框架(知识骨架)
核心观点:
单个 AI 能力有限 = 一个人干不了所有事
多智能体协作 = 组建团队 = 分工 + 协作 = 1+1>2
关键概念速查表:
| 概念 | 大白话解释 | 生活比喻 | 一句话记忆 |
|---|---|---|---|
| 多智能体 | 多个 AI 组成的团队 | 公司团队 | 人多力量大 |
| 角色分工 | 每个 AI 负责特定任务 | 各司其职 | 术业有专攻 |
| 协作模式 | AI 之间如何配合 | 工作流程 | 配合默契 |
| 通信协议 | AI 之间如何交流 | 开会沟通 | 信息共享 |
知识地图:
复杂任务 → 任务分解 → 分配给专业智能体 → 各自执行 → 结果汇总 → 最终输出
↓ ↓ ↓ ↓ ↓ ↓
"写研究报告" 拆成子任务 研究员+分析师+写手 各干各的 合并成果 完整报告
三、深入浅出讲解
开场钩子 🎣
想象你要拍一部电影:
一个人干所有事:
- 你要当导演、编剧、摄影、演员、剪辑、配乐...
- 结果:累死也拍不好
组建团队:
- 导演负责整体把控
- 编剧负责剧本
- 摄影负责画面
- 演员负责表演
- 剪辑负责后期
- 结果:各司其职,大片诞生
AI 也是一样------复杂任务需要"团队作战"。
【概念1:为什么需要多智能体协作?】
一句话是什么:单个 AI 能力有限,复杂任务需要多个专业 AI 配合。
生活化比喻:
单智能体 = 全能选手
- 什么都会一点
- 什么都不精通
- 复杂任务力不从心
多智能体 = 专业团队
- 每个人专精一项
- 配合起来威力巨大
- 复杂任务轻松搞定
单智能体的局限:
| 问题 | 表现 | 后果 |
|---|---|---|
| 能力有限 | 一个 AI 不可能精通所有领域 | 某些任务做不好 |
| 工具受限 | 一个 AI 配太多工具会混乱 | 工具选择出错 |
| 上下文有限 | 信息太多装不下 | 遗漏重要信息 |
| 单点故障 | 一个 AI 出错全盘皆输 | 系统不稳定 |
多智能体的优势:
| 优势 | 说明 | 效果 |
|---|---|---|
| 专业分工 | 每个 AI 专精一个领域 | 质量更高 |
| 模块化 | 各模块独立,易于维护 | 更灵活 |
| 可扩展 | 需要新能力就加新 AI | 易扩展 |
| 容错性 | 一个 AI 出错不影响全局 | 更稳定 |
引经据典:
"三个臭皮匠,顶个诸葛亮" ------ 中国谚语
翻译成 AI 语言:
多个专业智能体协作,能解决单个智能体无法解决的复杂问题。
【概念2:协作模式有哪些?】
一句话是什么:不同的任务需要不同的协作方式。
生活化比喻:
协作模式就像工厂的生产方式:
1. 流水线(顺序交接)
工人A做完 → 传给工人B → 传给工人C
2. 并行生产(并行处理)
工人A、B、C同时做不同部件 → 最后组装
3. 质检流程(评审者模式)
工人做完 → 质检员检查 → 不合格返工
4. 层级管理(层级结构)
经理分配任务 → 组长执行 → 工人干活
六种主要协作模式:
1. 顺序交接(Sequential Handoffs)
智能体A → 智能体B → 智能体C → 最终结果
例子:写博客
研究员(收集资料)→ 写手(撰写文章)→ 编辑(润色修改)
2. 并行处理(Parallel Processing)
┌→ 智能体A ─┐
输入 ──┼→ 智能体B ──┼→ 汇总 → 输出
└→ 智能体C ─┘
例子:数据收集
天气智能体(查天气)
新闻智能体(查新闻) → 同时执行 → 汇总结果
股票智能体(查股价)
3. 辩论与共识(Debate and Consensus)
智能体A(观点1)
智能体B(观点2) → 讨论辩论 → 达成共识
智能体C(观点3)
例子:投资决策
乐观分析师 + 悲观分析师 + 中立分析师 → 综合建议
4. 层级结构(Hierarchical)
管理者智能体
/ | \
执行者A 执行者B 执行者C
例子:项目管理
项目经理智能体 → 分配任务给开发、测试、文档智能体
5. 专家团队(Expert Teams)
研究员 + 分析师 + 写手 + 编辑 = 研究报告
例子:市场调研
数据收集专家 + 数据分析专家 + 报告撰写专家 → 完整报告
6. 评审者模式(Critic-Reviewer)
生成者智能体 → 输出 → 评审者智能体 → 反馈 → 修改 → 最终输出
例子:代码生成
代码生成智能体 → 代码 → 代码审查智能体 → 改进建议 → 优化代码
【概念3:智能体之间如何通信?】
一句话是什么:智能体需要标准化的方式交换信息。
生活化比喻:
智能体通信就像公司内部沟通:
1. 邮件(异步消息)
- 发出去就不管了
- 对方有空再处理
2. 会议(同步讨论)
- 大家一起讨论
- 实时交流
3. 共享文档(共享状态)
- 大家都能看到
- 随时更新
4. 工单系统(任务委派)
- 明确任务内容
- 跟踪任务状态
通信的关键要素:
| 要素 | 说明 | 例子 |
|---|---|---|
| 共享状态 | 所有智能体能访问的公共数据 | session.state |
| 消息传递 | 智能体之间发送消息 | 输出传给下一个智能体 |
| 任务委派 | 一个智能体把任务交给另一个 | 管理者分配任务 |
| 结果汇总 | 收集各智能体的输出 | 合并多个结果 |
【概念4:实际应用场景】
场景1:复杂研究与分析
任务:写一份 AI 趋势研究报告
团队配置:
- 研究员智能体:搜索学术数据库
- 分析师智能体:分析数据趋势
- 写手智能体:撰写报告
- 编辑智能体:润色修改
协作流程:
研究员收集资料 → 分析师分析趋势 → 写手撰写报告 → 编辑润色
场景2:软件开发
任务:开发一个功能模块
团队配置:
- 需求分析智能体:理解需求
- 代码生成智能体:编写代码
- 测试智能体:编写测试
- 文档智能体:编写文档
协作流程:
需求分析 → 代码生成 → 测试验证 → 文档编写
场景3:创意内容生成
任务:策划营销活动
团队配置:
- 市场调研智能体:分析市场
- 文案智能体:撰写文案
- 设计智能体:生成素材
- 排期智能体:安排发布
协作流程:
市场调研 → 文案创作 → 素材设计 → 发布排期
场景4:客户支持
任务:处理客户问题
团队配置:
- 一线客服智能体:处理常见问题
- 技术专家智能体:处理技术问题
- 计费专家智能体:处理账单问题
协作流程:
一线客服接待 → 识别问题类型 → 转给专家处理
四、实践示例(代码演示)
示例1:CrewAI 实现多智能体协作
python
from crewai import Agent, Task, Crew, Process
from langchain_google_genai import ChatGoogleGenerativeAI
# 初始化模型
llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash")
# 定义研究员智能体
researcher = Agent(
role='高级研究分析师',
goal='查找并总结 AI 领域的最新趋势',
backstory="你是一位经验丰富的研究分析师,擅长发现关键趋势并综合信息。",
verbose=True,
llm=llm
)
# 定义写手智能体
writer = Agent(
role='技术内容写手',
goal='根据研究发现撰写清晰、有吸引力的博客文章',
backstory="你是一位技术写手,擅长将复杂的技术话题转化为易懂的内容。",
verbose=True,
llm=llm
)
# 定义研究任务
research_task = Task(
description="研究 2024-2025 年 AI 领域的三大新兴趋势,关注实际应用和潜在影响。",
expected_output="三大 AI 趋势的详细总结,包括关键要点和来源。",
agent=researcher,
)
# 定义写作任务(依赖研究任务的输出)
writing_task = Task(
description="根据研究发现撰写一篇 500 字的博客文章,内容要有吸引力,易于理解。",
expected_output="一篇完整的 500 字博客文章。",
agent=writer,
context=[research_task], # 依赖研究任务
)
# 创建 Crew
blog_crew = Crew(
agents=[researcher, writer],
tasks=[research_task, writing_task],
process=Process.sequential, # 顺序执行
verbose=True
)
# 执行
result = blog_crew.kickoff()
print(result)
代码解读:
研究任务 → 研究员智能体执行 → 输出研究结果
↓
写作任务 → 写手智能体执行 → 基于研究结果撰写 → 最终博客文章
示例2:Google ADK 层级结构
python
from google.adk.agents import LlmAgent, BaseAgent
# 定义子智能体:迎宾员
greeter = LlmAgent(
name="Greeter",
model="gemini-2.0-flash-exp",
instruction="你是一个友好的迎宾员。"
)
# 定义子智能体:任务执行者
task_doer = LlmAgent(
name="TaskDoer",
model="gemini-2.0-flash-exp",
instruction="你负责执行具体任务。"
)
# 定义协调者(父智能体)
coordinator = LlmAgent(
name="Coordinator",
model="gemini-2.0-flash-exp",
description="协调迎宾和任务执行的智能体",
instruction="当需要问候时,委派给 Greeter;当需要执行任务时,委派给 TaskDoer。",
sub_agents=[greeter, task_doer] # 声明子智能体
)
# 层级关系自动建立
# greeter.parent_agent == coordinator
# task_doer.parent_agent == coordinator
示例3:Google ADK 并行处理
python
from google.adk.agents import Agent, ParallelAgent
# 定义并行执行的子智能体
weather_fetcher = Agent(
name="weather_fetcher",
model="gemini-2.0-flash-exp",
instruction="获取给定位置的天气信息。",
output_key="weather_data" # 结果存到 session.state["weather_data"]
)
news_fetcher = Agent(
name="news_fetcher",
model="gemini-2.0-flash-exp",
instruction="获取给定主题的头条新闻。",
output_key="news_data" # 结果存到 session.state["news_data"]
)
# 创建并行智能体
data_gatherer = ParallelAgent(
name="data_gatherer",
sub_agents=[weather_fetcher, news_fetcher] # 并行执行
)
# 执行时,两个子智能体同时工作,结果分别存入 session.state
示例4:Google ADK 顺序流水线
python
from google.adk.agents import SequentialAgent, Agent
# 步骤1:获取数据
step1 = Agent(
name="Step1_Fetch",
output_key="data" # 输出存到 session.state["data"]
)
# 步骤2:处理数据(使用步骤1的输出)
step2 = Agent(
name="Step2_Process",
instruction="分析 state['data'] 中的信息并提供摘要。"
)
# 创建顺序流水线
pipeline = SequentialAgent(
name="MyPipeline",
sub_agents=[step1, step2] # 顺序执行
)
# 执行时:step1 先执行 → 结果存入 state → step2 读取并处理
五、精华提炼(去废话版)
核心要点(只保留干货):
- 分工协作:复杂任务拆给多个专业智能体 → 各司其职
- 协作模式:顺序、并行、层级、评审等 → 按需选择
- 通信机制:共享状态、消息传递、任务委派 → 信息流通
- 协同效应:1+1>2 → 团队能力超越个体之和
必须记住的:
多智能体协作 = 团队作战 = 分工 + 协作 = 解决复杂问题
六、行动清单
立即可做(5分钟内):
- 想一个你之前让单个 AI 做但效果不好的复杂任务
- 思考可以拆成哪几个角色来协作
本周实践:
- 用 CrewAI 实现一个简单的双智能体协作
- 尝试顺序执行和并行执行两种模式
进阶挑战:
- 实现一个层级结构的多智能体系统
- 加入评审者智能体提升输出质量
七、常见误区
误区1:智能体越多越好
❌ 错误:任务不复杂也用10个智能体
✅ 正确:根据任务复杂度决定智能体数量,够用就好
误区2:忽视通信开销
❌ 错误:智能体之间频繁通信
✅ 正确:设计高效的通信机制,减少不必要的交互
误区3:角色定义模糊
❌ 错误:每个智能体都"什么都能做"
✅ 正确:每个智能体有明确的角色和职责边界
误区4:忽视协调机制
❌ 错误:智能体各干各的,没有协调
✅ 正确:需要明确的协调机制(管理者或协议)
八、学习检查
基础理解:
- 能解释为什么需要多智能体协作
- 能说出至少三种协作模式
- 理解智能体之间如何通信
实践能力:
- 能用 CrewAI 实现多智能体协作
- 能设计合适的角色分工
- 能选择合适的协作模式
进阶理解:
- 理解不同协作模式的适用场景
- 能设计复杂的多智能体系统
- 理解协作的权衡(复杂度 vs 效果)
九、金句收藏
原文金句:
"多智能体协作能够产生协同效应,
其整体表现往往超越任何单个智能体的能力上限。"
我的总结金句:
"一个 AI 是独行侠,一群 AI 是复仇者联盟。"
"分工是为了专业,协作是为了强大。"
"复杂问题的解法:拆开来各个击破,合起来威力倍增。"
十、画龙点睛
总结升华:
多智能体协作的本质是"组织智慧"------
把复杂问题拆解,让专业的人做专业的事,
然后通过协作机制把各部分整合成完整的解决方案。
这就像人类社会的分工:
- 原始社会:一个人什么都干
- 现代社会:专业分工,协作生产
AI 也在经历同样的进化:
- 单智能体:一个 AI 什么都干
- 多智能体:专业分工,协作完成
协作的哲学:
"众人拾柴火焰高" ------ 中国谚语
对 AI 来说:
- 众人 = 多个专业智能体
- 拾柴 = 各自完成专业任务
- 火焰高 = 协同效应,成果超越个体之和
悬念预告:
多智能体协作让 AI 团队变得强大了,
但智能体如何记住之前的对话和经验呢?
如何避免"金鱼记忆",让 AI 越来越聪明?
下一章,我们将探索"记忆管理模式"------
让 AI 拥有"记忆",能够学习和积累经验。
一句话带走:
复杂任务别单干,组建 AI 团队各司其职,协作才能创造奇迹。
十一、延伸资源
想深入学习:
想教给别人:
- 用"拍电影"比喻解释多智能体协作的必要性
- 用"工厂生产"类比解释不同的协作模式
- 用"公司团队"说明角色分工的重要性
第8章:记忆管理 ------ 让AI拥有"过目不忘"的超能力
一句话定位:记忆管理就是给AI装上"大脑硬盘",让它既能记住刚才聊了什么,又能调取多年前的知识。
一、秒懂定位(30秒版)
这个知识解决什么问题:
AI智能体如何像人一样"记住"信息?
短期记忆让它知道"我们刚才聊到哪了"
长期记忆让它记得"你上次说喜欢吃川菜"
一句话精华:
记忆管理 = 短期记忆(上下文窗口)+ 长期记忆(外部存储)
就像人脑的工作记忆 + 长期知识库
适合谁学 :想让AI"记住"用户偏好、历史对话的开发者
不适合谁:只做单轮问答、不需要上下文的简单应用
二、核心框架(知识骨架)
生活化比喻:AI的"记忆宫殿"
想象你是一个超级秘书:
📋 短期记忆 = 你手里的便签本
- 记录当前会议的要点
- 会议结束就可以扔掉
- 容量有限,写满了要翻页
💾 长期记忆 = 你的档案柜
- 存放所有客户的资料
- 需要时随时查阅
- 容量大,但查找需要时间
关键概念速查表
| 概念 | 大白话解释 | 生活比喻 | 一句话记忆 |
|---|---|---|---|
| 短期记忆 | 当前对话的上下文 | 便签本 | 聊天记录,用完即焚 |
| 长期记忆 | 跨对话的持久存储 | 档案柜 | 用户档案,永久保存 |
| 上下文窗口 | LLM能"看到"的范围 | 视野范围 | 窗口越大,看得越多 |
| 向量数据库 | 语义搜索的存储 | 智能档案员 | 按意思找,不按关键词 |
| Session | 一次对话会话 | 一通电话 | 挂了就结束 |
| State | 会话中的临时数据 | 通话笔记 | 这通电话的要点 |
知识地图
用户输入 → [短期记忆处理] → 需要历史信息?
↓ 是
[查询长期记忆]
↓
[整合上下文]
↓
[生成响应]
↓
[更新记忆]
三、深入浅出讲解(教学版)
开场钩子
"你有没有遇到过这种尴尬?跟AI聊了半天,它突然'失忆'了,问你'请问您是哪位?'------这就是没有记忆管理的AI!"
核心讲解
【概念1:短期记忆 ------ AI的"便签本"】
一句话是什么:短期记忆就是AI在一次对话中能"记住"的内容。
生活化比喻:
想象你在餐厅点餐:
- 服务员记住你点了什么(短期记忆)
- 你说"再来一份刚才那个",他知道是什么
- 但你下次来,他可能就不记得了
AI的短期记忆也是这样:
- 记住这轮对话的所有内容
- 对话结束,记忆清空
- 下次开始,从头再来
引经据典:
"吾日三省吾身" ------ 孔子
AI也需要"三省":
1. 用户刚才说了什么?
2. 我刚才回答了什么?
3. 现在应该怎么接话?
这就是短期记忆的作用!
技术要点:
python
# 短期记忆的核心:上下文窗口
context_window = [
{"role": "user", "content": "我想订一张去北京的机票"},
{"role": "assistant", "content": "好的,请问您想什么时候出发?"},
{"role": "user", "content": "下周五"},
{"role": "assistant", "content": "下周五去北京,请问需要往返吗?"},
# ... 窗口有限,太早的对话会被"遗忘"
]
常见误区(幽默版):
❌ 误区:"上下文窗口越大越好"
真相:窗口大了,处理慢、成本高,就像背着100斤便签本上班
❌ 误区:"短期记忆会自动保存"
真相:对话结束就没了,就像阅后即焚的消息
【概念2:长期记忆 ------ AI的"档案柜"】
一句话是什么:长期记忆是AI跨对话、跨时间保存的信息。
生活化比喻:
想象你是VIP客户:
- 每次去银行,客户经理都知道你的偏好
- "王先生,还是老规矩,稳健型理财?"
- 这就是长期记忆的魔力!
AI的长期记忆:
- 记住用户的偏好、历史、习惯
- 下次对话,直接调取
- 提供个性化服务
技术实现:
python
# 长期记忆通常存储在外部数据库
# 向量数据库示例
from vector_db import VectorStore
# 存储用户偏好
memory_store = VectorStore()
memory_store.add({
"user_id": "user_123",
"preference": "喜欢川菜,不吃香菜",
"history": "上次推荐了火锅店,用户很满意"
})
# 检索相关记忆
relevant_memories = memory_store.search(
query="用户想吃什么",
user_id="user_123"
)
# 返回:["喜欢川菜,不吃香菜", "上次推荐火锅店很满意"]
向量数据库的魔力:
传统搜索:关键词匹配
- 搜"吃饭" → 只能找到包含"吃饭"的记录
向量搜索:语义匹配
- 搜"吃饭" → 能找到"用餐"、"就餐"、"饮食"相关的记录
- 因为它理解"意思",不只是"字面"
【概念3:Session与State ------ 对话的"身份证"和"笔记本"】
一句话是什么:Session是一次对话的身份标识,State是这次对话中的临时数据。
生活化比喻:
Session = 电话号码
- 每通电话有唯一标识
- 用来区分不同的对话
State = 通话笔记
- 这通电话里记录的要点
- 挂了电话可能就不需要了
代码示例:
python
# Google ADK 中的 Session 和 State
from google.adk.sessions import InMemorySessionService
# 创建会话服务
session_service = InMemorySessionService()
# 创建一个新会话
session = session_service.create_session(
app_name="restaurant_bot",
user_id="user_123",
session_id="session_456"
)
# 在会话中存储状态
session.state["user_preference"] = "川菜"
session.state["current_step"] = "selecting_restaurant"
# 读取状态
print(session.state["user_preference"]) # 输出:川菜
四、实践示例
示例1:带记忆的聊天机器人
python
"""
一个能记住用户偏好的餐厅推荐机器人
"""
from google.adk.agents import LlmAgent
from google.adk.sessions import InMemorySessionService
from google.adk.memory import InMemoryMemoryService
# 初始化服务
session_service = InMemorySessionService()
memory_service = InMemoryMemoryService()
# 创建智能体
restaurant_agent = LlmAgent(
name="RestaurantBot",
model="gemini-2.0-flash",
instruction="""
你是一个餐厅推荐助手。
请根据用户的偏好推荐合适的餐厅。
记住用户的口味偏好,下次可以直接使用。
""",
output_key="recommendation" # 自动保存推荐结果到状态
)
# 使用示例
async def recommend_restaurant(user_id: str, user_input: str):
# 获取或创建会话
session = session_service.get_session(
app_name="restaurant",
user_id=user_id,
session_id=f"{user_id}_current"
)
# 从长期记忆中检索用户偏好
memories = memory_service.search_memory(
app_name="restaurant",
user_id=user_id,
query=user_input
)
# 将记忆整合到上下文中
context = f"用户历史偏好:{memories}\n当前请求:{user_input}"
# 生成推荐
response = await restaurant_agent.run(context)
# 保存到长期记忆
memory_service.add_session_to_memory(session)
return response
示例2:状态管理的最佳实践
python
"""
使用状态前缀管理不同范围的数据
"""
# 状态前缀说明:
# 无前缀 = 会话级别(当前对话)
# user: = 用户级别(跨会话)
# app: = 应用级别(所有用户共享)
# temp: = 临时数据(不持久化)
def update_user_state(tool_context):
state = tool_context.state
# 会话级别:只在当前对话有效
state["current_order"] = "宫保鸡丁"
# 用户级别:跨对话保存
state["user:favorite_cuisine"] = "川菜"
state["user:allergy"] = "花生"
# 应用级别:所有用户共享
state["app:today_special"] = "麻婆豆腐"
# 临时数据:处理完就丢弃
state["temp:processing_step"] = 3
return {"status": "success"}
五、精华提炼(去废话版)
核心要点
-
短期记忆 = 上下文窗口
- 容量有限,成本与大小成正比
- 对话结束即清空
- 用于维持当前对话连贯性
-
长期记忆 = 外部存储
- 向量数据库实现语义搜索
- 跨对话持久保存
- 用于个性化和知识积累
-
Session + State = 会话管理
- Session 标识一次对话
- State 存储对话中的临时数据
- 通过前缀区分数据范围
砍掉的废话
- 各种数据库的详细配置(用到再查)
- 复杂的分布式存储方案(进阶内容)
- 过多的API细节(看文档)
必须记住的
记忆管理三板斧:
1. 短期靠窗口 ------ 上下文窗口管当前
2. 长期靠存储 ------ 向量数据库管历史
3. 状态靠前缀 ------ 不同前缀管不同范围
六、行动清单
立即可做(5分钟内)
- 理解短期记忆和长期记忆的区别
- 了解向量数据库的基本概念
本周实践
- 用 InMemorySessionService 实现一个简单的对话机器人
- 尝试使用状态前缀管理不同范围的数据
进阶挑战
- 接入真实的向量数据库(如 Pinecone、Weaviate)
- 实现跨会话的用户偏好记忆
七、常见误区
误区1:"上下文窗口越大越好"
真相:
窗口大小是个权衡:
- 太小:AI容易"失忆"
- 太大:成本高、速度慢
最佳实践:
- 保留最相关的信息
- 总结旧对话,压缩存储
- 重要信息存长期记忆
误区2:"直接修改session.state就行"
真相:
python
# ❌ 错误做法:直接修改
session.state["key"] = "value" # 可能不会被持久化!
# ✅ 正确做法:通过事件更新
session_service.append_event(session, event_with_state_delta)
误区3:"长期记忆什么都存"
真相:
存储策略:
- 存:用户偏好、重要决策、关键信息
- 不存:临时计算结果、敏感信息、过时数据
记住:存储有成本,检索有延迟
八、学习检查
基础知识
- 能解释短期记忆和长期记忆的区别
- 理解上下文窗口的作用和限制
- 知道向量数据库的基本原理
实践能力
- 能使用 SessionService 管理会话
- 能正确使用状态前缀
- 能实现基本的记忆检索
进阶理解
- 理解记忆管理对AI性能的影响
- 能设计合理的记忆存储策略
- 能处理记忆相关的常见问题
九、金句收藏
原文金句:
"记忆能力使智能体能够维护历史记录、实现持续学习、
提供个性化交互,并有效处理复杂的时序依赖性问题。"
我的总结金句:
"没有记忆的AI,就像金鱼一样只有7秒记忆;
有了记忆管理,AI才能真正'认识'你。"
十、画龙点睛(收尾)
总结升华
记忆管理不只是技术问题,更是AI"智能"的关键:
- 短期记忆让AI能"接话"
- 长期记忆让AI能"认人"
- 两者结合,AI才能提供真正个性化的服务
悬念预告
学会了记忆管理,AI能记住信息了。但如何让AI从经验中"学习",变得越来越聪明?下一章"学习与适应",我们来揭秘!
一句话带走
记忆管理 = 让AI从"金鱼脑"升级为"大象脑"
短期记忆管当下,长期记忆管永久
十一、延伸资源
想深入学习
- Google ADK 官方文档:Session 和 Memory 部分
- 向量数据库入门:Pinecone、Weaviate、Chroma
想教给别人
- 用"便签本 vs 档案柜"的比喻解释短期/长期记忆
- 用"VIP客户服务"的例子说明个性化记忆的价值
第9章:学习与适应 ------ 让AI越用越聪明
一句话定位:学习与适应就是让AI从"死板执行者"进化为"聪明学习者",能从经验中成长。
一、秒懂定位(30秒版)
这个知识解决什么问题:
AI如何变得越来越聪明?
不是每次都从零开始,而是能从过去的经验中学习
遇到新情况,能自己想办法适应
一句话精华:
学习与适应 = AI的"成长能力"
从"照本宣科"到"举一反三"
从"被动执行"到"主动进化"
适合谁学 :想让AI持续改进、自我优化的开发者
不适合谁:只需要固定功能、不需要进化的简单应用
二、核心框架(知识骨架)
生活化比喻:AI的"学习之路"
想象AI是一个新员工:
📚 第一天上班(初始状态)
- 只会照着手册做事
- 遇到问题就懵了
- 需要人手把手教
🎓 工作三个月后(学习中)
- 开始总结经验
- 知道哪些方法有效
- 能处理常见问题
🏆 工作一年后(适应完成)
- 能举一反三
- 遇到新问题能想办法
- 甚至能改进工作流程
关键概念速查表
| 概念 | 大白话解释 | 生活比喻 | 一句话记忆 |
|---|---|---|---|
| 强化学习 | 试错中学习最优策略 | 打游戏升级 | 做对了奖励,做错了惩罚 |
| 监督学习 | 从标注数据中学习 | 老师批改作业 | 看答案学做题 |
| 无监督学习 | 自己发现数据规律 | 自学成才 | 没答案也能找规律 |
| 少样本学习 | 看几个例子就会 | 一点就通 | 聪明人学得快 |
| 在线学习 | 边用边学 | 边干边学 | 实时更新知识 |
| PPO | 稳定的策略优化 | 小步快跑 | 每次改进一点点 |
| DPO | 直接偏好优化 | 用户说了算 | 直接学用户喜好 |
知识地图
学习与适应的演进路径:
[预设规则] → [从数据学习] → [从反馈学习] → [自我改进]
↓ ↓ ↓ ↓
死板执行 模式识别 策略优化 自主进化
三、深入浅出讲解(教学版)
开场钩子
"你家的扫地机器人第一天是不是到处乱撞?但用了一周后,它是不是变'聪明'了,知道哪里有障碍物?这就是学习与适应的魔力!"
核心讲解
【概念1:强化学习 ------ AI的"打怪升级"】
一句话是什么:强化学习就是AI通过试错,学习什么行为能获得最大奖励。
生活化比喻:
想象你在玩一个新游戏:
- 不知道规则,先随便试
- 做对了,得分+100 ✓
- 做错了,扣血-50 ✗
- 慢慢摸索出最优策略
AI的强化学习也是这样:
- 尝试不同的行动
- 好的行动得到奖励
- 坏的行动受到惩罚
- 最终学会最优策略
引经据典:
"纸上得来终觉浅,绝知此事要躬行" ------ 陆游
强化学习的精髓就是"躬行":
- 不是看书学的,是自己试出来的
- 不是别人教的,是自己悟出来的
- 实践出真知,试错出智慧
核心原理:
python
# 强化学习的基本循环
def reinforcement_learning_loop():
state = get_current_state() # 观察当前状态
while not done:
action = agent.choose_action(state) # 选择行动
next_state, reward = environment.step(action) # 执行并获得反馈
agent.learn(state, action, reward, next_state) # 从经验中学习
state = next_state # 更新状态
【概念2:PPO ------ AI的"稳健学习法"】
一句话是什么:PPO(近端策略优化)是一种让AI稳定学习的方法,避免"学傻了"。
生活化比喻:
想象你在学开车:
❌ 激进学习法:
- 今天学会了右转
- 明天突然忘了怎么直行
- 学一步退两步
✅ PPO学习法:
- 每次只改进一点点
- 确保新技能不影响旧技能
- 稳扎稳打,步步为营
核心思想:
PPO的"安全刹车"机制:
1. 收集经验:先用当前策略玩一会儿
2. 评估改进:计算新策略能带来多少提升
3. 限制幅度:不让改动太大,防止"翻车"
4. 稳定更新:小步快跑,持续进步
为什么重要:
没有PPO的AI学习:
- 可能突然"学傻了"
- 性能大起大落
- 不稳定,不可靠
有了PPO的AI学习:
- 稳定持续进步
- 不会突然退步
- 可靠,可预测
【概念3:DPO ------ AI的"用户偏好直通车"】
一句话是什么:DPO(直接偏好优化)让AI直接从用户偏好中学习,不需要复杂的奖励模型。
生活化比喻:
传统方法(PPO + 奖励模型):
1. 收集用户反馈:"A比B好"
2. 训练一个"评分员"来打分
3. 用评分员的分数训练AI
4. 两步走,容易出错
DPO方法:
1. 收集用户反馈:"A比B好"
2. 直接用这个偏好训练AI
3. 一步到位,简单直接
对比说明:
PPO方法 = 请翻译 + 请老师打分 + 根据分数学习
DPO方法 = 直接告诉AI"这个好,那个不好"
DPO更简单、更直接、更稳定
【概念4:自我改进 ------ AI的"自我进化"】
一句话是什么:自我改进是AI能够修改自己的代码或策略,让自己变得更好。
案例:SICA(自我改进编码智能体):
SICA的进化之路:
第1代:只会简单的文件覆盖
↓ 自我改进
第2代:开发了"智能编辑器"
↓ 自我改进
第3代:加入了差异分析功能
↓ 自我改进
第4代:实现了AST符号定位
每一代都比上一代更强!
工作原理:
python
# SICA的自我改进循环
def self_improvement_loop():
while True:
# 1. 回顾历史版本
best_version = archive.get_best_performing_version()
# 2. 分析改进空间
improvements = analyze_potential_improvements(best_version)
# 3. 修改自己的代码
new_version = modify_code(best_version, improvements)
# 4. 测试新版本
performance = benchmark(new_version)
# 5. 记录结果
archive.add(new_version, performance)
# 6. 如果足够好,就用新版本
if performance > best_version.performance:
deploy(new_version)
四、实践示例
示例1:目标驱动的代码生成智能体
python
"""
一个能自我改进的代码生成智能体
目标:生成符合质量标准的代码
"""
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o", temperature=0.3)
def generate_code(use_case: str, goals: list[str], max_iterations: int = 5):
"""
迭代生成代码,直到满足所有目标
"""
previous_code = ""
feedback = ""
for i in range(max_iterations):
print(f"=== 第 {i + 1} 次迭代 ===")
# 1. 生成代码
prompt = f"""
用例:{use_case}
目标:{goals}
之前的代码:{previous_code}
反馈:{feedback}
请生成改进后的Python代码。
"""
code = llm.invoke(prompt).content
# 2. 自我评估
eval_prompt = f"""
评估以下代码是否满足目标:{goals}
代码:{code}
只回答 True 或 False
"""
is_good = llm.invoke(eval_prompt).content.strip().lower() == "true"
if is_good:
print("✅ 目标达成!")
return code
# 3. 获取改进建议
feedback_prompt = f"""
代码:{code}
目标:{goals}
请指出代码的不足之处。
"""
feedback = llm.invoke(feedback_prompt).content
previous_code = code
print(f"📝 反馈:{feedback[:100]}...")
return code
# 使用示例
code = generate_code(
use_case="计算斐波那契数列",
goals=["代码简洁", "处理边界情况", "有注释"]
)
示例2:基于记忆的学习智能体
python
"""
一个能从历史经验中学习的智能体
"""
class LearningAgent:
def __init__(self):
self.experience_memory = [] # 经验记忆
self.success_patterns = {} # 成功模式
def act(self, situation: str) -> str:
"""根据情况采取行动"""
# 1. 查找类似的历史经验
similar_experiences = self.find_similar(situation)
# 2. 如果有成功经验,复用
for exp in similar_experiences:
if exp["success"]:
return exp["action"]
# 3. 否则,尝试新策略
return self.try_new_strategy(situation)
def learn(self, situation: str, action: str, success: bool):
"""从结果中学习"""
# 记录经验
self.experience_memory.append({
"situation": situation,
"action": action,
"success": success
})
# 更新成功模式
if success:
pattern = self.extract_pattern(situation)
self.success_patterns[pattern] = action
def find_similar(self, situation: str) -> list:
"""找到类似的历史经验"""
# 使用语义相似度匹配
return [exp for exp in self.experience_memory
if self.is_similar(exp["situation"], situation)]
def try_new_strategy(self, situation: str) -> str:
"""尝试新策略"""
# 基于已知模式推理
for pattern, action in self.success_patterns.items():
if pattern in situation:
return action
return "default_action"
五、精华提炼(去废话版)
核心要点
-
强化学习 = 试错学习
- 通过奖惩信号学习最优策略
- 适合游戏、机器人控制等场景
-
PPO = 稳定学习
- 限制每次更新幅度
- 防止学习过程中"翻车"
-
DPO = 直接学偏好
- 跳过奖励模型
- 直接从用户偏好学习
-
自我改进 = 自主进化
- AI能修改自己的代码
- 持续迭代,越来越强
必须记住的
学习与适应四重境界:
1. 照本宣科 ------ 只会执行预设规则
2. 模式识别 ------ 能从数据中学习
3. 策略优化 ------ 能从反馈中改进
4. 自主进化 ------ 能自我修改升级
六、行动清单
立即可做(5分钟内)
- 理解强化学习的基本概念
- 了解PPO和DPO的区别
本周实践
- 实现一个简单的迭代改进循环
- 尝试让AI根据反馈自我优化
进阶挑战
- 研究SICA的实现原理
- 探索AlphaEvolve的进化算法
七、常见误区
误区1:"AI学习一次就够了"
真相:
学习是持续的过程:
- 环境在变化
- 用户需求在变化
- 最优策略也在变化
持续学习 > 一次性训练
误区2:"让同一个AI既写代码又评判代码"
真相:
自己评判自己容易"自我感觉良好"
更好的做法:
- 分离生成和评估
- 用不同的模型/智能体
- 引入外部验证
误区3:"学习越快越好"
真相:
学习速度 vs 学习稳定性
太快:可能学偏了,突然退步
太慢:进步太慢,效率低
PPO的智慧:小步快跑,稳中求进
八、学习检查
基础知识
- 能解释强化学习的基本原理
- 理解PPO为什么比普通方法更稳定
- 知道DPO相比传统方法的优势
实践能力
- 能实现简单的迭代改进循环
- 能设计基于反馈的学习机制
进阶理解
- 理解自我改进的可能性和风险
- 能评估不同学习方法的适用场景
九、金句收藏
原文金句:
"学习与适应能力是提升智能体性能的关键。
这些机制让智能体能够突破预设参数的束缚,
在与环境交互中通过经验积累实现自我进化。"
我的总结金句:
"不会学习的AI是工具,会学习的AI是伙伴。
工具用久了会磨损,伙伴相处久了会默契。"
十、画龙点睛(收尾)
总结升华
学习与适应是AI从"工具"到"智能体"的关键跨越:
- 工具只能执行预设功能
- 智能体能从经验中成长
- 真正的智能,在于持续进化的能力
悬念预告
AI学会了学习,但如何让不同的AI系统互相"对话"?下一章"模型上下文协议",我们来看看AI世界的"通用语言"!
一句话带走
学习与适应 = AI的成长基因
从试错中学习,从反馈中进化
让AI越用越聪明,越来越懂你
十一、延伸资源
想深入学习
- SICA项目:https://github.com/MaximeRobeyns/self_improving_coding_agent/
- OpenEvolve:进化编码智能体框架
- AlphaEvolve:Google的算法发现AI
想教给别人
- 用"打游戏升级"解释强化学习
- 用"新员工成长"比喻AI的学习过程
- 用"小步快跑"说明PPO的稳定性
版本信息
- 文档版本:v1.0
- 创建日期:2026-01-16
- 基于材料:Agentic Design Patterns - Chapter 07-09
- 教学风格:教与学专家(30年教学经验 + 20年学习研究经验)