Spring AI集成DeepSeek实战指南(硅基流动平台版)
本文手把手教你通过Spring AI框架集成国产大模型DeepSeek,结合硅基流动平台实现智能对话功能。本方案支持普通对话和流式响应两种模式,完整代码已通过测试,可直接用于生产环境。
一、环境准备
开发工具
- JDK 17+
- Maven 3.9+
- Spring Boot 3.2.x+(推荐3.3.0)
硅基流动平台配置
登录硅基流动官网,
新用户赠送2000万token(约处理1万小时音频)
新用户注册即送14元,而且可以自由充值。
创建API Key
二、项目配置
1. 添加依赖(pom.xml )
<!-- Spring AI核心库 -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>0.8.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- DeepSeek(OpenAI兼容模式) -->
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>
<!-- Web支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2. 配置参数(application.yml )
spring:
ai:
openai:
base-url: ${YOUR_DEEPSEEK_ENDPOINT} # 硅基平台提供的API地址
api-key: sk-xxxxxxxxxxxxxxxxxxxxxxxx # 平台申请的API密钥
chat:
options:
model: deepseek-chat-v3 # 指定模型版本
temperature: 0.7 # 控制生成随机性[0~2]
maxTokens: 1024 # 最大生成长度
三、核心代码实现
1. 普通对话接口
@RestController
public class ChatController {
private final ChatClient chatClient;
public ChatController(ChatClient.Builder builder) {
this.chatClient = builder
.defaultSystem("你是一个专业的智能助手,回答需简洁准确")
.defaultOptions(OpenAiChatOptions.builder()
.withModel("deepseek-chat-v3")
.build())
.build();
}
@GetMapping("/chat")
public String chat(@RequestParam String message) {
return chatClient.call(message);
}
}
- 流式响应接口(SSE协议)
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamChat(@RequestParam String prompt) {
return chatClient.stream()
.user(prompt)
.system("当前时间:" + LocalDateTime.now())
.call()
.map(ChatResponse::getResults)
.flatMapIterable(list -> list)
.map(content -> content.getOutput().getContent());
}
四、接口测试
浏览器访问
普通对话测试
http://localhost:8080/chat?message=用Java实现快速排序
流式响应测试
http://localhost:8080/stream?prompt=解释量子计算原理
五、生产环境注意事项
- API Key安全
- 通过Vault或阿里云KMS管理密钥
- 禁止硬编码到代码中
- 性能优化
- 启用连接池(推荐Apache HttpClient)
- 设置超时时间(建议:connect=5s, read=30s)
- 流式输出实践
- 前端需使用EventSource接收数据
- 服务端启用异步处理(@EnableAsync)
六、扩展功能
通过修改OpenAiChatOptions参数实现进阶功能:
// 示例:带历史会话的对话
OpenAiChatOptions options = OpenAiChatOptions.builder()
.withModel("deepseek-reasoner-r1") // 切换推理模型
.withTopP(0.9) // 核采样阈值
.withFrequencyPenalty(0.5) // 抑制重复内容
.build();