【项目实战】Spring AI集成DeepSeek实战指南(硅基流动平台版)

发布于:2025-03-07 ⋅ 阅读:(19) ⋅ 点赞:(0)

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); 
    }
}
  1. 流式响应接口(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=解释量子计算原理

五、生产环境注意事项

  1. API Key安全
  • 通过Vault或阿里云KMS管理密钥
  • 禁止硬编码到代码中
  1. 性能优化
  • 启用连接池(推荐Apache HttpClient)
  • 设置超时时间(建议:connect=5s, read=30s)
  1. 流式输出实践
  • 前端需使用EventSource接收数据
  • 服务端启用异步处理(@EnableAsync)

六、扩展功能

通过修改OpenAiChatOptions参数实现进阶功能:

// 示例:带历史会话的对话 
OpenAiChatOptions options = OpenAiChatOptions.builder() 
    .withModel("deepseek-reasoner-r1")  // 切换推理模型 
    .withTopP(0.9)                      // 核采样阈值 
    .withFrequencyPenalty(0.5)          // 抑制重复内容 
    .build();