Agent 核心组件怎么协作?
规划、工具调用、记忆模块的工作原理与协同机制
原题:请阐述大模型智能体(Agent)的基本工作原理,并详细介绍其核心组件(如规划模块、工具调用模块、记忆模块等)的功能和协作方式。
Prompt工程 · 百度真题
30 秒回答
- 能清晰解释Agent的"感知-规划-行动-记忆"循环机制
- 准确描述规划模块的推理方式(如CoT、ReAct、ToT)
- 说明工具调用的实现方式(Function Calling/Tool Use)
- 区分短期记忆(上下文)与长期记忆(向量存储)
回答与解析
答案要点
- 能清晰解释Agent的"感知-规划-行动-记忆"循环机制
- 准确描述规划模块的推理方式(如CoT、ReAct、ToT)
- 说明工具调用的实现方式(Function Calling/Tool Use)
- 区分短期记忆(上下文)与长期记忆(向量存储)
- 能举例说明各模块如何协作完成复杂任务
Agent核心工作原理
Agent = 大模型 + 规划能力 + 工具使用 + 记忆机制,形成"感知→规划→行动→记忆"的闭环。
三大核心组件
1. 规划模块(Planning)
- 作用:将复杂任务拆解为可执行的子步骤
- 典型方案:
- CoT(思维链):单线推理,适合简单任务
- ReAct:推理(Reasoning)与行动(Acting)交错,"我想→我做→我观察"循环
- ToT(思维树):多路径探索,保留多个候选方案
- 关键:让模型自主决定"下一步做什么",而非固定流程
2. 工具调用模块(Tool Use / Function Calling)
- 实现方式:模型输出结构化JSON(函数名+参数),外部执行后返回结果
- 流程:模型生成调用 → 系统执行 → 结果回传 → 模型继续推理
- 工具类型:搜索引擎、代码解释器、数据库、API、计算器等
3. 记忆模块(Memory)
| 类型 | 存储内容 | 实现方式 |
|---|---|---|
| 短期记忆 | 当前对话上下文 | 直接放入prompt |
| 长期记忆 | 历史会话、用户画像、领域知识 | 向量数据库(RAG检索) |
| 工作记忆 | 当前任务的中间结果 | 变量/缓存存储 |
协作示例(ReAct循环)
用户问:"深圳明天天气怎么样?适合穿什么?"
[思考] 需要查询天气 → [行动] 调用天气API(深圳, 明天)
→ [观察] 结果:25°C,多云有雨
→ [思考] 有雨需要带伞,温度适中可穿薄外套
→ [最终回答] ...
关键设计:每轮只执行一步,根据观察结果动态调整后续计划,而非一次性生成完整方案。
口语版讲法(约4分钟)
- 一句话定位:本质是让大模型从对话助手变成能行动的智能体
- 规划模块:CoT、ReAct、ToT的适用边界与关键设计
- 工具调用:Function Calling的实现与落地风险
- 记忆模块:短期与长期记忆的协作
- 协作示例与工程师判断收尾
我觉得这道题本质上问的是,怎么让一个大模型从只会聊天对话,变成一个能真正动手解决问题的智能体。核心就是给模型加上规划、工具和记忆这三个能力,形成一个感知、规划、行动、记忆的闭环。
我先说规划模块。它的任务是把一个复杂目标拆成可执行的小步骤。常见的有几种做法:Chain-of-Thought 就是让模型一步步推理,适合那种路径比较明确、不需要太多探索的任务,比如算个简单的数学题。ReAct 更灵活一些,它让模型推理和行动交替进行,想一步做一步,做完看结果再想下一步。而 Tree-of-Thoughts 就更强了,它同时探索多条路径,像下棋时评估不同走法,适合需要全局搜索的复杂问题。但落地的时候,我一般不会只用一种。比如做一个客服退款 Agent,简单场景用 CoT 就够了,但一旦遇到商品状态异常、需要查物流和库存价格,我就会上 ReAct,让模型动态决定先查哪个系统。ToT 成本太高,通常只在策略类场景才用。
再一个是工具调用模块。这个说白了就是模型通过 Function Calling 输出一个结构化的 JSON,告诉系统要调什么函数、传什么参数,系统执行完再把结果喂回去。这里有个常见的坑:模型可能会幻构出根本不存在的函数名或参数,尤其是参数类型或范围容易错。所以上线前一定要做参数校验和 schema 约束,不能完全信任模型的输出。另外,工具返回的结果格式不稳定,模型可能会误解,所以我会在 prompt 里明确告诉它每个字段的含义。
记忆模块我分两种。短期记忆就是当前对话的上下文,直接塞进 prompt 就行。长期记忆就复杂一点,需要把历史对话、用户画像、领域知识存到 Vector Database 里,通过 RAG 检索出来。这里有个取舍:短期记忆受限于上下文窗口,太长会稀释注意力;长期记忆依赖检索质量,如果检索不准,反而会引入噪声。所以我会把关键信息放在短期记忆里,辅助信息走长期记忆。
举个例子,用户问“深圳明天天气怎么样,适合穿什么”。Agent 先思考,然后调用天气 API,拿到结果 25 度、多云有雨。接着它根据这个观察再思考,有雨要带伞,温度适中穿薄外套。最后回答。整个过程就是 ReAct 循环。
这里我多说一句,其实很多复杂任务需要多个 Agent 协同,比如一个负责规划,一个负责工具调用,一个负责记忆管理。但多 Agent 的通信和一致性成本很高,不是所有场景都划算。
所以我的整体看法是,Agent 不是一个固定的架构,而是一套组合能力。我更倾向于根据业务场景灵活搭配,把规划、工具、记忆看成可插拔的模块,而不是一个黑盒。上线前我会特别关注工具调用的错误处理、长期记忆的检索质量,以及 ReAct 循环会不会死循环。这些点踩住了,Agent 才能真正稳定落地。
关键一句:多 Agent 协同在复杂任务中很有用,但通信和一致性成本高,不是所有场景都划算。
面试官还可能这样问
- 问法 1 · 场景切入
假设我们做一个智能客服Agent,用户问‘帮我查一下上个月的订单’,他可能还需要对比几家供应商。你作为Agent,怎么规划步骤、调用什么工具、中间结果怎么记?整个过程是怎么串起来的?
- 问法 2 · 层层追问
你先说说Agent是怎么工作的?……它怎么决定下一步做什么?……如果要查询外部数据,模型怎么调用API?……中间结果和之前的对话信息怎么保存和利用?
- 问法 3 · 直球架构
请阐述大模型Agent的基本工作原理,重点讲规划模块、工具调用模块和记忆模块分别干什么,以及它们之间如何协作完成一个复杂任务。