引言:AI 原生应用开发的新纪元
在人工智能技术快速发展的今天,如何将 AI 能力无缝集成到企业级 Java 应用中成为了开发者面临的重要挑战。Spring AI Alibaba 作为一款基于 Spring AI 构建的企业级 AI 框架,为 Java 开发者提供了构建 ChatBot、工作流和多智能体应用的完整解决方案。
架构设计:分层解耦的企业级框架
核心架构概览
Spring AI Alibaba 采用分层架构设计,包含应用层、框架核心、工具生态系统、存储与内存管理以及企业集成层。 框架的模块化设计确保了各组件的独立性和可扩展性。
<modules>
<!-- Spring AI Alibaba Modules -->
<module>spring-ai-alibaba-bom</module>
<module>spring-ai-alibaba-mcp</module>
<module>spring-ai-alibaba-core</module>
<module>spring-ai-alibaba-prompt</module>
<module>spring-ai-alibaba-graph</module>
<module>spring-ai-alibaba-nl2sql</module>
<module>spring-ai-alibaba-studio</module>
<module>spring-ai-alibaba-jmanus</module>
<module>spring-ai-alibaba-deepresearch</module>
<!-- Spring AI Alibaba Tool Call Plugins -->
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-common</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-time</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-aliyunaisearch</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-baidusearch</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-baidutranslate</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-baidumap</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-bravesearch</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-dingtalk</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-sensitivefilter</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-amap</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-weather</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-larksuite</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-microsofttranslate</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-jinacrawler</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-firecrawl</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-regex</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-jsonprocessor</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-serpapi</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-githubtoolkit</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-sinanews</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-toutiaonews</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-yuque</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-kuaidi100</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-googletranslate</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-alitranslate</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-youdaotranslate</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-duckduckgo</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-tavilysearch</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-searches</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-tencentmap</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-tushare</module>
<module>community/tool-calls/spring-ai-alibaba-starter-tool-calling-ollamasearchmodel</module>
DashScope 集成层
框架的核心是与阿里云百炼平台的深度集成。DashScope API 提供了丰富的模型选择,包括 Qwen 系列模型,支持不同的上下文长度和应用场景。
public enum ChatModel implements ChatModelDescription {
/**
* The model supports an 8k tokens context, and to ensure normal use and output,
* the API limits user input to 6k tokens.
*/
QWEN_PLUS("qwen-plus"),
/**
* The model supports a context of 32k tokens. To ensure normal use and output,
* the API limits user input to 30k tokens.
*/
QWEN_TURBO("qwen-turbo"),
/**
* The model supports an 8k tokens context, and to ensure normal use and output,
* the API limits user input to 6k tokens.
*/
QWEN_MAX("qwen-max"),
/**
* The model supports a context of 30k tokens. To ensure normal use and output,
* the API limits user input to 28k tokens.
*/
QWEN_MAX_LONGCONTEXT("qwen-max-longcontext"),
/**
* The Qwen3, QwQ (based on Qwen2.5) and DeepSeek-R1 models have powerful
* inference capabilities. The model outputs the thought process first, and then
* the response.
* <a href="https://help.aliyun.com/zh/model-studio/deep-thinking">qwen3</a>
*/
QWQ_PLUS("qwq-plus"),
/**
* The QwQ inference model trained based on the Qwen2.5-32B model greatly improves
* the model inference ability through reinforcement learning. The core indicators
* such as the mathematical code of the model (AIME 24/25, LiveCodeBench) and some
* general indicators (IFEval, LiveBench, etc.) have reached the level of
* DeepSeek-R1 full blood version, and all indicators significantly exceed the
* DeepSeek-R1-Distill-Qwen-32B, which is also based on Qwen2.5-32B.
* <a href="https://help.aliyun.com/zh/model-studio/deep-thinking">qwen3</a>
*/
QWEN_3_32B("qwq-32b"),
/**
* The QWEN-OMNI series models support the input of multiple modalities of data,
* including video, audio, image, text, and output audio and text
* <a href="https://help.aliyun.com/zh/model-studio/qwen-omni">qwen-omni</a>
*/
QWEN_OMNI_TURBO("qwen-omni-turbo"),
/**
* The qwen-vl model can answer based on the pictures you pass in.
* <a href="https://help.aliyun.com/zh/model-studio/vision">qwen-vl</a>
*/
QWEN_VL_MAX("qwen-vl-max"),
// =================== DeepSeek Model =====================
// The third-party models of the Dashscope platform are currently only listed on
// Deepseek, refer: https://help.aliyun.com/zh/model-studio/models for
// more models
DEEPSEEK_R1("deepseek-r1"),
DEEPSEEK_V3("deepseek-v3");
public final String value;
ChatModel(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
@Override
public String getName() {
return this.value;
}
}
public enum ChatModel implements ChatModelDescription {
QWEN_PLUS("qwen-plus"), // 8k tokens 上下文
QWEN_TURBO("qwen-turbo"), // 32k tokens 上下文
QWEN_MAX("qwen-max"), // 8k tokens 上下文
QWEN_MAX_LONGCONTEXT("qwen-max-longcontext"), // 30k tokens 上下文
QWQ_PLUS("qwq-plus"), // 推理能力增强模型
QWEN_VL_MAX("qwen-vl-max") // 多模态视觉模型
}
快速入门:从零到一构建 AI 应用
项目依赖配置
首先,在项目中添加 Spring AI Alibaba 的依赖管理:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-bom</artifactId>
<version>1.0.0.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud.ai</groupId>
<artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
</dependency>
</dependencies>
基础聊天机器人实现 通过简单的配置即可实现一个功能完整的聊天机器人:
@RestController
public class ChatController {
private final ChatClient chatClient;
public ChatController(ChatClient.Builder builder) {
this.chatClient = builder.build();
}
@GetMapping("/chat")
public String chat(String input) {
return this.chatClient.prompt()
.user(input)
.call()
.content();
}
}
Graph 工作流引擎:多智能体协作的核心
StateGraph 设计理念 Spring AI Alibaba Graph 通过 StateGraph、Node、Edge 和 OverAllState 四个核心概念,实现了复杂工作流的声明式定义和执行。
实际应用案例:客户反馈处理系统 以下是一个完整的客户反馈处理工作流实现:
@Configuration
public class WorkflowConfiguration {
@Bean
public StateGraph customerServiceWorkflow(ChatModel chatModel) {
// 初始化 ChatClient
ChatClient chatClient = ChatClient.builder(chatModel)
.defaultAdvisors(new SimpleLoggerAdvisor())
.build();
// 定义全局状态工厂
OverAllStateFactory stateFactory = () -> {
OverAllState state = new OverAllState();
state.registerKeyAndStrategy("input", new ReplaceStrategy());
state.registerKeyAndStrategy("classifier_output", new ReplaceStrategy());
state.registerKeyAndStrategy("solution", new ReplaceStrategy());
return state;
};
// 创建分类节点
QuestionClassifierNode feedbackClassifier = QuestionClassifierNode.builder()
.chatClient(chatClient)
.inputTextKey("input")
.categories(List.of("positive feedback", "negative feedback"))
.classificationInstructions(
List.of("Try to understand the user's feeling when giving feedback."))
.build();
QuestionClassifierNode specificQuestionClassifier = QuestionClassifierNode.builder()
.chatClient(chatClient)
.inputTextKey("input")
.categories(List.of("after-sale service", "transportation",
"product quality", "others"))
.classificationInstructions(List.of(
"What kind of service or help the customer is trying to get?"))
.build();
// 构建工作流图
StateGraph workflow = new StateGraph(stateFactory);
workflow.addNode("feedback_classifier", feedbackClassifier);
workflow.addNode("specific_classifier", specificQuestionClassifier);
workflow.addNode("recording", new RecordingNode());
// 定义条件边
workflow.addConditionalEdges("feedback_classifier",
state -> {
String result = (String) state.get("classifier_output");
return result.contains("positive") ? "recording" : "specific_classifier";
});
workflow.addEdge("specific_classifier", "recording");
workflow.setEntryPoint("feedback_classifier");
workflow.setFinishPoint("recording");
return workflow;
}
}
工作流执行与测试 通过 REST 接口可以轻松测试工作流的执行效果:
# 测试正面反馈
curl "http://localhost:8080/customer/chat?query=This product is excellent, I love it!"
# 返回: Praise, no action taken.
# 测试负面反馈
curl "http://localhost:8080/customer/chat?query=The product broke after one day, very disappointed."
# 返回: product quality
企业级特性:生产就绪的 AI 解决方案
自动配置机制 框架提供了完整的 Spring Boot 自动配置支持,包括 DashScope、内存管理、MCP 集成等多个模块的自动配置。
工具调用生态系统 框架内置了丰富的工具调用插件,涵盖搜索、翻译、爬虫、地图等多个领域:
- 搜索工具:TavilySearch、SerpApi、DuckDuckGo、BraveSearch
- 翻译服务:有道翻译、谷歌翻译、阿里翻译
- 网页爬虫:JinaCrawler、FireCrawl
- 文档处理:YouTube、GitHub、ArXiv、Notion 等多平台文档读取器
可观测性与监控 框架原生支持 OpenTelemetry 格式的链路追踪,可无缝接入 Langfuse、阿里云 ARMS 等可观测平台。
高级应用:JManus 和 DeepResearch
JManus 智能体平台 JManus 不仅是 Manus 的 Java 实现,更是一个智能体开发平台,支持动态 Agent 系统、Plan-Act 模式以及丰富的工具集成。
DeepResearch 深度研究智能体 DeepResearch 基于 Spring AI Alibaba Graph 实现,专门用于深度研究报告生成,集成了网络搜索、爬虫、Python 脚本执行等强大工具。
源码解析:深入理解框架设计
DashScope API 核心实现
框架通过 DashScopeApi 类封装了与百炼平台的所有交互逻辑,支持同步和异步调用模式。 API 响应采用统一的 CommonResponse 结构,确保错误处理的一致性。
模块化依赖管 通过 BOM(Bill of Materials)模块,框架实现了统一的版本管理,确保各模块间的兼容性。
最佳实践与性能优化
配置优化建议
- 模型选择:根据应用场景选择合适的模型,平衡性能和成本
- 上下文管理:合理设置 token 限制,避免超出模型上下文窗口
- 缓存策略:利用 Redis 等缓存技术优化重复请求的响应时间
- 监控告警:配置完善的监控体系,及时发现和解决问题
安全性考虑
- API 密钥管理:使用环境变量或配置中心管理敏感信息
- 输入验证:对用户输入进行严格验证,防止注入攻击
- 访问控制:实施适当的身份认证和授权机制
Notes
本博客基于 Spring AI Alibaba 1.0.0.2 版本的源代码进行分析,涵盖了框架的核心架构、主要功能模块、实际应用案例和源码解析。文章中的代码示例均来自官方代码库,确保了技术内容的准确性和实用性。框架要求 JDK 17+ 版本,并建议配置 spring-milestones Maven 仓库以解决依赖问题。