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+ 小伙伴加入学习,欢迎点击围观

面试考察点

  1. 架构认知的系统性:面试官想知道你是不是把 Agent 当成 "聊天机器人 + 函数调用" 的简单玩意儿。它其实是一套完整的认知架构,你得把大脑(LLM)、规划、记忆、工具这几块讲清楚,还能说出它们怎么配合。

  2. 理论与实践结合:能不能结合主流框架(Spring AILangChain4jLangChain)说说这些组件怎么落地?停在概念层和能写出代码,完全是两个段位。

  3. 演进意识:Agent 这块 2024 到 2026 年变化太快了,从单 Agent 到 Multi-Agent,从手工编排到 ReActPlan-and-ExecuteReflexion 各种范式冒出来。能聊到演进趋势,说明你一直跟得上。

核心答案

Agent 架构最经典的定义,来自 OpenAI 前研究主管 Lilian Weng 提出的公式:

Agent = LLM(大脑)+ Planning(规划)+ Memory(记忆)+ Tool Use(工具使用)

谷歌 2025 年的 Agent 白皮书把它简化成 "模型 + 工具 + 编排层(Orchestration)" 三件套,其实就是把规划、记忆、循环调度都塞进编排层里。

我建议面试时按 五大核心组件 来答,清楚,也不容易漏:

组件 作用 类比
LLM(大脑) 核心推理与决策引擎 人的大脑
Planning(规划) 任务拆解、推理决策、反思 人的思考过程
Memory(记忆) 存储上下文与历史经验 短期记忆 + 长期记忆
Tools(工具) 与外部世界交互 人的手脚和工具
Action / 感知(执行与输入) 接收输入、执行动作 眼睛看 + 手去做

一句话总结:Agent 就是以 LLM 当大脑,靠 "感知 → 规划 → 行动 → 反思" 这个循环,配合记忆和工具去把复杂任务办了的系统

深度解析

一、Agent 的整体架构

先上一张整体架构图,把组件之间的关系串起来:

AI Agent 整体架构图
AI 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-4oClaude 系列;国产看 QwenDeepSeekGLM,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 范式循环流程图
ReAct 范式循环流程图

ReAct 让 LLM 边想边做,每执行一个动作就观察结果,再决定下一步,比那种 "一开始就把整个计划定死" 的方式灵活得多。

3. Memory 记忆——让 Agent 有了连续性

没有记忆,Agent 就是个 "金鱼脑",每轮对话都从零开始。记忆分两层:

  • 短期记忆(Short-Term Memory):就是当前会话的上下文窗口,一般用消息列表维护。问题是上下文长度有限,长对话会爆 Token,所以要做 滑动窗口摘要压缩 等策略
  • 长期记忆(Long-Term Memory):把历史对话、用户偏好、经验知识存进 向量数据库(如 Milvus、Chroma),要用的时候通过语义检索找回来。Agent 能不能跨会话记住你,就靠它

2025 年这块演化很快,出现了专门做 Agent Memory 的项目,比如 Mem0Zep,能把记忆管理做成独立的中间件服务。

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 AILangChain4j 都已经跟上了。

三、用 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 写法,多翻翻 LangChain4jSpring AI 的官方文档,Java AI 框架迭代太快,2025 到 2026 年 API 改动不少,凭记忆写很容易踩坑。

四、Agent vs LLM vs Workflow 的区别

这个对比面试官经常追问,搞清楚边界很重要:

维度 LLM Workflow Agent
自主性 被动响应 固定流程 自主决策
决策方式 单次预测 预定义规则 LLM 动态规划
工具使用 固定调用 按需选择
适用场景 单轮问答 标准化流程 开放式复杂任务

一句话:LLM 是大脑,Workflow 是流水线工人,Agent 是能自己想办法解决问题的"聪明人"

面试高频追问

  1. Agent 和 RAG 是什么关系?

    RAG 可以看作 Agent 工具层的一种,把 "检索知识库" 封装成一个 Tool,让 Agent 自己决定什么时候查资料。Agent 是更大的架构概念,RAG 是它其中一块能力。

  2. Agent 的循环什么时候终止?

    常见策略:LLM 自己判断任务完成并输出最终答案;达到最大循环次数限制(防止死循环);超时或异常中断。生产环境一定要加 max_iterations 兜底。

  3. Agent 在生产环境最大的坑是什么?

    稳定性成本。LLM 是概率模型,可能乱调工具、陷入死循环、Token 烧得飞快。生产落地要做:超时控制、循环次数限制、工具调用幂等性、Token 用量监控、人工兜底接管。

  4. 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 的循环逻辑、用 LangChain4jSpring AI 的代码落地佐证,再点一句生产环境的稳定性和成本坑,高分基本就稳了。这块知识 2025 到 2026 年变化太快,MCP 协议、Multi-Agent、Agent Memory 中间件这些前沿话题能提一句,面试官会眼前一亮。