基于SpringAI集成DeepSeek接口的技术实现

SpringAI作为Spring生态中面向AI应用开发的扩展框架,为开发者提供了便捷的AI能力集成方案。结合DeepSeek提供的强大模型接口,可快速构建智能应用。以下为关键实现步骤:

一、环境配置与依赖

1.1 版本适配要求

本文使用的SpringAI 1.0.0 对底层环境有严格要求,需提前确认环境满足:

环境 版本
JDK 版本 17
Spring Boot 版本 3.2.0
Maven 版本 3.6.0

1.2 Maven 配置

在Spring Boot项目中引入SpringAIDeepSeek相关依赖。Maven配置需包含以下核心库:

<dependencies>
		<!-- Spring AI DeepSeek 核心依赖-->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-deepseek</artifactId>
        </dependency>
</dependencies>
<!-- Spring AI BOM 统一管理版本 -->
<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>1.0.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

二、API密钥配置

2.1 API密钥申请步骤

  1. 登录DeepSeek官网,选择API开放平台:在这里插入图片描述
  2. 选择API Keys,选择创建API key:
    在这里插入图片描述
  3. 填写名称后得到API key,请复制保存好,关闭后无法再次查看,只能重新创建。(请不要复制本文示图中的key,已删除,此key无效。)
    在这里插入图片描述
    在这里插入图片描述
  4. DeepSeek API 需充值后才能使用,点击「去充值」选择自定义金额(小额充值即可,余额未使用可申请退款)。
    在这里插入图片描述

2.2 配置文件

application.yml中配置DeepSeek的访问凭证:

spring:
    # Spring AI配置
  ai:
    deepseek:
      api-key: "此处填写前面申请得到的api-key"
      base-url: https://api.deepseek.com
      chat:
        options:
          model: deepseek-chat# 通用对话模型,可选deepseek-coder-v2(代码生成模型)
          temperature: 0.7	# 回答随机性,0-1之间,值越低越严谨
          max-tokens: 2000	# 模型最大输出字符数,控制回答长度
      retry:
        max-attempts: 3		# 接口调用失败最大重试次数
        backoff:
          initial-interval: 2s
          multiplier: 1.5

可根据业务需求,自定义 chat(模型参数)、retry(重试策略)等配置项。

三、基础功能

3.1 服务层封装

创建AIService封装对话生成功能,注入SpringAI的ChatClient,示例代码如下:

import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.ChatClient;
import org.springframework.ai.prompt.Prompt;
import org.springframework.ai.prompt.PromptTemplate;
import org.springframework.stereotype.Service;

import java.util.Map;

/**
 * AI服务层:封装DeepSeek接口调用逻辑
 */
@Service
public class AIService {

    // SpringAI自动配置的ChatClient,无需手动创建
    private final ChatClient chatClient;

    public AIService(ChatClient chatClient) {
        this.chatClient = chatClient;
    }

    /**
     * 通用对话生成:基于提示词模板生成回答
     * @param userQuestion 用户问题
     * @return 模型生成的回答
     */
    public String generateResponse(String userQuestion) {
        // 定义提示词模板(可根据业务场景调整)
        String promptTemplate = """
                你是一位专业的技术助手,需满足以下要求:
                1. 回答简洁明了,直击重点;
                2. 技术问题需提供具体实现思路或代码示例;
                3. 拒绝回答无关、违法、不道德的内容。
                用户问题:{question}
                """;

        // 构建提示词模板对象,绑定用户问题参数
        PromptTemplate template = new PromptTemplate(promptTemplate);
        Map<String, Object> params = Map.of("question", userQuestion);
        Prompt prompt = template.create(params);

        // 调用DeepSeek接口,获取响应结果
        ChatResponse response = chatClient.call(prompt);

        // 解析响应内容并返回
        return response.getResult().getOutput().getContent();
    }
}

3.2 控制层测试接口

创建AIController类,提供同步对话 HTTP 接口,方便前端 / 第三方系统调用,示例代码如下:

import com.example.springaideepseekdemo.service.AIService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * AI控制层:提供HTTP接口
 */
@RestController
public class AIController {

    // 注入AI服务层对象
    @Resource
    private AIService aiService;

    /**
     * 同步对话接口:适用于不需要实时反馈的场景
     * 访问示例:http://localhost:8080/ai/chat?question=SpringAI是什么
     * @param question 用户问题
     * @return 模型生成的回答
     */
    @GetMapping("/ai/chat")
    public String chat(@RequestParam String question) {
        // 调用服务层方法,返回结果
        return aiService.generateResponse(question);
    }
}

3.3 基础功能测试

  1. 启动 Spring Boot 项目(确保无编译错误);
  2. 打开浏览器Postman,访问接口:http://localhost:8080/ai/chat?question=SpringAI是什么;
  3. 正常情况下,浏览器会直接返回 DeepSeek 的回答,示例:
SpringAI是Spring生态下的AI应用开发框架,提供了统一的AI模型调用抽象层,支持主流大模型(如OpenAI、DeepSeek、通义千问等)。其核心优势包括:1. 简化调用流程,无需手动封装HTTP请求;2. 内置重试、限流、流式响应等特性;3. 与Spring Boot无缝集成,支持依赖注入、配置绑定等Spring生态特性,帮助开发者快速将大模型能力集成到Java应用中。

四、总结

本文完成了SpringAI集成DeepSeek接口的核心实操实现,展示了从环境搭建到接口测试的全步骤。可根据业务需求自定义模型参数、扩展功能模块,及时更新框架与SDK版本即可适配最新的API能力。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐