1. 大模型应用演进的三个阶段
作为一名长期从事AI应用开发的工程师,我亲历了大模型技术从最初的简单问答到如今复杂多Agent协作的演进过程。最近Spring AI Alibaba框架的Multi-agent支持让我重新审视了这一演进路径,下面我将结合实战经验,详细解析这三个关键阶段。
1.1 第一阶段:基础组件构建
在这个阶段,我们主要关注如何让大模型完成单一、明确的任务。就像教一个实习生完成标准化工作,我们需要明确告诉它具体做什么。
典型应用场景包括:
- 代码生成:快速产出样板代码。例如用特定提示词生成Spring Boot控制器模板
- 技术问答:构建企业内部知识库机器人。我们曾用约50个精选QA对搭建了IDE插件答疑系统
- 文本处理:电商评论自动分类。通过设计合适的prompt,准确率能达到85%以上
这个阶段的关键特征是:
- 任务边界清晰明确
- 输入输出格式固定
- 不需要复杂的状态管理
- 错误处理简单直接
提示:在此阶段建议建立标准的prompt模板库,我们团队维护的模板目前已有200+个分类,新项目开发效率提升40%
1.2 第二阶段:工作流编排
当单一任务无法满足需求时,就需要将多个任务串联起来。这就像把多个实习生组织成一个流水线,每个人只负责一个环节。
典型架构如下:
code复制用户输入 → 意图识别 → 数据查询 → 结果生成 → 格式校验 → 输出
我们为银行开发的信用卡审批系统就采用这种模式:
- 解析客户申请材料(PDF/图片)
- 提取关键字段(收入、负债等)
- 调用风控模型评分
- 生成审批意见
但这种架构存在明显局限:
- 流程僵化:新增审批环节需要修改整个流程
- 错误传导:任一环节失败都会导致流程中断
- 缺乏应变:无法根据中间结果动态调整
1.3 第三阶段:自主Agent系统
这是当前最前沿的应用形态,Agent具备自主决策能力,就像经验丰富的业务专家。关键组件包括:
| 组件 | 作用 | 实现要点 |
|---|---|---|
| LLM核心 | 决策大脑 | 模型选型、提示工程 |
| 记忆系统 | 状态保持 | 短期/长期记忆分离 |
| 工具集 | 环境交互 | 标准化接口设计 |
| 规划器 | 任务分解 | 动态计划生成 |
我们最近重构的智能客服系统就采用这种架构:
- 接待Agent判断用户意图
- 根据问题类型路由到专业Agent
- 各Agent可自主调用知识库、工单系统等工具
- 最终由协调Agent汇总结果
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. React模式深度解析
React模式是构建自主Agent的基础范式,其核心在于"思考-行动-观察"的循环机制。下面结合Spring AI Alibaba的实现进行详解。
2.1 核心执行流程

-
推理阶段:
- 分析当前上下文
- 评估可用工具
- 决定下一步行动
- 我们添加了置信度评分机制,低于阈值时要求人工确认
-
行动阶段:
- 执行工具调用
- 处理结构化数据
- 我们为每个工具设计了标准化错误码
-
观察阶段:
- 解析工具返回
- 评估完成度
- 我们引入了结果质量评估模块
2.2 Spring AI Alibaba实现方案
框架提供的ReactAgent构建器非常简洁:
java复制ReactAgent agent = ReactAgent.builder()
.name("weatherAgent")
.model(chatModel)
.systemPrompt("你是一个天气查询助手")
.tools(weatherTool, locationTool)
.interceptors(new RateLimiter())
.hooks(new AuditLogger())
.saver(new RedisSaver())
.build();
关键组件说明:
工具集成:
java复制public interface WeatherTool {
@ToolFunction
WeatherResult getWeather(@ToolParam String city);
}
// 注册为ToolCallback
ToolCallback tool = FunctionToolCallback.from(weatherTool);
记忆管理:
- 短期记忆:基于对话ID的Redis存储
- 长期记忆:用户画像存储于MongoDB
扩展机制:
java复制// 调用日志拦截器
public class AuditInterceptor implements AgentInterceptor {
@Override
public AgentResponse intercept(AgentRequest request) {
log.info("调用记录:{}", request);
return chain.proceed(request);
}
}
2.3 实战经验分享
消息历史管理:
我们采用分层存储策略:
- 最近3轮对话完整保存
- 历史对话摘要存储
- 关键信息提取为结构化数据
工具设计原则:
- 单一职责:每个工具只做一件事
- 幂等设计:重复调用结果一致
- 超时控制:默认3秒超时
- 熔断机制:错误率超5%自动熔断
错误处理:
java复制try {
return tool.execute(input);
} catch (ToolException e) {
// 工具已知错误
return "ERROR_" + e.getCode();
} catch (Exception e) {
// 系统异常
metrics.logError(e);
throw new AgentException("工具执行失败");
}
3. Multi-agent系统实现
当单个Agent无法胜任复杂任务时,就需要Multi-agent系统。Spring AI Alibaba提供了三种协作模式。
3.1 协作模式对比
| 模式 | 特点 | 适用场景 | 性能影响 |
|---|---|---|---|
| 工具调用 | 主从架构 | 简单任务链 | 低 |
| 控制移交 | 串行执行 | 分阶段任务 | 中 |
| 并行协作 | 团队协作 | 独立子任务 | 高 |
3.2 顺序执行模式
典型应用:电商订单处理
java复制SequentialAgent.builder()
.name("orderProcessor")
.subAgents(validationAgent, paymentAgent, inventoryAgent)
.build();
执行流程:
- 验证订单有效性
- 处理支付
- 扣减库存
- 任一环节失败则终止
3.3 并行执行模式
典型应用:旅游规划
java复制ParallelAgent.builder()
.name("travelPlanner")
.subAgents(hotelAgent, flightAgent, attractionAgent)
.mergeStrategy(new TravelMergeStrategy())
.build();
关键技术点:
- 超时控制(默认5秒)
- 部分失败处理
- 结果聚合算法
3.4 自定义FlowAgent
对于复杂业务流程,可以使用底层Graph框架自定义:
java复制StateGraph graph = new StateGraph();
graph.addNode("plan", planningNode);
graph.addNode("execute", executionNode);
graph.addEdge("plan", "execute");
FlowAgent.builder()
.graph(graph)
.compileConfig(CompileConfig.builder()
.timeout(30_000)
.build())
.build();
我们实现的客户服务流程包含:
- 意图识别节点
- 业务分流节点
- 并行处理节点组
- 结果审核节点
4. Plan-Execute模式实战
这是最复杂的Multi-agent应用模式,下面通过完整案例演示实现过程。
4.1 业务场景:智能旅行顾问
用户输入:"我想下周去杭州,预算5000元,喜欢文化景点"
预期输出:
- 行程计划(3天2晚)
- 酒店推荐
- 交通方案
- 景点门票建议
4.2 架构设计

4.3 核心实现
PlanningAgent:
java复制ReactAgent planningAgent = ReactAgent.builder()
.name("planner")
.model(chatModel)
.systemPrompt("你是一个旅行规划专家")
.tools(new PlanningTool())
.build();
PlanningTool:
java复制public class PlanningTool {
@ToolFunction
public Plan generatePlan(
@ToolParam String destination,
@ToolParam String duration,
@ToolParam String budget) {
// 调用大模型生成计划
String plan = llm.generate("基于以下条件生成旅行计划...");
// 解析为结构化数据
return parsePlan(plan);
}
}
ExecutionNode:
java复制public class ExecutionNode implements NodeAction {
@Override
public Map<String, Object> apply(OverAllState state) {
Plan plan = (Plan)state.get("plan");
List<StepResult> results = new ArrayList<>();
for (Plan.Step step : plan.getSteps()) {
ReactAgent agent = agentMap.get(step.getAgentType());
String output = agent.execute(step.getInput());
results.add(new StepResult(step, output));
}
return Map.of("results", results);
}
}
4.4 上下文传递
我们设计了上下文总线来共享数据:
java复制public class ContextBus {
private Map<String, Object> data = new ConcurrentHashMap<>();
public void put(String key, Object value) {
data.put(key, value);
}
public <T> T get(String key) {
return (T)data.get(key);
}
}
// 在Agent间共享
contextBus.put("userPreferences", preferences);
4.5 性能优化技巧
- 预加载:高频工具保持热实例
- 缓存:对稳定数据缓存5分钟
- 超时:设置分级超时(关键步骤3秒,非关键10秒)
- 熔断:错误率超阈值自动降级
- 并行:独立任务尽量并行化
5. 工程实践建议
5.1 技术选型考量
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 手写框架 | 完全可控 | 维护成本高 | 特殊需求 |
| Spring AI | 标准规范 | 灵活性低 | 传统Java项目 |
| Spring AI Alibaba | 功能丰富 | 较新生态 | 复杂Agent系统 |
5.2 调试技巧
-
日志记录:
java复制agentBuilder.interceptors(new LoggingInterceptor()); -
状态检查点:
java复制graphBuilder.checkpoint("after_planning"); -
可视化追踪:

5.3 性能监控指标
我们建议监控这些关键指标:
- 平均响应时间(<3s为佳)
- 工具调用成功率(>99%)
- 循环迭代次数(<5次)
- Token消耗量
- 异常发生率
5.4 团队协作规范
-
Agent契约:
markdown复制## 天气查询Agent - 职责:查询城市天气 - 输入:城市名称(中文) - 输出:JSON格式天气数据 - 错误码:01-参数错误,02-服务不可用 -
代码评审要点:
- 工具是否幂等
- 是否有适当的超时设置
- 错误处理是否完备
- 提示词是否存在注入风险
-
测试策略:
- 单元测试:工具级
- 集成测试:Agent级
- E2E测试:完整流程
- 混沌测试:异常场景
6. 演进趋势展望
从我们的实践来看,大模型应用正在向这些方向发展:
- 专业化:垂直领域专用Agent
- 标准化:Agent间通信协议
- 可视化:编排与监控工具
- 生态化:工具市场共享
对于Java技术栈,特别期待:
- 更好的动态性支持
- 更完善的调试工具链
- 与企业现有系统的深度集成
在实际项目中,我们逐渐形成了这样的技术原则:
- 简单场景用工作流
- 中等复杂度用React单Agent
- 复杂业务用Plan-Execute多Agent
- 避免过度设计
