Agent 的基本架构由哪些核心组件构成?
一则或许对你有用的小广告
欢迎加入小哈的星球,你将获得:专属的实战项目(4个项目都能学) / 1v1 提问 / 简历修改 / Java 学习路线 / 社群讨论 / 学习打卡 / 每月赠书
《Spring AI 项目实战(问答机器人、RAG 智能客服、联网搜索)》已完结,基于
Spring AI + Spring Boot 3.x + JDK 21...,查看介绍《从零手撸:仿小红书(微服务架构)》 已完结,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...,查看介绍;演示链接:http://116.62.199.48:7070/《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接:http://116.62.199.48/
新开坑项目:《从零手撸:秒杀系统高并发优化实战》 正在更新中...,查看介绍
截止目前,星球内专栏累计输出 150w+ 字,讲解图 5110+ 张,还在持续爆肝中.. 后续还会上新更多项目,已有 4700+ 小伙伴加入学习,欢迎点击围观
面试考察点
-
架构认知的系统性:面试官想知道你是不是把 Agent 当成 "聊天机器人 + 函数调用" 的简单玩意儿。它其实是一套完整的认知架构,你得把大脑(LLM)、规划、记忆、工具这几块讲清楚,还能说出它们怎么配合。
-
理论与实践结合:能不能结合主流框架(
Spring AI、LangChain4j、LangChain)说说这些组件怎么落地?停在概念层和能写出代码,完全是两个段位。 -
演进意识:Agent 这块 2024 到 2026 年变化太快了,从单 Agent 到 Multi-Agent,从手工编排到
ReAct、Plan-and-Execute、Reflexion各种范式冒出来。能聊到演进趋势,说明你一直跟得上。
核心答案
Agent 架构最经典的定义,来自 OpenAI 前研究主管 Lilian Weng 提出的公式:
Agent = LLM(大脑)+ Planning(规划)+ Memory(记忆)+ Tool Use(工具使用)
谷歌 2025 年的 Agent 白皮书把它简化成 "模型 + 工具 + 编排层(Orchestration)" 三件套,其实就是把规划、记忆、循环调度都塞进编排层里。
我建议面试时按 五大核心组件 来答,清楚,也不容易漏:
| 组件 | 作用 | 类比 |
|---|---|---|
| LLM(大脑) | 核心推理与决策引擎 | 人的大脑 |
| Planning(规划) | 任务拆解、推理决策、反思 | 人的思考过程 |
| Memory(记忆) | 存储上下文与历史经验 | 短期记忆 + 长期记忆 |
| Tools(工具) | 与外部世界交互 | 人的手脚和工具 |
| Action / 感知(执行与输入) | 接收输入、执行动作 | 眼睛看 + 手去做 |
一句话总结:Agent 就是以 LLM 当大脑,靠 "感知 → 规划 → 行动 → 反思" 这个循环,配合记忆和工具去把复杂任务办了的系统。
深度解析
一、Agent 的整体架构
先上一张整体架构图,把组件之间的关系串起来:
这张图把 Agent 的核心循环讲明白了,我拆开来说:
- 感知层:接收用户输入或环境信号,包括文本、图像、语音等多模态输入。这是 Agent 和外界打交道的第一道关
- LLM 大脑:整个系统的决策中枢,负责理解意图、生成下一步行动方案。注意它不是单次问答,而是在一个循环里不断被调用
- 规划层:Agent 和普通 Chatbot 的区别就在这里。它把一个复杂目标拆成多个可执行步骤,再决定每一步做什么、调用什么工具
- 记忆层:分短期和长期两块。短期记忆管当前对话上下文,长期记忆把历史经验和知识存进向量库
- 工具层:Agent 的 "手脚",通过 Function Calling 调用各种外部能力,比如查数据库、调 API、跑代码、检索知识库
- 执行层:真正去调用工具、产生副作用,再把结果回传给 LLM 进入下一轮循环
核心机制就是 "感知 → 规划 → 行动 → 反思" 这个闭环。Agent 不是一次调用完事,而是一圈圈循环下去,直到任务完成或者触发终止条件。这就是常说的 Agent Loop(智能体循环)。
二、四大核心组件拆解
1. LLM 大脑——决策中枢
LLM 是 Agent 的核心,但 Agent 场景下对 LLM 的要求和普通对话不太一样:
- 推理能力要强:得支持
CoT(Chain-of-Thought)、Function Calling、长上下文 - 指令遵循要好:能严格按 System Prompt 的格式输出,否则工具调用就会乱套
- 主流选择:闭源看
GPT-4o、Claude系列;国产看Qwen、DeepSeek、GLM,2025-2026 年国产模型在 Agent 场景的能力已经追得很紧
2. Planning 规划——Agent 的脑子怎么转
这是面试官最爱深挖的部分。规划层常见的几种范式:
| 范式 | 思路 | 适用场景 | 代表 |
|---|---|---|---|
| CoT | 一步步思考 | 简单推理任务 | 经典思维链 |
| ReAct | Reasoning + Acting 交替 | 需要调工具的任务 | 最主流的 Agent 范式 |
| Plan-and-Execute | 先整体规划再逐步执行 | 复杂多步任务 | LangChain 的 Plan-Execute |
| Reflexion | 失败后反思再重试 | 需要自我纠错的场景 | 反思型 Agent |
| Tree of Thoughts | 树状探索多条思路 | 搜索类任务 | ToT |
ReAct 是目前最主流的范式,核心是 "思考 → 行动 → 观察 → 再思考" 的循环:
ReAct 让 LLM 边想边做,每执行一个动作就观察结果,再决定下一步,比那种 "一开始就把整个计划定死" 的方式灵活得多。
3. Memory 记忆——让 Agent 有了连续性
没有记忆,Agent 就是个 "金鱼脑",每轮对话都从零开始。记忆分两层:
- 短期记忆(Short-Term Memory):就是当前会话的上下文窗口,一般用消息列表维护。问题是上下文长度有限,长对话会爆 Token,所以要做 滑动窗口、摘要压缩 等策略
- 长期记忆(Long-Term Memory):把历史对话、用户偏好、经验知识存进 向量数据库(如 Milvus、Chroma),要用的时候通过语义检索找回来。Agent 能不能跨会话记住你,就靠它
2025 年这块演化很快,出现了专门做 Agent Memory 的项目,比如 Mem0、Zep,能把记忆管理做成独立的中间件服务。
4. Tools 工具——Agent 长出了手脚
工具是 Agent 区别于 LLM 的地方。谷歌白皮书里说得挺形象:LLM 是 "纸上谈兵",Agent 是 "知行合一"。
工具的形态主要有:
- Function Calling / Tool Use:最基础的形式,LLM 决定调用哪个函数、传什么参数,应用层负责执行
- 代码解释器(Code Interpreter):让 Agent 能写代码、跑代码,适合数据分析场景
- RAG 检索:把知识库检索封装成一个工具,让 Agent 自己决定什么时候去查资料
- API 调用:查天气、订机票、操作数据库等真实世界的接口
2025 到 2026 年有个明显趋势:MCP(Model Context Protocol)。这是 Anthropic 推出的工具调用标准协议,工具一次开发,任意模型和框架都能复用,Spring AI、LangChain4j 都已经跟上了。
三、用 Java 框架落地 Agent
讲完架构,下面用主流 Java 框架演示一下组件怎么落地。
方案一:LangChain4j 实现 AI Service + Tools
LangChain4j 提供了 AiServices 这套声明式 API,把记忆、工具、模型粘在一起,写起来很省心:
import dev.langchain4j.agent.tool.Tool;
import dev.langchain4j.memory.ChatMemory;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
import java.time.LocalDateTime;
public class AgentDemo {
// 1. 定义工具——Agent 的"手脚"
public static class WeatherTools {
@Tool("查询指定城市的实时天气")
public String getWeather(String city) {
// 实际项目里调用真实天气 API
return city + " 今天晴,25 度";
}
@Tool("获取当前系统时间")
public String getCurrentTime() {
return "现在是 " + LocalDateTime.now();
}
}
// 2. 定义 Agent 接口——LLM + 规划 + 记忆的入口
public interface Assistant {
String chat(String userMessage);
}
public static void main(String[] args) {
// LLM 大脑:连接大模型
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName("gpt-4o")
.build();
// 短期记忆:保留最近 20 条消息
ChatMemory memory = MessageWindowChatMemory.withMaxMessages(20);
// 组装 Agent:模型 + 记忆 + 工具
Assistant agent = AiServices.builder(Assistant.class)
.chatLanguageModel(model)
.chatMemory(memory)
.tools(new WeatherTools()) // 注入工具
.build();
// Agent 会自动 ReAct:理解意图 → 决定调哪个工具 → 拿到结果 → 组织回答
String answer = agent.chat("北京现在天气怎么样?顺便告诉我时间");
System.out.println(answer);
// 输出示例:北京现在晴天,气温 25 度。当前时间是 2026-06-29T10:30:00
}
}
这段代码里,AiServices 帮你把 LLM、Memory、Tools 三大组件粘起来,底层跑的就是 ReAct 循环。你看不到显式的 "思考-行动-观察" 代码,框架全包了。
方案二:Spring AI 的 Tool Calling
Spring AI 的写法更符合 Spring 开发者的习惯,用 @Tool 注解就能声明工具:
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Service;
@Service
public class CustomerServiceAgent {
private final ChatClient chatClient;
public CustomerServiceAgent(ChatModel chatModel) {
// 构建带系统提示词的 ChatClient,定义 Agent 人设和行为规范
this.chatClient = ChatClient.builder(chatModel)
.defaultSystem("你是一个专业的客服助手,可以查询订单和商品信息。"
+ "如果用户的问题超出能力范围,请礼貌引导。")
.build();
}
// 工具一:查询订单
@Tool(description = "根据订单号查询订单状态和物流信息")
public String queryOrder(@ToolParam(description = "订单编号") String orderId) {
// 实际从数据库查询
return "订单 " + orderId + " 已发货,预计明天送达";
}
// 工具二:查询商品库存
@Tool(description = "查询商品库存数量")
public String checkStock(@ToolParam(description = "商品名称") String productName) {
return productName + " 当前库存 128 件";
}
// Agent 对外接口
public String serve(String userQuery) {
return chatClient.prompt()
.user(userQuery)
.tools(this) // 注入当前 Bean 的所有 @Tool 方法
.call()
.content();
}
}
Spring AI 好就好在和 Spring 生态无缝衔接,改改 application.yml 就能切模型供应商,做企业级应用很顺手。
小提示:涉及具体 API 写法,多翻翻
LangChain4j和Spring AI的官方文档,Java AI 框架迭代太快,2025 到 2026 年 API 改动不少,凭记忆写很容易踩坑。
四、Agent vs LLM vs Workflow 的区别
这个对比面试官经常追问,搞清楚边界很重要:
| 维度 | LLM | Workflow | Agent |
|---|---|---|---|
| 自主性 | 被动响应 | 固定流程 | 自主决策 |
| 决策方式 | 单次预测 | 预定义规则 | LLM 动态规划 |
| 工具使用 | 无 | 固定调用 | 按需选择 |
| 适用场景 | 单轮问答 | 标准化流程 | 开放式复杂任务 |
一句话:LLM 是大脑,Workflow 是流水线工人,Agent 是能自己想办法解决问题的"聪明人"。
面试高频追问
-
Agent 和 RAG 是什么关系?
RAG 可以看作 Agent 工具层的一种,把 "检索知识库" 封装成一个 Tool,让 Agent 自己决定什么时候查资料。Agent 是更大的架构概念,RAG 是它其中一块能力。
-
Agent 的循环什么时候终止?
常见策略:LLM 自己判断任务完成并输出最终答案;达到最大循环次数限制(防止死循环);超时或异常中断。生产环境一定要加 max_iterations 兜底。
-
Agent 在生产环境最大的坑是什么?
稳定性 和 成本。LLM 是概率模型,可能乱调工具、陷入死循环、Token 烧得飞快。生产落地要做:超时控制、循环次数限制、工具调用幂等性、Token 用量监控、人工兜底接管。
-
ReAct 和 Plan-and-Execute 怎么选?
任务简单、步骤少用
ReAct(边想边做);任务复杂、步骤多用Plan-and-Execute(先定大计划再分步执行)。前者灵活,后者更可控,实际项目里经常混用。
常见面试变体
- "Agent 和 LLM 的本质区别是什么?"
- "Agent 的核心循环是怎么工作的?讲讲 ReAct 范式"
- "你用过哪个 Agent 框架?讲讲它的优缺点"
- "如何设计一个能处理复杂业务场景的 Agent 系统?"
- "Multi-Agent 架构相比单 Agent 有什么优势和挑战?"
记忆口诀
Agent 五件套:大脑(LLM)决策,规划拆任务,记忆存上下文,工具通外部,循环到完成。
简单点记:"脑 + 图 + 记 + 手 + 环",脑(LLM)、图(规划/思考路径)、记(记忆)、手(工具)、环(执行循环)。
总结
Agent 的核心架构就浓缩在 Lilian Weng 那个经典公式 "LLM + Planning + Memory + Tool Use" 里,加上感知和执行,闭环就齐了。面试时把五大组件讲清楚、配上 ReAct 的循环逻辑、用 LangChain4j 或 Spring AI 的代码落地佐证,再点一句生产环境的稳定性和成本坑,高分基本就稳了。这块知识 2025 到 2026 年变化太快,MCP 协议、Multi-Agent、Agent Memory 中间件这些前沿话题能提一句,面试官会眼前一亮。
