Agent 核心机制怎么工作?
大模型智能体的感知、规划与工具调用原理
原题:请详细解释大模型智能体(Agent)的工作原理和核心机制
Agent · 百度真题
30 秒回答
- Agent的核心定义:感知-思考-行动的循环架构
- ReAct范式的推理与行动交织机制
- Function Calling的实现原理和调用流程
- 记忆机制的设计(短期/长期记忆)
回答与解析
答案要点
- Agent的核心定义:感知-思考-行动的循环架构
- ReAct范式的推理与行动交织机制
- Function Calling的实现原理和调用流程
- 记忆机制的设计(短期/长期记忆)
- 多Agent协作与任务分解策略
Agent的本质:LLM + 工具 + 控制循环
Agent不是简单的"模型套壳",而是让大模型具备自主决策能力的系统架构。
核心架构:感知-思考-行动循环
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ 环境输入 │ → │ 思考推理 │ → │ 执行行动 │ → │ 观察反馈 │
│ (Observation)│ │ (Thought) │ │ (Action) │ │(Observation)│
└─────────┘ └─────────┘ └─────────┘ └────┬────┘
│
←←←←←←←←←←←←←←←←←←←┘
关键机制详解
1. ReAct范式(推理+行动交织)
- 传统CoT:只推理,不行动 → 无法获取外部信息
- ReAct:
Thought → Action → Observation → Thought... - 每一步都显式输出思考过程,决定调用工具还是给出答案
2. Function Calling实现
# 核心流程:模型生成结构化调用指令
tools = [{
"name": "search",
"description": "搜索实时信息",
"parameters": {"query": {"type": "string"}}
}]
# 模型输出:{"name": "search", "arguments": {"query": "..."}}
# 系统执行 → 结果回填 → 模型继续推理
3. 记忆设计
| 类型 | 作用 | 实现 |
|---|---|---|
| 短期记忆 | 单轮对话上下文 | 窗口缓存 |
| 长期记忆 | 跨会话知识积累 | 向量数据库存储+检索 |
4. 规划能力
- 单Agent:任务分解(将复杂目标拆为子步骤)
- 多Agent:角色分工(规划者、执行者、验证者协作)
与RAG的本质区别
| RAG | Agent | |
|---|---|---|
| 交互方式 | 单次检索+生成 | 多轮工具调用循环 |
| 决策能力 | 无,被动响应 | 有,主动规划 |
| 适用场景 | 知识问答 | 复杂任务执行 |
Agent的核心价值:让模型从"答题者"变成"执行者"。
口语版讲法(约4分钟)
- Agent本质是让模型从答题者变成执行者
- 核心循环:感知-思考-行动,ReAct范式
- Function Calling是连接模型和工具的桥梁
- 记忆和规划是落地关键
- 和RAG的边界:Agent适合复杂任务,RAG适合知识问答
面试官你好,这道题问的是大模型智能体的工作原理,我觉得本质上它是在问:怎么让大模型从一个只会回答问题的聊天机器,变成一个能自主执行任务的智能体。这不是简单的套壳,而是一整套架构设计。
我理解Agent的核心就是感知-思考-行动的循环。模型拿到环境输入后,先思考,再决定行动,然后观察反馈,再思考下一步。这个循环里最关键的范式是 ReAct,它把推理和行动交织在一起。传统CoT模型只推理不行动,信息是封闭的;ReAct每一步都输出思考,然后决定是调用工具还是直接给出答案。你可以想象成,模型不再是闷头想,而是不断问自己“我现在需要查什么”,查完再想下一步。
具体到实现,核心机制是 Function Calling。模型输出一个结构化的调用指令,比如{"name": "search", "arguments": {"query": "..."}},系统执行这个函数,把结果回填给模型,模型再继续推理。这个流程看似简单,但落地时有个坑:模型可能幻觉出不存在函数,或者参数格式错。所以上线前我会特别关注两件事,一是函数定义要写得极其清晰,description要写透,二是做一轮严格的格式校验,格式不对直接重试,避免把乱数据喂给下游。
再说记忆和规划。短期记忆就是上下文窗口,但长期记忆得靠 Vector Database 存历史信息或知识。规划这块,单Agent做任务分解,比如把“写一份市场分析报告”拆成“搜索数据、分析趋势、生成报告”几步。多Agent的话,可以角色分工,一个规划者拆任务,一个执行者干活,一个验证者检查,有点像一个小团队。
举个例子,客服退款场景。用户说“我上个月买的衣服没收到,要退款”。如果是RAG,它就搜一下退货政策,然后回复。但Agent会这样跑:先调订单查询工具,发现确实没收到,再调物流工具看状态,如果物流显示已签收,它可能再调客服备注工具查有没有异常,最后综合判断是补发还是退款。每一步都调用不同工具,观察结果再决策。
所以Agent和 RAG 的边界很清楚。RAG适合单次检索加生成的知识问答,比如问“退货政策是什么”,它没有决策能力,只是被动响应。Agent适合复杂任务执行,比如刚才那个退款案例,需要多轮工具调用和主动规划。但真正落地时,我常常两者一起上,比如先用RAG获取知识,再用Agent做决策执行。
最后我说一下我的取舍。我更倾向把Agent看作一个编排层,而不是一个模型能力问题。模型本身是底座,关键是控制循环、工具定义、记忆管理这些工程设计做得好不好。如果这些做不好,模型再强也容易跑偏。所以我会把Agent看成是系统工程,核心是让模型在可控范围内自主行动。
另外,现在有个趋势是把Agent和RAG融合成 Agentic RAG,让Agent动态决定什么时候检索、检索什么,而不是固定走检索再生成。这块我觉得会是下一阶段的重点,但实现起来对模型的推理能力和工具调用的稳定性要求更高。
关键一句:Agent和RAG的融合趋势,即Agentic RAG,让Agent动态决定检索时机和内容
面试官还可能这样问
- 问法 1 · 场景切入
假设你做个电商客服Agent,用户问‘帮我查一下上周的订单’,然后又说‘再推荐个类似的商品’。Agent得先调订单接口,再根据结果决定调用推荐系统。你具体怎么设计这个‘思考-调用-继续思考’的流程?
- 问法 2 · 层层追问
你理解的大模型Agent是咋工作的?……那它怎么决定下一步该干啥?……如果它需要调用外部工具,比如搜索或数据库,你怎么让模型知道什么时候调、调哪个、参数填什么?
- 问法 3 · 直球架构
请直接讲大模型Agent的核心架构和工作原理,重点说清楚感知-思考-行动的循环、ReAct范式、Function Calling的调用流程,以及记忆和规划是怎么设计的。