AI Agent的架构演进

在深入具体模式之前,我们先花一分钟理解Agent系统的核心架构。

任何一个成熟的Agent系统,都由以下几个核心模块组成:

image

在这个架构基础上,学术界和工业界总结出了多种设计模式。

从最简单的单体Agent到复杂的多智能体协作,每种模式都有其独特的优势和适用场景。

二、六种核心设计模式详解

模式一:ReAct(Reasoning + Acting)

一句话定位:Agent最基础的“思考-行动-观察”循环,所有复杂模式的基础。

ReAct模式的核心思想是将“推理”和“行动”分离。

Agent先推理当前情况,决定下一步做什么,然后执行行动,观察结果,再继续推理,形成一个闭环。

image

Java代码实现(基于Spring AI Alibaba):

// 创建ReActAgent - 这是最基础的Agent模式
ReactAgent agent = ReactAgent.builder()
    .name("customer_service_agent")
    .model(chatModel)
    .systemPrompt("你是一个专业的客服助手,通过推理和行动解决用户问题")
    .tools(queryOrderTool, checkInventoryTool)  // 注册工具
    .build();

// 同步调用
String response = agent.call("帮我查询订单号12345的状态");
System.out.println(response);

// 流式调用(实现打字机效果)
Flux<String> streamResponse = agent.stream("我想退货,应该怎么操作");
streamResponse.subscribe(System.out::print);

核心组件解析

组件 作用
AgentLlmNode 负责LLM推理调用,生成思考和行动决策
AgentToolNode 执行LLM请求的工具调用
MemorySaver 持久化对话历史,支持会话恢复

优点:结构清晰,易于理解和调试;是构建更复杂Agent的基础模式。

缺点:单次任务需要多次LLM调用,Token消耗较大;缺乏长期任务规划和记忆能力。

适用场景:智能客服、基础问答、需要多步推理但无需长期记忆的任务。

模式二:工具使用(Tool Use)

Tool Use 也是Function Calling。

一句话定位:让Agent“长出手脚”,连接外部世界的能力。

单纯的大模型只有文本生成能力,无法获取实时信息或执行具体操作。

Tool Use模式通过函数调用,让Agent能够查询数据库、调用API、操作文件系统,真正“动手”解决问题。

image

Java代码实现(注解驱动):

// 1. 定义工具类,使用@Tool注解标记可调用方法
@Component
public class OrderTools {
    
    @Tool(description = "查询指定订单的状态")
    public String queryOrder(@P("订单号") String orderId) {
        // 调用数据库或API
        Order order = orderService.findById(orderId);
        return String.format("订单%s状态:%s", orderId, order.getStatus());
    }
    
    @Tool(description = "获取某城市的天气信息")
    public String getWeather(@P("城市名称") String city) {
        return weatherApi.get(city);
    }
    
    @Tool(description = "计算两个数的和")
    public int add(@P("第一个数") int a, @P("第二个数") int b) {
        return a + b;
    }
}

// 2. 将工具注册到Agent
ReactAgent agent = ReactAgent.builder()
    .model(chatModel)
    .tools(new OrderTools())
    .build();

// 3. Agent会自动判断何时调用哪个工具
String result = agent.call("帮我查一下订单ORD-123的物流状态");

原理示意图:

image

优点:极大扩展了Agent能力边界;注解驱动,开发效率高;工具可复用,形成能力库。

缺点:需要为每个工具编写清晰的描述;工具数量增多时LLM可能选错工具。

适用场景:信息查询(天气、股票、订单)、数据操作、系统集成、任何需要“动手”的场景。

模式三:反思(Reflection)

一句话定位:Agent像人类一样“三思而后行”,自我审视并修正错误。

反思模式允许Agent对自己的输出进行批评和修正。它通过多轮迭代来提升输出质量,就像人类写代码后要review一样。

image

Java代码实现(双Agent协作):

public class ReflectionService {
    
    private final ReactAgent executor;
    private final ReactAgent critic;
    
    public ReflectionService(ChatModel chatModel) {
        // 执行Agent:负责生成回答
        this.executor = ReactAgent.builder()
            .name("executor")
            .model(chatModel)
            .systemPrompt("你是一个专业助手,回答用户问题")
            .build();
        
        // 评审Agent:负责检查质量
        this.critic = ReactAgent.builder()
            .name("critic")
            .model(chatModel)
            .systemPrompt(""" 
                你是质量检查专家。检查以下回答的质量,指出错误和不完善之处。
                如果回答完美,回复"PASS"。
                """)
            .build();
    }
    
    public String generateWithReflection(String input, int maxIterations) {
        String currentOutput = null;
        
        for (int i = 0; i < maxIterations; i++) {
            // 1. 执行Agent生成回答
            if (currentOutput == null) {
                currentOutput = executor.call(input);
            } else {
                // 根据反馈改进回答
                currentOutput = executor.call(
                    "请根据以下反馈改进回答:\n" + 
                    "原始问题:" + input + "\n" +
                    "上次回答:" + currentOutput + "\n" +
                    "反馈意见:" + feedback
                );
            }
            
            // 2. 评审Agent检查质量
            String critique = critic.call(
                "请评审以下回答:\n" + currentOutput
            );
            
            // 3. 判断是否通过
            if (critique.contains("PASS") || i == maxIterations - 1) {
                return currentOutput;
            }
            
            feedback = critique;
        }
        
        return currentOutput;
    }
}

优点:显著提升输出质量;可自动发现逻辑错误和事实错误;适合高质量要求的场景。

缺点:需要多次LLM调用,Token消耗大;响应时间显著增加。

适用场景:代码审查、内容润色、学术论文润色、高准确度要求的问答。

模式四:规划(Planning)

一句话定位:将复杂任务分解为可执行的子任务,分步骤完成。

规划模式是应对复杂任务的核心武器。Plan Agent先将大任务拆解成多

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐