Agentic AI 架构入门(三):Agent 的七大组件与 PRAL 循环
课程:《Agentic AI Architectures with Patterns, Frameworks and MCP》笔记整理(第 66--172 页)
1. 组件总览:Agent 的 7 大部件
进入「工程师视角」,Agent 由 7 个可独立设计的部件组成:
| # | 组件 | 昵称 |
|---|---|---|
| 1 | Foundation Model | 🧠 Brain 大脑 |
| 2 | Perception | 👁️ Senses 感官 |
| 3 | Planning | 📐 Blueprint 蓝图/军师 |
| 4 | Memory | 📓 Notebook 笔记本 |
| 5 | Action | 🖐️ Hands 手 |
| 6 | Learning | 🔄 Feedback Loop 反馈环 |
| 7 | Communication | 🗣️ Voice 声音 |
2. 🧠 组件 1:大脑------基础模型(LLM)
Agent = 一台完整计算机 :LLM 是 CPU ,Memory 是 RAM ,Tools 是外设。
- 基础模型 = 通用模式识别引擎:在海量数据上训练,本职工作是预测下一个 token
- 我们的目标 :把「预测下一个词」引导成「推理」------让 LLM 不只输出答案,还要输出思考过程 ;System Prompt 就是 Agent 大脑的「操作系统」
- 两大提示模式:CoT(思维链) 和 ReAct(推理+行动)
CoT 实例(该不该带伞?) :坏(无 CoT):"伦敦该带伞吗?→ 是";好(有 CoT):一步步想------①用户要建议 ②需要知道天气 ③伦敦是"小雨" ④小雨需要带伞 ⑤所以答案是"是"。这段思考过程就是 Plan!
怎么选 LLM 大脑? 架构三难:能力(推理质量)× 成本 × 速度。
| 选项 | 代表 | 适用 |
|---|---|---|
| 1. 最大能力 | GPT-5、Claude 4 Opus | 复杂研究/规划/代码生成(贵、慢) |
| 2. 最快最便宜 | Gemini Flash、Llama 3 8B | 客服、简单抽取、聊天(复杂多步可能翻车) |
| 3. 最大隐私 | 本地/开源模型 | 医疗、金融等敏感数据(自己运维贵) |
你选的大脑决定了整个 Agent 的性格。
3. 👁️ 组件 2:感官------感知与输入处理
大脑与世界隔绝就没用------感知模块是 Agent 与现实世界的接口 ,是 Agentic Loop 的第一步:「敲门声」把 Agent「唤醒」。
三种触发:直接 (用户聊天消息)、异步 (API 响应、新文件、数据库更新)、定时(计划事件)。
核心挑战 :LLM 只「想」干净的结构化文本,但世界是非结构化、多模态的(错别字文本、图片视频、语音、JSON/XML、PDF/Word)。
解决 :感知模块 = 翻译官 ------把混乱数据转成 LLM 能读的干净文本,这叫 Normalization(归一化)/ 预处理:
- User Chat →(拼写检查)→ 干净文本
- Image.jpg →(视觉模型)→ 图片的文字描述
- Report.pdf →(OCR)→ 全文
- Audio.mp3 →(语音转文字)→ 文字稿
- API_Response.json →(总结/抽取)→ 摘要
实例(双感官客服 Agent):用户输入"my new shrit has a hole in it"(错别字)+ 上传照片 → 文本处理器清洗 + 视觉处理器分析图片("蓝色 T 恤,左袖有 2 英寸裂口")→ 合成干净文本送 LLM。
4. 📐 组件 3:蓝图------规划与任务分解
只会感知的 Agent 只是传感器 (被动)------还需要「军师」。"帮我订下周去伦敦的全程行程"------这不是一个动作,是一个项目,单次 LLM 调用做不了。
Plan 是什么 :规划模块的输出,不是最终答案,而是一个数据结构------一串要执行的工具调用序列。例:输入"Book my trip" → Plan = ①find_available_flights ②find_hotels ③book_flight ④book_hotel ⑤send_confirmation_email。
LLM 当「分解引擎」:用特定 System Prompt 让 LLM 当规划师------①告诉它目标 ②告诉它可用工具 ③要求"一步步想" ④要求"只产出用这些工具的计划"。
两种规划策略:
| CoT = 静态规划 | ReAct = 动态规划 | |
|---|---|---|
| 方式 | 动手前先生成完整多步计划 | 一次只计划一步:执行→感知结果→再计划下一步 |
| 适用 | 简单、可预测的工作流 | 复杂、不可预测的环境 |
ReAct 动态规划实例(订伦敦行程):
- 循环1:(计划)先调 find_flights →(行动)执行→(感知)返回 {TK-123, 300美元}
- 循环2:(再计划)状态变了,给用户看选项 →(行动)ask_user→(感知)用户选 TK-123
- 循环3:(再计划)状态又变了,下一步 book_flight('TK-123')
「想」与「做」分离 = 核心设计原则 :规划模块只负责生成计划,不执行 ------输出是 {"tool_to_call": "find_flights", "parameters": {...}},交给下一个组件(行动模块)。
5. 📓 组件 4:笔记本------记忆架构
「土拨鼠之日」问题:没有记忆,每次感知都是全新无上下文的事件;5 步计划做完第 1 步就忘了结果。
| 短期记忆 STM(工作记忆) | 长期记忆 LTM(持久记忆) | |
|---|---|---|
| 类比 | 清醒意识 / 电脑 RAM | 知道的全部事实 / 电脑硬盘 |
| 特点 | 极快,但小、易失、贵 | 海量、永久、便宜但慢 |
- STM = LLM 的上下文窗口 :装着 System Prompt、当前对话历史、当前计划、最近工具调用结果。上下文窗口是 Agent 最贵的资源(8k/128k/1M tokens),装不下整个互联网甚至 50 页文档
- LTM = 外部持久数据库 :存历史对话、用户偏好、大文档、知识图谱------Agent 不用"全记住",只要知道去哪查
STM 与 LTM 协作 = RAG(检索增强生成),6 步循环:①感知用户提问 ②计划:大脑发现需要外部数据 ③行动-检索:搜索 LTM ④LTM 返回一小段相关事实 ⑤增强:事实加载进 STM ⑥生成:LLM 同时"看见"问题与答案。
LTM 的三种架构模式:
| 存储 | 技术 | 用途 |
|---|---|---|
| Key-Value / 文档库 | Firestore, MongoDB | 结构化事实 + 对话历史 |
| SQL | PostgreSQL | 高关系型企业数据 |
| 向量数据库 | Pinecone, ChromaDB | 语义/概念相似度(RAG 里的 "R") |
向量数据库存储高维向量,向量是数据的数值表示,捕捉语义------按"意思"而非关键词搜索。
6. 🖐️ 组件 5:手------行动与工具调用
工具 = 任何允许 Agent 执行的函数/脚本/API/外部系统。聊天机器人 vs Agent 的分水岭 :聊天机器人告诉你 天气,Agent 去取天气。
机制:函数调用(Function Calling):
- 告诉 LLM 有哪些工具:把 schema(函数列表)放进 prompt
- LLM 计划一次调用:输出匹配 schema 的结构化 JSON
- 我们的系统执行:应用代码收到 JSON,暂停 LLM,跑真实的 Python/API 调用
ReAct 交接详解(6 步) :①大脑计划"我需要天气"→ 生成 JSON {"call": "get_weather", "location": "Paris"} ②行动模块(调度器)接住 JSON ③执行真实函数 ④工具返回 {"temp": "15C", "condition": "Cloudy"} ⑤把结果作为"感知"喂回 LLM ⑥大脑基于结果回答用户。
安全与护栏(本模块最重要主题) 。噩梦场景:目标"清理测试库的旧用户"→ Agent 的"合理"计划是 DELETE /users → 结果误删了生产库!
三大护栏:
- 最小权限原则:绝不给"万能钥匙"(如 run_python_script);天气 Agent 只该有 get_weather
- 读优先 vs 写:强烈倾向读工具;对写工具(send_email、delete_record)极度谨慎
- 人类介入确认(HITL):一切写/破坏性操作的终极安全网------Agent 计划发邮件时系统暂停,弹给人类 批准 拒绝
护栏不是附加品,是核心设计。
7. 🔄 组件 6:反馈环------学习与适应
现有 Agent 能执行,但是静态的 :计划低效、记忆错误都没法自我改进。解决方案是双循环:
- 循环1 性能环(演员):现有整套 Agent,Perceive→Reason→Act,快、逐轮运转
- 循环2 学习环(更新者) :更高级的慢循环,观察演员表现,负责改进它
两个新组件:
- Critic(评论家/评估器):观察动作与结果,对比"成功标准",生成反馈信号------"上一步达到子目标了吗?为什么失败(API key 无效)?高效吗(工具太慢)?对整体目标有帮助吗?"
- Learning Element(学习元素/更新者):接收反馈信号,对演员的组件做技术更新
反馈信号两种来源:
- 显式(人类介入):用户是评论家------邮件"这是垃圾邮件"按钮、👍/👎、用户纠正
- 隐式(环境):Agent 自己当评论家------象棋 AI 输棋、API 返回错误、销售邮件无人回复
更新机制(由浅入深):
- 更新记忆(LTM) :反馈"这个事实错了" →
vector_db.delete(fact_id) - 更新规划:反馈"这个 5 步计划失败了" → 在 LTM 存 memo"别再试这个计划"
- 更新效用函数(最先进 = 强化学习):反馈"用户讨厌最快但收费的路线" → 给"收费路"调高负权重
垃圾邮件过滤器实例 :演员规则 IF 主题含 "report" THEN 收件箱 → 垃圾邮件"Free Report on Drugs"被放行 → 你标记为垃圾 → 学习元素分析 → 规则更新为 IF ("report") AND NOT ("Drugs") THEN 收件箱。
8. 🗣️ 组件 7:声音------Agent 通信
| Agent→人类 (A2H) | Agent→Agent (A2A) | |
|---|---|---|
| 听众 | 终端用户 | 另一个软件 Agent |
| 格式 | 非结构化自然语言 | 结构化无歧义数据 (JSON) |
| 目标 | 有帮助、共情、易懂 | 精确、机器可读、高效 |
A2H 深潜 :这是推理循环的最后一步 = 一次「综合(Synthesis) 」调用------内部状态 {"goal": "订巴黎机票", "result": {"id": "TK-123", "status": "CONFIRMED"}} + 综合提示词"你是友好旅行助手..." → 最终声音:"好消息!您的巴黎航班已订好,确认号 TK-123,旅途愉快!"
A2A 深潜------多智能体系统的引擎 :坏例子(用 A2H 方式对 Agent 说话):"嘿 Agent,能帮我查一下纽约的天气吗?"------慢、有歧义、贵、不可机器读取。原则:人类之间用散文(A2H),服务器之间用 API/JSON(A2A)------Agent 之间要像服务器一样说话。
解决方案 = 标准协议(如 MCP):
- 请求:
{"agent_id": "travel_agent", "task": "get_weather", "parameters": {"location": "New York"}} - 响应:
{"status": "success", "data": {"temp": "18C", "condition": "Sunny"}}
9. 🛠️ 实战:搭建 Research Assistant(研究助手)
任务 :自主撰写关于复杂主题的简短事实报告。用户请求:"给我写一份关于巴黎历史的简短报告"。为什么是 Agentic 任务:内部训练数据可能过时------必须计划:①search_for_info ②analyze_results ③write_report。
5 步配方(Lab Plan)------"从零建 Agent"的通用流程:
- 定义「灵魂」(System Prompt)
- 选「大脑」(LLM)
- 定义「手」(web_search 工具)
- 架构「记忆」(短期 scratchpad)
- 写「循环」(编排代码)
逐步实现:
- Step 1 灵魂:System Prompt------"你是研究助手,必须用 web_search 收集信息,不得凭自己知识回答,必须先搜索→分析→写报告"
- Step 2 大脑:复杂推理任务 → 选高能力模型(GPT-5/Claude 4/Gemini Advanced)
- Step 3 手 :Python 函数
web_search(query)+ JSON schema 说明书{"name": "web_search", "description": "Searches the web", "parameters": {"query": "string"}} - Step 4 记忆 :短期 = Python list
chat_history = [](存用户消息+工具结果);长期 = 外部数据库 - Step 5 循环 (ReAct 逻辑):循环1 感知"巴黎历史报告"→ 推理"系统提示要求用工具"→ 行动:LLM 返回
{"tool_call": "web_search", "query": "history of Paris"}→ 代码执行函数 → 结果存进记忆 → 循环2 推理"该综合成报告"→ 行动:生成自然语言报告
里程碑:你已能识别、架构、构建 Agent 的所有核心组件------从「Agent 用户」升级为「Agent 构建者」。
10. 🔁 PRAL 循环深潜(智能体的「心跳」)
Agentic Loop(PRAL)= 每个 Agent 的「操作系统/心跳」:
- Perception 感知:「网关」------如何感知世界
- Reasoning 推理:「大脑」------如何思考规划
- Action 行动:「手」------如何影响世界
- Learning 学习:「记忆」------如何自我改进
Phase 1 感知 :触发多样、原始、混乱(用户输入/API 响应/传感器数据)→ 关键过程:归一化 (Image→视觉模型→文本;Audio→语音转文字;JSON→解析器)→ 输出:内部表示(干净文本)= 第一次数据变换。
Phase 2 推理 :输入 = 归一化感知 + 记忆中的相关上下文 → 过程:①理解(LLM 解读全部上下文)②计划(目标分解成步骤=CoT)③决策(选下一步行动)→ 关键输出:Action Plan(JSON 结构化对象)= 第二次数据变换。
Phase 3 行动 :①解析(非 LLM 的调度器解析 JSON)②执行(调用真实代码)③影响环境 → 关键输出:「闭合循环」 ------工具结果不是终点!它被喂回起点,成为下一轮感知的触发器:感知(API结果)→推理(现在知道状态了)→行动(告诉用户)。
Phase 4 学习(元循环) :可选,架在 PRAL 之上:任务完成后 Critic 复盘完整记录(方案有效吗?高效吗?用户满意吗?)→ 适应:更新记忆 / 更新规划 / 更新效用。Learn 模块向 Reason、Action、Tools、Memory 都有连线------学习结果要能更新其他所有组件。
PRAL 旅程总结 :Perceive(原始→文本)→ Reason(文本+记忆→JSON计划)→ Act(JSON→工具结果)→ Loop(工具结果→Perceive)→ Learn(最终结果→更新记忆/计划)。PRAL 流程是一切 Agentic 行为的引擎。
11. PRAL 双案例:ChatGPT 与医疗 Agent
案例 1:ChatGPT(数字域)
- 感知 :你对手机说话"帮我找家好的海鲜餐厅"(音频)→ 语音转文字 → 感知模块丢弃你的语气(讽刺、情绪都不感知,只听内容)→ 干净文本
- 推理:输入 = 归一化文本 + 记忆上下文("用户住在西雅图")→ 思考:①要高级海鲜 ②记忆说住西雅图 ③需要实时信息(营业时间、评价)我没有 ④计划用 web_search → 输出 JSON 计划
- 行动 + 闭合循环 :调度器解析 JSON → 执行 web_search → 结果(5 家餐厅 JSON)喂回感知 → 循环2:感知→推理(综合呈现)→ 行动(生成你看到的文字回答)
ChatGPT 内部就是一套完整 PRAL Agent。
案例 2:医疗 Agent(赛博物理域)
- 感知 :ICU 病人高速混乱数据流------vitals.json (HR:125, BP:80/50)、lab_results.pdf、radiology_image.dcm → 归一化:①过滤 :只在异常数据触发(HR>120)②翻译:专用模型(如 Viz.ai)把影像转成文本 → 输出"4A 床病人生命体征不稳定 (HR:125)。新放射报告:左侧异常"
- 推理:输入 + 记忆("病人青霉素过敏")→ 目标:患者存活 → 计划:搜 PubMed + 开新的 STAT 血检 → 输出多工具 JSON 计划
- 行动:执行 search_pubmed + order_test → 结果喂回感知 → 循环2:基于新数据推理 → 形成最终计划(推荐药物 X)
- 学习/安全 :最终计划不自动执行!停下来交给**人类介入(医生)**批准 → 医生反馈("正确,批准")作为学习输入改进未来模型
医疗场景中人类是最终决策者(Human-in-the-Loop: Dr verifies)。PRAL 是通用流程:数字域与物理域同样适用。
12. 小结
本段精华:
- Agent = 7 部件:🧠大脑 → 👁️感官 → 📐军师 → 📓笔记本 → 🖐️手 → 🔄反馈环 → 🗣️声音,逐个可独立设计
- 大脑:LLM = CPU;System Prompt = 操作系统;CoT/ReAct 让"预测下一个词"变成"推理";选型三角 = 能力×成本×速度
- 感官:世界混乱多模态,感知模块是"翻译官"------归一化成干净文本(第一次数据变换)
- 军师 :复杂目标分解成计划;Plan = 工具调用序列的数据结构;CoT 静态规划 vs ReAct 动态规划;"想"与"做"分离是核心原则
- 笔记本 :STM(上下文窗口)最贵最有限;LTM(数据库)解决"土拨鼠之日";RAG = STM↔LTM 的桥;向量库存"语义"
- 手 :工具 = 聊天机器人与 Agent 的分水岭;函数调用 = 大脑↔手的桥梁;安全三原则:最小权限、读优先、HITL 确认
- 反馈环:双循环(性能环+学习环);Critic 评估 + Learner 更新;从更新记忆→更新计划→强化学习逐级进阶
- 声音:A2H 自然语言(综合提示词),A2A 结构化 JSON(协议如 MCP)------对人对 Agent 要说"不同的语言"
- Research Assistant 五步配方:灵魂→大脑→手→记忆→循环,就是"从零建 Agent"的通用流程
- PRAL = Agent 的心跳 :感知(归一化)→推理(出 JSON 计划)→行动(执行+闭合循环)→学习(复盘改进);ChatGPT 与医疗案例证明它在数字域和物理域同样适用------医疗里最终决策必须 HITL(医生批准)
- 下一段预告:多智能体时代------单 Agent 的极限、Agentic AI(工厂)、编排 vs 编舞