前言
随着AI大模型的快速普及,越来越多的Java开发者希望将AI能力集成到自己的项目中。本文手把手带你用Spring Boot接入DeepSeek API,实现一个具备AI对话能力的后端服务。
一、环境准备
- JDK 17+
- Spring Boot 3.x
- Maven 3.8+
- DeepSeek API Key(到 platform.deepseek.com 免费申请)
二、添加依赖
- <dependency>
- <groupId>org.springframework.boot</groupId>
- spring-boot-starter-web</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- spring-boot-starter-webflux</artifactId>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- jackson-databind</artifactId>
- </dependency>
复制代码 三、配置 application.yml
- deepseek:
- api-key: sk-xxxxxxxxxxxxxxxx
- base-url: https://api.deepseek.com
- model: deepseek-chat
- max-tokens: 2048
复制代码 四、创建配置类
- @Configuration
- @ConfigurationProperties(prefix = "deepseek")
- @Data
- public class DeepSeekConfig {
- private String apiKey;
- private String baseUrl;
- private String model;
- private Integer maxTokens;
- @Bean
- public WebClient deepSeekWebClient() {
- return WebClient.builder()
- .baseUrl(baseUrl)
- .defaultHeader("Authorization", "Bearer " + apiKey)
- .defaultHeader("Content-Type", "application/json")
- .build();
- }
- }
复制代码 五、定义请求/响应实体
- // 请求体
- @Data
- public class ChatRequest {
- private String model;
- private List<Message> messages;
- @JsonProperty("max_tokens")
- private Integer maxTokens;
- private Boolean stream = false;
- @Data
- @AllArgsConstructor
- public static class Message {
- private String role; // system / user / assistant
- private String content;
- }
- }
- // 响应体
- @Data
- public class ChatResponse {
- private String id;
- private List<Choice> choices;
- @Data
- public static class Choice {
- private Message message;
- }
- @Data
- public static class Message {
- private String role;
- private String content;
- }
- }
复制代码 六、实现Service层
- @Service
- @RequiredArgsConstructor
- public class DeepSeekService {
- private final WebClient deepSeekWebClient;
- private final DeepSeekConfig config;
- public String chat(String userMessage) {
- ChatRequest request = new ChatRequest();
- request.setModel(config.getModel());
- request.setMaxTokens(config.getMaxTokens());
- request.setMessages(List.of(
- new ChatRequest.Message("system", "你是一个专业Java开发助手"),
- new ChatRequest.Message("user", userMessage)
- ));
- ChatResponse response = deepSeekWebClient
- .post()
- .uri("/v1/chat/completions")
- .bodyValue(request)
- .retrieve()
- .bodyToMono(ChatResponse.class)
- .block();
- return response.getChoices().get(0).getMessage().getContent();
- }
- }
复制代码 七、实现Controller层
- @RestController
- @RequestMapping("/api/ai")
- @RequiredArgsConstructor
- public class AiController {
- private final DeepSeekService deepSeekService;
- @PostMapping("/chat")
- public ResponseEntity<String> chat(@RequestBody Map<String, String> body) {
- String message = body.get("message");
- String reply = deepSeekService.chat(message);
- return ResponseEntity.ok(reply);
- }
- }
复制代码 八、测试
- curl -X POST http://localhost:8080/api/ai/chat \
- -H "Content-Type: application/json" \
- -d '{"message": "帮我写一个Spring Boot分页查询的示例"}'
复制代码 总结
通过以上步骤,我们完成了Spring Boot整合DeepSeek API的全流程。后续可以进一步扩展:
- 支持流式输出(SSE)
- 加入对话历史管理
- 集成Redis缓存常用回答
- 接入其他大模型(通义千问、文心一言等)
本文由AI辅助创作。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |