跳到正文

Agent 核心组件怎么协作?

规划、工具调用、记忆模块的工作原理与协同机制

原题:请阐述大模型智能体(Agent)的基本工作原理,并详细介绍其核心组件(如规划模块、工具调用模块、记忆模块等)的功能和协作方式。

Prompt工程 · 百度真题

30 秒回答

  1. 能清晰解释Agent的"感知-规划-行动-记忆"循环机制
  2. 准确描述规划模块的推理方式(如CoT、ReAct、ToT)
  3. 说明工具调用的实现方式(Function Calling/Tool Use)
  4. 区分短期记忆(上下文)与长期记忆(向量存储)

回答与解析

答案要点

  • 能清晰解释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. 问法 1 · 场景切入

    假设我们做一个智能客服Agent,用户问‘帮我查一下上个月的订单’,他可能还需要对比几家供应商。你作为Agent,怎么规划步骤、调用什么工具、中间结果怎么记?整个过程是怎么串起来的?

  2. 问法 2 · 层层追问

    你先说说Agent是怎么工作的?……它怎么决定下一步做什么?……如果要查询外部数据,模型怎么调用API?……中间结果和之前的对话信息怎么保存和利用?

  3. 问法 3 · 直球架构

    请阐述大模型Agent的基本工作原理,重点讲规划模块、工具调用模块和记忆模块分别干什么,以及它们之间如何协作完成一个复杂任务。

同模块相关题目