AI - Agent智能体

一、基础定义

**智能体(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 拆成:

  1. 获取时间
  2. 计算加法

3. 决策:用知识 RAG / 用工具 Tool

  • 需要固定知识 / 文档 → 走 RAG
  • 需要实时数据 / 操作 → 走 Function-Call

4. 调用工具 / 检索知识(Act)

Agent 自动:

  • 选择工具
  • 组装参数
  • 调用你的 Java 方法
  • 获取返回结果

5. 整理结果(Reason)

把工具返回的原始数据,整理成自然语言回答。

6. 记忆上下文(Memory)

把这次对话存起来,下次继续聊。

三、主流经典架构

  1. ReAct:推理 + 行动,边思考边调用工具(最轻量化、工业常用)
  2. AutoGPT:自主循环执行、自我反思、无限迭代任务
  3. Multi-Agent 多智能体:多个 Agent 分工协作(如一个负责数据分析、一个负责写代码、一个负责文档整理)
  4. MCP(Model Context Protocol):统一 Agent 工具调用协议, Java+LangChain4j 常用

Agent 核心必懂概念

1. 基础概念

  1. Agent(智能体):能自主思考、规划、调用工具、完成任务的 AI
  2. LLM(大语言模型):Agent 的大脑,负责推理
  3. Tool(工具):Agent 能调用的接口 / 函数(查库、发请求、操作业务)
  4. Memory(记忆):记住历史对话、任务记录、用户偏好
  5. Planning(规划):把复杂任务拆成多步
  6. Reasoning(推理):判断 "该做什么、先做什么"
  7. Action(行动):调用工具执行操作
  8. Reflection(反思):检查结果对不对,错了重做
  9. RAG:给 Agent 提供外部私有知识
  10. Function-Call:让 Agent 调用业务接口的能力

2. 进阶概念

  1. Tool-Call:工具调用(Function-Call 升级版)
  2. MCP:统一工具调用协议(2025 最火)
  3. Multi-Agent:多个智能体分工协作
  4. Role(角色):给 Agent 设定身份(分析师、操作员、审核员)
  5. Chain(链):多步骤执行流水线
  6. Embedding:把文本转成向量,用于 RAG
  7. Vector DB:向量数据库(存知识库)
  8. Auto Execution:自主循环执行
  9. Guardrails:安全护栏(防止乱调用、越权)
  10. 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 的升级版、通用版、行业标准

它们是从上到下的层级关系:

  1. Agent(大脑)↓ 指挥
  2. RAG(查知识) + Function-Call(操作工具)↓ 统一规范
  3. 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、它们的关系在代码里长这样

  • AgentDefaultAgent 总指挥
  • RAGRetrievalAugmentor 查知识库
  • Function-CallGoodTools + @Tool 动手操作
  • MCP :LangChain4j 自动实现统一协议,不用手写
相关推荐
江夏尧1 小时前
Peri Code: OpenAI 兼容中的不兼容
agent
jinglong.zha1 小时前
AI视频全流程实战:广告/动画/短剧都适用,解决角色一致性+后期合成难题
人工智能·ai·音视频·光照贴图·叙事照片
付玉祥1 小时前
Agent 系统的启动流程:从配置到运行时
agent
装不满的克莱因瓶1 小时前
掌握空间注意力 STN 模型结构——让神经网络学会自动“看准位置”
人工智能·python·深度学习·神经网络·机器学习·ai
恋恋风尘hhh2 小时前
从 Function Calling 到 MCP:Agent 工具调用的协议演进与架构实践
ai·agent
HIT_Weston2 小时前
112、【Agent】【OpenCode】Skill 工具提示词
人工智能·agent·opencode
HIT_Weston2 小时前
111、【Agent】【OpenCode】todowrite 工具提示词(完结)
人工智能·agent·opencode
Artech2 小时前
[MAF预定义ChatClient中间件-07]PerServiceCallChatHistoryPersistingChatClient——基于ReAct循环的一步一存档
ai·agent·agent管道