1. 项目概述:Spring AI智能体开发入门
作为一名长期深耕Java生态的技术博主,我见证了Spring框架如何从依赖注入容器成长为如今的全栈开发生态。而Spring AI的推出,标志着Java开发者正式拥有了构建AI应用的原生工具链。这个5分钟快速搭建教程,将带你用最熟悉的Spring Boot技术栈,完成第一个AI智能体的创建。
Spring AI Alibaba是基于Spring AI核心概念的扩展实现,特别针对中文开发场景优化。它把大模型能力封装成类似Spring Data JPA那样的声明式接口,让Java开发者无需深入AI原理就能快速集成智能对话、内容生成等能力。你只需要掌握基础的Spring Boot开发经验,就能跟着本文完成一个具备自然语言处理能力的AI服务端。
提示:本教程默认你已安装JDK 17+和Maven 3.6+,这是Spring AI的最低环境要求。如果尚未配置,建议先通过Oracle官网或Adoptium获取最新LTS版本。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与项目初始化
2.1 创建Spring Boot项目
打开你熟悉的IDE(IntelliJ IDEA或Eclipse),使用Spring Initializr创建新项目。关键依赖选择:
- Spring Web (用于暴露HTTP接口)
- Spring AI Alibaba Starter (核心AI能力)
- Lombok (简化代码)
xml复制<!-- pom.xml 关键依赖示例 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.spring</groupId>
<artifactId>spring-ai-alibaba-spring-boot-starter</artifactId>
<version>0.8.0</version>
</dependency>
</dependencies>
2.2 配置API密钥
在application.yml中添加阿里云灵积平台(通义千问)的配置:
yaml复制spring:
ai:
alibaba:
api-key: your-api-key-here
chat:
options:
model: qwen-plus # 使用通义千问增强版
temperature: 0.7 # 控制生成随机性
重要:API密钥需要到阿里云官网申请,新用户有免费额度。切勿将密钥提交到公开代码库!
3. 核心功能实现
3.1 创建智能体控制器
新建ChatController.java文件,注入ChatClient实现对话功能:
java复制@RestController
@RequiredArgsConstructor
public class ChatController {
private final ChatClient chatClient;
@GetMapping("/chat")
public String generate(@RequestParam String message) {
return chatClient.call(message);
}
}
这就是一个完整AI智能体的最小实现!启动应用后访问http://localhost:8080/chat?message=你好就能获得AI回复。
3.2 进阶功能:带记忆的对话
实际场景需要保持对话上下文,修改控制器:
java复制@PostMapping("/chat/session")
public ChatResponse chatWithMemory(@RequestBody ChatRequest request) {
// 使用Message封装对话历史
List<Message> messages = new ArrayList<>();
messages.add(new Message("user", request.question()));
ChatResponse response = chatClient.call(messages);
messages.add(new Message("assistant", response.content()));
return response;
}
record ChatRequest(String question) {}
record ChatResponse(String content) {}
现在你的智能体已经能记住对话历史,实现连续对话能力。
4. 部署与优化技巧
4.1 性能调优配置
在application.yml中添加这些优化参数:
yaml复制spring:
ai:
alibaba:
chat:
options:
max-tokens: 1024 # 限制响应长度
top-p: 0.9 # 核采样阈值
connection:
timeout: 5000 # 网络超时(ms)
pool-size: 10 # 连接池大小
4.2 异常处理增强
添加全局异常处理器提升健壮性:
java复制@ControllerAdvice
public class AIExceptionHandler {
@ExceptionHandler(AIException.class)
public ResponseEntity<String> handleAIException(AIException ex) {
return ResponseEntity.status(502)
.body("AI服务异常: " + ex.getMessage());
}
}
5. 实战案例扩展
5.1 实现天气查询智能体
结合阿里云市场API,实现多功能智能体:
java复制@GetMapping("/weather")
public String getWeather(@RequestParam String city) {
String prompt = "请用中文回答" + city + "的当前天气,格式为:\n"
+ "城市:{城市}\n温度:{温度}℃\n天气:{天气}";
return chatClient.call(prompt);
}
5.2 文件内容分析功能
添加文件上传端点处理文档:
java复制@PostMapping("/analyze")
public String analyzeFile(@RequestParam MultipartFile file) {
String content = new String(file.getBytes());
return chatClient.call("请总结以下内容要点:\n" + content);
}
6. 常见问题排查
6.1 超时问题解决方案
若遇到请求超时,按以下步骤排查:
- 检查
spring.ai.alibaba.connection.timeout是否足够 - 使用curl测试API端点连通性
- 查看阿里云控制台额度是否耗尽
6.2 中文乱码处理
在application.yml中添加编码配置:
yaml复制server:
servlet:
encoding:
force-response: true
charset: UTF-8
7. 生产环境建议
7.1 安全防护措施
- 添加API访问鉴权:Spring Security或JWT
- 启用请求限流:Resilience4j或Sentinel
- 敏感信息加密:使用Jasypt加密API密钥
7.2 监控与日志
配置Actuator端点监控AI调用:
yaml复制management:
endpoints:
web:
exposure:
include: health,metrics,ai-stats
我在实际项目中发现,合理设置temperature参数(0.6-0.9)能平衡创造性和稳定性。对于客服场景建议调低(0.3-0.5),创意生成则可调高(0.8-1.0)。
