大家好,我是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://github.com/javastacks/spring-boot-best-practice

添加依赖

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

<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-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://api.deepseek.com
      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 宣布接入 DeepSeek!!》一文中说了,Spring AI 目前是通过使用现有的 OpenAI 客户端与 DeepSeek AI 集成的:

所以,以上 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 完美运行!真的太香了!

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

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

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

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

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

最后,推荐下我的《Spring Boot 核心技术课》,基于最新 Spring Boot 3.x 主版本,持续更新,包括底层实现原理及代码实战,知识点非常齐全,16 个模块,助你快速打通 Spring Boot 的各个环节。

程序员 + AI 编程是必然的趋势了,也是必备的技能,后面我会在《Spring Boot 核心技术课》课程中加一个 AI 模块,更新更多的 Spring Boot + AI 实战教程,课程加量不加价。

399 元永久学习,美滋滋~

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注