一、基础定义
**智能体(Agent)**是指能够感知环境并采取行动以实现特定目标的代理体,具备自主性、适应性和交互能力 。它通过感知环境变化,利用算法决策并执行动作,广泛应用于自动化系统、机器人及虚拟助手等领域 。
AI Agent 是什么?
在计算机、人工智能专业技术领域,一般将 agent 译为 "智能体",其定义是在一定的环境中体现出自治性、反应性、社会性、预动性、思辨性、认知性等一种或多种智能特征的软件或硬件实体。
OpenAI 将 AI Agent 定义为,以大语言模型为大脑驱动,具有自主理解感知、规划、记忆和使用工具的能力,能自动化执行完成复杂任务的系统。
AI Agent(智能体) :具备感知、思考、自主规划、调用工具、分步执行任务、自我纠错的人工智能,不再只被动问答,能自主拆解复杂目标、串联多步骤完成工作,是当前大模型落地主流方向。
区别普通大模型:普通 LLM 只会单次生成文字;Agent 可以自动拆任务→选工具→执行→校验结果→迭代重做。
二、四大核心组成
智能体通常由大脑、记忆、工具、规划四大核心模块构成,共同协作完成复杂任务 。
- 大模型(大脑):LLM 负责逻辑推理、任务拆解、决策(GPT、通义千问、Llama、Qwen 等),作为核心中枢,相当于系统的"总指挥"。
- 记忆模块(Memory)
- 短时记忆:单次会话上下文
- 长时记忆:向量库RAG 持久存储历史知识、过往任务记录
- 工具调用(Tools/Function Call):联网搜索、数据库查询、接口、代码执行、第三方 API、爬虫、Excel 处理等
- 规划器(Planner):复杂任务拆分(经典:ReAct、CoT、AutoGPT 思路)
工作原理流程
用户发一句指令 → Agent 自动走完下面 6 步:
1. 理解指令(Understand)
Agent 先读懂你要干什么:
- 查知识?
- 做计算?
- 调用接口?
- 多步骤任务?
2. 规划任务(Plan)
把复杂任务拆成步骤:例:现在几点?算 10+20→ Agent 拆成:
- 获取时间
- 计算加法
3. 决策:用知识 RAG / 用工具 Tool
- 需要固定知识 / 文档 → 走 RAG
- 需要实时数据 / 操作 → 走 Function-Call
4. 调用工具 / 检索知识(Act)
Agent 自动:
- 选择工具
- 组装参数
- 调用你的 Java 方法
- 获取返回结果
5. 整理结果(Reason)
把工具返回的原始数据,整理成自然语言回答。
6. 记忆上下文(Memory)
把这次对话存起来,下次继续聊。

三、主流经典架构
- ReAct:推理 + 行动,边思考边调用工具(最轻量化、工业常用)
- AutoGPT:自主循环执行、自我反思、无限迭代任务
- Multi-Agent 多智能体:多个 Agent 分工协作(如一个负责数据分析、一个负责写代码、一个负责文档整理)
- MCP(Model Context Protocol):统一 Agent 工具调用协议, Java+LangChain4j 常用
Agent 核心必懂概念
1. 基础概念
- Agent(智能体):能自主思考、规划、调用工具、完成任务的 AI
- LLM(大语言模型):Agent 的大脑,负责推理
- Tool(工具):Agent 能调用的接口 / 函数(查库、发请求、操作业务)
- Memory(记忆):记住历史对话、任务记录、用户偏好
- Planning(规划):把复杂任务拆成多步
- Reasoning(推理):判断 "该做什么、先做什么"
- Action(行动):调用工具执行操作
- Reflection(反思):检查结果对不对,错了重做
- RAG:给 Agent 提供外部私有知识
- Function-Call:让 Agent 调用业务接口的能力
2. 进阶概念
- Tool-Call:工具调用(Function-Call 升级版)
- MCP:统一工具调用协议(2025 最火)
- Multi-Agent:多个智能体分工协作
- Role(角色):给 Agent 设定身份(分析师、操作员、审核员)
- Chain(链):多步骤执行流水线
- Embedding:把文本转成向量,用于 RAG
- Vector DB:向量数据库(存知识库)
- Auto Execution:自主循环执行
- Guardrails:安全护栏(防止乱调用、越权)
- State(状态):任务执行状态机
四、现实应用场景
智能体已落地于多个领域,从简单任务到复杂协作均有覆盖,未来将向多智能体协作发展 。9
- 办公自动化:自动整理邮件、生成报告、管理日程,提升工作效率 。
- 客户服务:智能客服处理退换货、查询订单,提供 24 小时响应 。
- 代码开发:AI 编程助手辅助写代码、调试程序,如 GitHub Copilot。
- 智能家居:根据习惯自动调节灯光、空调,实现个性化服务 。
五、Agent和RAG、Function-Call、MCP关系
RAG 负责 "给知识",Function-Call 负责 "动手做事",MCP 负责 "统一接口标准",Agent 是把它们全部整合起来的 "总指挥大脑"。
1. Agent = 总指挥 / 大脑
- 它的任务:理解目标 → 拆解步骤 → 做决策 → 调用工具 → 完成任务
- 它自己没有知识、不能联网、不能操作系统,必须靠下面三个能力。
2. RAG = 给大脑 "查知识库"
RAG = 检索增强生成
- 作用:让 Agent 拥有外部知识(文档、合同、报表、业务数据)
- 场景:
- 问 "今天上海天气如何?"
- Agent 不会瞎编,而是去知识库检索 → 再回答
- 关系 :**RAG 是 Agent 的 "知识来源"**没有 RAG,Agent 只会胡说八道。
3. Function-Call = 让大脑 "动手操作"
Function-Call = 函数调用 / 工具调用
- 作用:让 Agent 能调用你的系统接口、数据库、第三方服务
- 场景:
- "帮我查库存"
- Agent 调用
getStock()接口 - "帮我创建单据"
- Agent 调用
createInOrder()
- 关系 :**Function-Call 是 Agent 的 "手脚"**没有它,Agent 只能聊天,不能干活。
4. MCP = 统一工具调用的 "标准协议"
MCP (Model Context Protocol)
- 作用:给 Function-Call 做标准化
- 以前:每家工具调用格式不一样(OpenAI、通义、Anthropic 各不相同)
- 现在:MCP 让所有大模型、所有工具、所有系统都用同一套协议通信
- 关系 :MCP 是 Function-Call 的升级版、通用版、行业标准
它们是从上到下的层级关系:
- Agent(大脑)↓ 指挥
- RAG(查知识) + Function-Call(操作工具)↓ 统一规范
- MCP(协议标准)
用现实生活比喻
- Agent = 老板
- RAG = 公司文件柜(查资料)
- Function-Call = 员工(执行操作)
- MCP = 统一工作流程规范
Agent 是大脑, RAG 给知识, Function-Call 动手脚, MCP 统一标准。
总结
- Agent:总指挥,负责思考和规划
- RAG :提供外部知识库
- Function-Call :提供执行能力
- MCP :统一工具调用协议
六、Java应用Agent
(一)Java Agent 开发 3 大主流框架
1. LangChain4j(最主流、最成熟、企业首选)
- 支持所有大模型
- 自动 Function-Call
- 内置 RAG、Memory、Agent
- SpringBoot 无缝集成就在用这个。
2. Spring AI(Spring 官方)
- 轻量、简单
- 适合 Spring 生态
3. Dify Java SDK / FastGPT Java
- 低代码平台 + Java 后端对接
结论:企业开发 95% 用 LangChain4j。
(二)Java Agent 最核心 4 个能力(全部能写代码)
1. 让 AI 调用你的 Java 接口(Function-Call)
就是给方法加个 @Tool,AI 就能自动调用。
java
@Tool("查询库存")
public String getStock(String sku) {
return "库存100";
}
2. 给 AI 接入私有知识库(RAG)
上传文档 → 向量化 → AI 检索回答Java 向量库:
- Redis
- Milvus
- InMemory(开发用)
3. 让 AI 记住上下文(Memory 记忆)
自动记住历史对话。
java
ChatMemory memory = MessageWindowChatMemory.withMaxMessages(10);
4. 让 AI 自主规划任务(Agent 调度)
AI 自己判断:
- 查知识 → 走 RAG
- 查数据 → 走接口
- 多步骤 → 自动规划
(三)Java Agent 开发标准模板(万能 5 步)
你以后所有 Java Agent 都这么写:
1)加依赖
xml
XML
langchain4j-spring-boot-starter
2)配大模型
yaml
XML
langchain4j:
open-ai:
api-key: xxx
3)写工具(你的业务接口)
java
@Tool
public String doSomething() {}
4)创建 Agent
java
Agent agent = DefaultAgent.builder()
.model(model)
.memory(memory)
.tools(tools)
.build();
5)调用
java
agent.execute("帮我查库存");
(四)SpringBoot + LangChain4j
实现:Agent + RAG + FunctionCall + MCP 全套架构
1、pom.xml 依赖
xml
XML
<dependencies>
<!-- SpringBoot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- LangChain4j(Java Agent开发神器)-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring-boot-starter</artifactId>
<version>0.32.0</version>
</dependency>
<!-- 大模型(通义/OpenAI/豆包任选)-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>0.32.0</version>
</dependency>
</dependencies>
2、application.yml 配置
yaml
XML
langchain4j:
open-ai:
api-key: 你的大模型KEY
model-name: gpt-3.5-turbo
3、核心代码
【1】工具类(Function-Call 手脚)
java
import dev.langchain4j.agent.tool.Tool;
import org.springframework.stereotype.Component;
/**
* Function-Call 工具:WMS仓储接口(Agent可直接调用)
*/
@Component
public class GoodTools {
// 工具:查询库存
@Tool("查询指定SKU的实时库存,参数:sku商品编码")
public String getStock(String sku) {
// 真实场景:调用DB/Good接口
return "SKU:" + sku + " 当前库存=100件,库位=A01";
}
// 工具:创建入库单
@Tool("创建入库单,参数:sku、数量")
public String createInOrder(String sku, int qty) {
return "入库单创建成功:SKU=" + sku + ",数量=" + qty;
}
}
【2】RAG 知识库(知识来源)
java
import dev.langchain4j.data.document.Document;
import dev.langchain4j.data.document.loader.FileSystemDocumentLoader;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import static dev.langchain4j.data.document.splitter.DocumentSplitters.recursive;
/**
* RAG 检索增强:加载业务知识库
*/
@Configuration
public class RagConfig {
@Bean
public EmbeddingStore<TextSegment> embeddingStore() {
// 内存向量库(生产用Milvus/Redis)
EmbeddingStore<TextSegment> embeddingStore = new InMemoryEmbeddingStore<>();
// 加载商品规则文档(RAG知识)
Document doc = FileSystemDocumentLoader.loadDocument("商品管理制度.txt");
// 分段存入向量库
embeddingStore.addAll(null, recursive(1000, 100).split(doc));
return embeddingStore;
}
}
【3】Agent 大脑(总指挥)
java
import dev.langchain4j.agent.Agent;
import dev.langchain4j.agent.DefaultAgent;
import dev.langchain4j.memory.ChatMemory;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.rag.RetrievalAugmentor;
import dev.langchain4j.rag.DefaultRetrievalAugmentor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Agent 核心配置:整合 LLM + RAG + FunctionCall
*/
@Configuration
public class AgentConfig {
@Bean
public Agent agent(ChatLanguageModel model,
WmsTools tools,
EmbeddingStore<TextSegment> embeddingStore) {
// 记忆
ChatMemory memory = MessageWindowChatMemory.withMaxMessages(10);
// RAG增强
RetrievalAugmentor rag = DefaultRetrievalAugmentor.builder()
.embeddingStore(embeddingStore).build();
// MCP协议:LangChain4j自动实现MCP标准化工具调用
return DefaultAgent.builder()
.chatLanguageModel(model) // LLM大脑
.chatMemory(memory) // 记忆
.tools(tools) // FunctionCall工具
.retrievalAugmentor(rag) // RAG知识
.build();
}
}
【4】测试接口
java
import dev.langchain4j.agent.Agent;
import dev.langchain4j.data.message.UserMessage;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AgentController {
private final Agent agent;
public AgentController(Agent agent) {
this.agent = agent;
}
// 测试:一句话指挥Agent
@GetMapping("/agent")
public String agent(@RequestParam String query) {
return agent.execute(UserMessage.from(query)).content().text();
}
}
4、运行测试(效果演示)
访问接口:
http://localhost:8080/agent?query=帮我查一下A001库存,再创建10件入库单
返回结果:
1. 库存查询结果:SKU:A001 当前库存=100件,库位=A01
2. 入库单创建成功:SKU=A001,数量=10
已完成全部操作!
5、它们的关系在代码里长这样
- Agent :
DefaultAgent总指挥 - RAG :
RetrievalAugmentor查知识库 - Function-Call :
GoodTools+@Tool动手操作 - MCP :LangChain4j 自动实现统一协议,不用手写