网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > Java >

Spring Boot 整合AI大模型实战:手把手带你接入De

时间:2026-03-23 14:02

人气:

作者:admin

标签:

导读:前言 随着AI大模型的快速普及,越来越多的Java开发者希望将AI能力集成到自己的项目中。本文手把手带你用Spring Boot接入DeepSeek API,实现一个具备AI对话能力的后端服务。 一、环境准备...

前言

随着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>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>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辅助创作。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信