墨风如雪博客

  • 源码小店
  • 导航站
  • 登录
  • java
  • 资源分享
让AI使用变得如此简单
  1. 首页
  2. AI
  3. 正文

Spring AI生态再进化:DeepSeek大模型整合最佳实践

2025年 3月 13日 117点热度 0人点赞 0条评论

前言

DeepSeek AI 提供了开源的 DeepSeek V3 模型,该模型以其前沿的推理和问题解决能力而闻名。通过将这个强大的 AI 模型集成到 Spring Boot 应用程序中,开发人员可以轻松地利用先进的 AI 驱动功能。Spring AI 通过重用现有的 OpenAI 客户端来简化与 DeepSeek 的集成,使您能够使用熟悉的配置模式连接到 DeepSeek 的 API。在本文中,我们将逐步介绍将 DeepSeek 与 Spring Boot 集成的过程,涵盖先决条件、依赖项、配置和实际用法。

iShot_2025-03-13_20.02.56

一、环境准备与技术选型

1.1 开发环境要求

  • JDK 17+
  • Maven 3.6+ / Gradle 7.x
  • Spring Boot 3.2+
  • IDE(推荐 IntelliJ IDEA)

1.2 关键技术组件

组件 版本 作用
Spring AI 1.0+ AI 集成框架
DeepSeek Chat API v3 大模型服务接口
Lombok 1.18+ 简化代码工具

二、项目初始化与配置

2.1 创建 Spring Boot 项目

通过 Spring Initializr 创建项目时选择:

  • Spring Web
  • Lombok
  • Spring AI (OpenAI)
5d6deb708cb05a3e5921cdbd2a7a4d97

2.2 添加依赖管理

    <dependencies>
       <dependency>
         <groupId>org.springframework.ai</groupId>
         <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
       </dependency>
    </dependencies>

三、DeepSeek 服务配置

3.1 获取 API 密钥

  1. 访问 DeepSeek 控制台
  2. 创建新应用
  3. 在「API 密钥」页面生成密钥

3.2 配置 application.properties

# DeepSeek API 密钥
spring.ai.openai.api-key=<您的_DEEPSEEK_API_密钥>

# DeepSeek 基础 URL
spring.ai.openai.base-url=https://api.deepseek.com

# DeepSeek 模型
spring.ai.openai.chat.options.model=deepseek-chat

# 可选:调整温度以控制响应创造力(0.0 到 1.0)
spring.ai.openai.chat.options.temperature=0.7

# 禁用嵌入(DeepSeek API 不支持)
spring.ai.openai.embedding.enabled=false

3.3 环境变量配置(可选)

# Windows
setx SPRING_AI_OPENAI_API_KEY=<您的_DEEPSEEK_API_密钥>
setx SPRING_AI_OPENAI_BASE_URL=https://api.deepseek.com
setx SPRING_AI_OPENAI_CHAT_MODEL=deepseek-chat

# Linux/macOS
export SPRING_AI_OPENAI_API_KEY=<您的_DEEPSEEK_API_密钥>
export SPRING_AI_OPENAI_BASE_URL=https://api.deepseek.com
export SPRING_AI_OPENAI_CHAT_MODEL=deepseek-chat

四、核心功能实现

4.1 基础对话服务

import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;

@RestController
public class ChatController {

    private final OpenAiChatModel chatModel;

    @Autowired
    public ChatController(OpenAiChatModel chatModel) {
        this.chatModel = chatModel;
    }

    @GetMapping("/ai/generate")
    public Map<String, String> generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        String response = this.chatModel.call(message);
        return Map.of("generation", response);
    }
}
  • 说明:generate 端点接受一个 message 参数(默认为 "Tell me a joke"),并返回由 DeepSeek 生成的响应。OpenAiChatModel 在后台处理 API 调用。

4.2 基础对话服务

启动您的 Spring Boot 应用程序,并使用 curl 或浏览器等工具测试端点:

curl "http://localhost:8080/ai/generate?message=What%20is%20the%20meaning%20of%20life?"

您应该会收到类似于以下内容的 JSON 响应:

{
    "generation": "生命的意义?根据 DeepSeek 的说法,它是 42——或者至少在我们弄清楚之前的一个好笑话!"
}

五、高级功能扩展

5.1 您可以在运行时为特定请求覆盖默认的聊天选项(例如,模型或温度)。以下是一个示例:

import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.openai.OpenAiChatOptions;

ChatResponse response = chatModel.call(
    new Prompt(
        "Generate the names of 5 famous pirates.",
        OpenAiChatOptions.builder()
            .model("deepseek-chat")
            .temperature(0.4) // 较低的温度以获得更集中的响应
            .build()
    )
);
  • 说明:OpenAiChatOptions 类允许您按请求微调参数,例如 temperature(控制随机性)或 model,从而覆盖 application.properties 中设置的默认值。

5.2 对话历史管理

public class ChatHistoryManager {
    private static final int MAX_HISTORY = 10;
    private final Deque<Message> history = new ArrayDeque<>();

    public void addMessage(Message message) {
        if (history.size() >= MAX_HISTORY) {
            history.removeFirst();
        }
        history.addLast(message);
    }

    public List<Message> getContext() {
        return new ArrayList<>(history);
    }
}

六、生产环境注意事项

6.1 性能优化建议

  1. 启用响应缓存
  2. 配置合理的超时设置
    spring:
    ai:
    openai:
      chat:
        options:
          timeout: 30s

6.2 异常处理

@ControllerAdvice
public class AiExceptionHandler {

    @ExceptionHandler(OpenAiApiException.class)
    public ResponseEntity<ErrorResponse> handleAiException(OpenAiApiException ex) {
        ErrorResponse error = new ErrorResponse(
            "AI_SERVICE_ERROR",
            ex.getMessage(),
            Instant.now()
        );
        return new ResponseEntity<>(error, HttpStatus.SERVICE_UNAVAILABLE);
    }
}

七、扩展阅读

  1. Spring AI 官方文档
  2. DeepSeek API 文档
  3. LangChain 集成方案
  4. 大模型性能优化白皮书

如果你也对最新的AI信息感兴趣或者有疑问 都可以扫描下面的二维码加入我的大家庭 第一时间分享最新AI资讯、工具、教程、文档 欢迎你的加入!!!😉😉😉

wx
  • 我的博客:https://blog.worldcodeing.com/
  • 我的导航站:https://nav.worldcodeing.com/
  • 源码小站:https://www.worldcodeing.com/
本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: java spring spring boot
最后更新:2025年 3月 13日

墨风如雪

一个热爱生活,热爱分享的程序员

打赏 点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

墨风如雪

一个热爱生活,热爱分享的程序员

最新 热点 随机
最新 热点 随机
小红书AI新里程碑:dots.llm1,中文MoE的“人文”突破! 告别机械感!OpenAudio S1让AI声音活起来 Sora触手可及!微软必应AI视频生成器,全民创作时代来临? 阿里WebAgent开源:引领自主搜索新纪元 重磅炸弹!字节跳动开源BAGEL:70亿参数,统一多模态理解与生成,AI“全能王”诞生记! 小米MiMo-VL:7B参数,怎么就成了多模态界的“越级打怪王”?
AI圈炸锅了!Mistral Medium 3:性能 SOTA,成本打骨折,企业玩家的新宠?字节终于开源“扣子”同款引擎了!FlowGram:AI 时代的可视化工作流利器告别“微信黑箱”!Chatlog:让你的聊天记录也能拥有“AI大脑”!字节跳动 Seed-Coder-8B:不靠人工洗数据,这80亿参数的小模型如何写出顶尖代码?85倍速的视觉革命:苹果发布 FastVLM,让你的 iPhone ‘看图说话’,快到飞起!告别AI视频“变脸怪”!腾讯混元Hunyuan Custom重磅开源,主体一致性“王炸”来了!
告别机械感!OpenAudio S1让AI声音活起来 解锁 AI 生产力:Prompt-Optimizer 如何成为你的提示词神器 docker-compose使用详解 java 消息队列框架RocketMQ的(超详细总结) SpringBoot四大核心组件详解 Llama 4:参数屠榜还是数据注水?AI 圈的最新‘瓜’熟了没?
标签聚合
动态规划 java 教程 设计模式 deepseek AI 算法 spring

COPYRIGHT © 2023 墨风如雪博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

免责声明 - 隐私政策