【Spring Boot + DeepSeek 实战来了!】


完整项目已经放到文末,自行下载使用

DeepSeek 是国内研发的一款大语言模型(LLM),在代码理解和生成方面表现突出,甚至在一些测试中超过了 GPT-4。相比其他模型,它的本地化适配更好,最重要的是,它提供的 API 无需复杂网络环境。

首先应该没人不知道deepseek是什么吧???所以我直入主题,通过今天的学习,我们可以熟练掌握如何使用 Spring Boot 集成 DeepSeek 搭建一个 AI 智能问答服务,让用户可以输入问题,然后调用 DeepSeek API 进行智能回答。

一、查阅Spring官网,了解Spring是如何解决整合AI的

在这里插入图片描述
在这里插入图片描述

Spring Al是一个用于人工智能工程的应用程序框架。它的目标是将Spring生态系统设计原则(如可移植性和模块化设计)应用于人工智能领域,并推广使用POJO作为人工智能领域应用程序的构建块。
Spring Al的核心是解决ai集成的基本挑战:将企业数据和api与A模型连接起来。

(白话文:说白了,Spring Al就是一个Spring官方为了我们更便捷、更简单的去集成不同人工智能模型的框架

二、功能整合

2.1、找到具体开发文档,了解如何整合

在这里插入图片描述
由上图我们得知,Spring AI 目前是通过使用现有的 OpenAI 客户端与 DeepSeek AI 集成的,这里我们简单说下Spring AI和openAI的关系,方便大家知其所以然:

Spring AI 是 Spring 团队推出的用于在 Spring 应用程序中集成人工智能功能的框架,而 OpenAI 是一家知名的人工智能研究和技术公司,他拥有GPT 系列模型:从 GPT-1 到 GPT-4

集成关系
Spring AI 支持集成 OpenAI 的服务和模型。借助 Spring AI 提供的 API 和抽象层,开发者能够在基于 Spring 的项目里轻松地调用 OpenAI 的强大人工智能能力。

开发便利性

Spring AI 为开发者提供了简化的编程模型和统一的接口,使得在 Spring 项目中使用 OpenAI 服务变得更加便捷。具体表现为

简化配置Spring AI 封装了与 OpenAI 服务进行交互所需的复杂配置,开发者只需进行少量的配置,即可快速集成 OpenAI 服务。

统一抽象它提供了统一的抽象层,将不同的 AI 服务提供商(包括 OpenAI)的 API 进行了抽象,使得开发者可以以一致的方式使用不同的 AI 功能,降低了学习成本和开发难度。

(白话文总结:说白了,Spring Al通过简单的配置,就可以实现与OpenAI的交互,使得我们更简单的去访问OpenAI服务,并且SpringAI所提供的api可以实现对不同AI模型的访问)

我们去deepseek官网,查看deepseek是如何描述与其对接的呢?
在这里插入图片描述
到这里,我们就明白了,Spring AI 目前是通过使用现有的 OpenAI 客户端与 DeepSeek AI 集成的。

2.2、整合

2.2.1、技术栈介绍

SpringBoot:用于快速构建 Java 后端服务。
Deepseek:高性能的深度学习推理框架,用于问答模型的推理。
Spring AI:Spring 生态中的 AI 工具包,用于简化 AI 模型的集成。
Postman:用于测试和调用 API 接口。

2.2.1、环境准备

在开始之前,请确保你已经完成以下准备工作:
安装 JDK 17 或更高版本。
安装 Maven:用于构建和管理项目依赖。
安装 Postman:用于测试 API 接口。
准备 Deepseek 模型:确保你已经有一个训练好的问答模型(如 qa_model.ds)。

2.2.3、创建 Spring Boot 项目

过程省略;

2.2.4、引入依赖
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>1.0.0-M5</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
</repositories>

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

需要注意的是:

因为目前 Spring AI 还没有发布正式版,在 Maven 中央仓库中还找不到正式依赖,所以需要再添加 spring-milestones 和 spring-snapshots 仓库。

2.2.5、添加 DeepSeek 配置参数
spring:
  ai:
    openai:
      api-key: "sk-xxxxxx" #读取自己的
      base-url: https://api.deepseek.com
      chat:
        options:
          model: deepseek-chat
          temperature: 0.5

需要注意的是:

前提需要去deepseek官网创建API key,并且需要完成充值(不充值调用接口会报错),具体金额自己看,最小的就行,反正是测试
在这里插入图片描述
在这里插入图片描述

2.2.6、集成 DeepSeek API

上面提到,Spring AI 中的 DeepSeek API 目前还是走的 OpenAI 客户端,所以,要使用 DeepSeek,只需要在 API 中需要注入一个 OpenAiChatModel 客户端实例来发起请求。

参考代码如下:

@RestController
public class ChatController {

    private final OpenAiChatModel chatModel;

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

    @GetMapping("/ai/generate")
    public String generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        return this.chatModel.call(message);
    }

    @GetMapping("/ai/generateStream")
    public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        Prompt prompt = new Prompt(new UserMessage(message));
        return this.chatModel.stream(prompt);
    }
}

普通聊天和流式聊天的区别是:

普通聊天是一次性返回结果,流式聊天是几个字几个字的返回,流式聊天返回的结果需要前端框架进行封装。

这样,我们的 Spring Boot + DeepSeek API 智能问答接口就完成了。

2.2.7、功能测试

启动 Spring Boot 项目后,我们可以通过 Postman 或浏览器访问:

在这里插入图片描述
本文完整示例代码已上传 Gitee:
https://gitee.com/zw_fky/springboot_ai_deepseek.git
赶紧试试吧,感受 AI 的魅力吧!

本篇完结

<think>嗯,用户想了解Spring AI和DeepSeek的集成或应用案例。首先,我需要回忆一下Spring AI的相关知识。Spring AI是一个基于Spring生态的AI集成框架,用来简化大模型应用的开发。而DeepSeek是深度求索公司开发的AI模型,比如他们的DeepSeek-R1-Large-Preview模型。 接下来,用户提到了集成和应用案例。可能需要先说明如何在Spring AI中配置DeepSeek的API,包括添加依赖、配置API密钥和模型参数。然后,举一个具体的代码示例,展示如何调用DeepSeek模型进行对话生成。这部分需要确保代码正确,并且符合Spring Boot的结构。 然后,应用场景方面,可能需要覆盖智能客服、知识问答系统、数据分析增强和内容生成。每个场景需要简要说明如何结合Spring AI和DeepSeek,比如在智能客服中用DeepSeek处理常见问题,复杂情况转人工,引用相关的参考文献中的示例,比如引用[1]提到的AI与人类代理的交接。 还要考虑是否涉及与其他Spring项目的集成,比如Spring LangChain,引用[2]中的实战案例,或者Spring Batch的数据处理流程,引用[3]中的ItemReaders和ItemWriters。这部分可能需要提到如何将DeepSeek集成到LangChain的工作流中,或者使用Spring Batch处理数据后通过DeepSeek进行分析。 另外,用户可能关心性能优化或扩展性,比如如何管理API调用、处理高并发,或者结合Spring的缓存机制提升响应速度。这部分需要给出一些建议,但可能不需要太深入,除非用户有进一步的问题。 最后,生成相关问题,帮助用户深入探索,比如集成步骤、应用场景、LangChain的结合、性能优化以及企业中的最佳实践。这些问题需要覆盖用户可能感兴趣的后续方向。 需要确保回答结构清晰,分步骤说明集成方法,代码示例正确,应用场景具体,引用相关文献自然。同时,避免使用Markdown格式,保持口语化,但最终输出要符合用户指定的格式,使用中文,正确使用LaTeX,添加引用标识。</think>关于Spring AI与DeepSeek的集成和应用,以下是关键信息梳理: ### 一、集成实现路径 1. **依赖配置**:在`pom.xml`中添加Spring AI核心模块与DeepSeek适配器 ```xml <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-deepseek</artifactId> <version>0.8.1</version> </dependency> ``` 2. **API配置**:在`application.yml`中设置访问凭证 ```yaml spring: ai: deepseek: api-key: ${DEEPSEEK_API_KEY} model: deepseek-chat options: temperature: 0.7 maxTokens: 500 ``` 3. **服务调用示例** ```java @RestController public class AIController { private final DeepSeekChatClient chatClient; public AIController(DeepSeekChatClient chatClient) { this.chatClient = chatClient; } @GetMapping("/chat") public String generate(@RequestParam String prompt) { return chatClient.generate(prompt); } } ``` ### 二、典型应用场景 1. **智能客服系统**:通过DeepSeek处理常见咨询问题,复杂场景无缝转接人工坐席[^1] 2. **知识问答引擎**:结合RAG模式实现企业知识库检索增强生成 3. **数据分析增强**:与Spring Batch集成实现数据处理流水线(参考ItemReaders设计模式[^3]) 4. **内容生成平台**:自动生成营销文案、产品描述等结构化内容 ### 三、进阶集成方案 1. **LangChain集成**:通过Spring LangChain4j实现多模型协作工作流[^2] ```java Agent agent = new AgentBuilder() .withMemory(new SimpleMemory()) .withTool(new DeepSeekCalculator()) .build(); ``` 2. **性能优化**: - 使用Spring Caffeine缓存高频请求 - 通过`@Retryable`实现API调用重试机制 - 采用响应式编程处理并发请求 $$T_{response} = \frac{\sum_{i=1}^{n} t_i}{n} + \sigma^2$$ 其中$t_i$表示单个请求响应时间,$\sigma^2$为时间方差 ### 四、注意事项 1. API调用频率限制:默认每分钟60次请求 2. 输入长度限制:单次请求最大16k tokens 3. 多租户支持:通过Spring Security实现租户级访问控制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值