大家好,我是R哥。

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

更多介绍:DeepSeek 是什么?

前段时间我分享一个《王炸!Spring 宣布接入 DeepSeek!!》

这篇我要分享的是,如何使用 Spring Boot 集成 DeepSeek 搭建一个 AI 智能问答服务,让用户可以输入问题,然后调用 DeepSeek API 进行智能回答。

1、创建 Spring Boot 项目

首先创建一个标准的 Spring Boot 项目,你可以用 Spring Initializr 生成,也可以用 IDEA 等开发工具创建。

Spring Boot 基础就不介绍了,推荐看这个实战项目:

https:///javastacks/spring-boot-best-practice

添加依赖

项目创建完成后,先修改 pom.xml 添加必要的依赖:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId></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></groupId>
        <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    </dependency>
</dependencies>

主要添加 spring-ai-bomspring-ai-openai-spring-boot-starter 依赖,前者可以放在父项目中,后者放在子项目中继承即可。

需要注意的是:

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

添加 DeepSeek 配置参数

然后,在 application.yml 配置 DeepSeek API:

spring:
  ai:
    openai:
      api-key: "sk-xxxxxx" # 安全起见,从系统环境变量读取
      base-url: https://
      chat:
        options:
          model: deepseek-chat
          temperature: 0.5

安全起见,API KEY 可以设置从系统环境变量读取:

export SPRING_AI_OPENAI_API_KEY="sk-xxxxxx" # 真实 API KEY

如果从系统环境变量读取,不要忘记使用 source 命令生效。

聊天配置项解释如下表:

配置参数

说明

spring.ai.openai.api-key

OpenAI API 的密钥,用于身份验证和访问权限。

spring.ai.openai.base-url

OpenAI API 的基础 URL,用于指定 API 请求的端点。

spring.ai.openai.chat.options.model

指定使用的聊天模型。

spring.ai.openai.chat.options.temperature

控制生成文本的随机性。值越低,生成的文本越确定和一致;值越高,生成的文本越随机。

以上只是文本生成的几个核心参数,更多配置参数可以参考以下几个参数配置类:

  • OpenAiParentProperties
  • OpenAiConnectionProperties
  • OpenAiChatProperties
  • ...

完整的类结构图如下:

Spring Boot + DeepSeek 实战来了:完美运行!_API

在《王炸!Spring 宣布接入 DeepSeek!!》一文中说了,Spring AI 目前是通过使用现有的 OpenAI 客户端与 DeepSeek AI 集成的:

Spring Boot + DeepSeek 实战来了:完美运行!_ci_02

所以,以上 OpenAI 配置参数也是和 DeepSeek 兼容的。

2、集成 DeepSeek API

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

参考代码如下:

/**
 * 微信公众号:Java技术栈
 */
@Slf4j
@RestController
@RequiredArgsConstructor
public class ChatController {

    private final OpenAiChatModel chatModel;

    /**
     * 聊天接口
     * @param message
     * @return
     */
    @GetMapping("/ds/chat")
    public String generate(@RequestParam(value = "message", defaultValue = "hello") String message) {
        return this.chatModel.call(message);
    }

    /**
     * 流式聊天接口
     * @param message
     * @return
     */
    @GetMapping("/ds/chatStream")
    public Flux<ChatResponse> generateStream(@RequestParam(value = "message", defaultValue = "hello") String message) {
        Prompt prompt = new Prompt(new UserMessage(message));
        return this.chatModel.stream(prompt);
    }

}

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

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

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

3、效果测试

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

http://localhost:8080/api/chat?message=xxx

如果配置没问题,你会收到 DeepSeek 生成的回答。

测试示例如下:

Spring Boot + DeepSeek 实战来了:完美运行!_API_03

Spring Boot + DeepSeek 实战来了:完美运行!_API_04

Spring Boot + DeepSeek 完美运行!真的太香了!

Spring Boot 处理 HTTP 请求,再通过 DeepSeek API 进行 AI 交互,轻松打造一个 AI 智能问答系统,整个接入流程和 API 使用非常轻松。

以上只是简单的接入,你也可以进一步扩展,比如增加前端用户界面增加用户会话记录,甚至接入微信、钉钉机器人,让 AI 真正赋能企业业务。

本文完整示例代码已上传 Github:

https:///javastacks/spring-boot-best-practice/tree/master/spring-boot-ai

赶紧试试吧,感受 AI 的魅力吧!