Spring AI 集成 DeepSeek V3 模型开发指南

Spring AI 集成 DeepSeek V3 模型开发指南

前言

在人工智能飞速发展的当下,大语言模型不断推陈出新,DeepSeek AI 推出的开源 DeepSeek V3 模型凭借其卓越的推理和问题解决能力备受瞩目。与此同时,Spring AI 作为一个强大的框架,为开发者集成各类 AI 服务提供了便利。本文将深入探讨如何通过 Spring AI 集成 DeepSeek V3 模型,助力开发者快速搭建高效的 AI 应用。

Spring AI 与 DeepSeek 集成要点

1. 准备工作

  • 获取 API 密钥:访问指定平台创建 DeepSeek API 密钥,并通过 spring.ai.openai.api - key 属性进行配置。
  • 设置基 URL:将 spring.ai.openai.base - url 属性设置为 api.deepseek.com,以此确定与 DeepSeek 服务通信的基础地址。
  • 选择模型:利用 spring.ai.openai.chat.options.model = <model name> 属性,从支持的模型列表中指定使用的 DeepSeek 模型。例如,若要使用 deepseek - chat 模型,可进行相应配置。同时,可通过环境变量配置,如:
export SPRING_AI_OPENAI_API_KEY = <INSERT DEEPSEEK API KEY HERE>
export SPRING_AI_OPENAI_BASE_URL = https://api.deepseek.com
export SPRING_AI_OPENAI_CHAT_MODEL = deepseek - chat

2. 添加存储库和 BOM

  • 存储库:Spring AI 工件发布于 Maven Central 和 Spring Snapshot 存储库。开发者需将这些存储库添加到构建系统中,具体操作可参考 Repositories 部分。
  • BOM:为实现依赖项的有效管理,Spring AI 提供了 BOM(物料清单)。通过添加 Spring AI BOM 到构建系统,能够确保项目中 Spring AI 版本的一致性,详细步骤可查阅依赖项管理部分。

3. 自动配置

  • Spring AI 为 OpenAI Chat 客户端提供了 Spring Boot 自动配置功能。要启用该功能,需在项目的 Maven pom.xml 或 Gradle build.gradle 文件中添加以下依赖项:
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring - ai - starter - model - openai</artifactId>
</dependency>

同时,别忘了将 Spring AI BOM 添加到构建文件中。

4. 聊天属性配置

  • 重试属性:以 spring.ai.retry 为前缀的属性,可用于配置 OpenAI 聊天模型的重试机制。例如,spring.ai.retry.max - attempts 用于设置最大重试尝试次数,默认值为 10;spring.ai.retry.backoff.initial - interval 表示指数回退策略的初始休眠持续时间,默认 2 秒等。通过合理配置这些属性,能够增强应用在面对网络波动等异常情况时的稳定性。
  • 连接属性spring.ai.openai 前缀的属性用于连接到 DeepSeek。其中,spring.ai.openai.base - url 必须设置为 api.deepseek.comspring.ai.openai.api - key 需配置为申请到的 DeepSeek API 密钥。
  • 配置属性:如今,启用和禁用聊天自动配置通过 spring.ai.model.chat 前缀实现。默认 spring.ai.model.chat = openai 为启用状态,若要禁用可设置为 spring.ai.model.chat = none 或其他非 openai 的值。此外,spring.ai.openai.chat 前缀下还有众多属性,如 spring.ai.openai.chat.options.model 用于指定要使用的 DeepSeek LLM 模型;spring.ai.openai.chat.options.temperature 控制生成完成项的随机性,取值范围影响输出的创造性程度等。

5. 运行时选项

  • 启动时,可通过 OpenAiChatModel(api, options) 构造函数或 spring.ai.openai.chat.options.* 属性进行模型配置。在运行时,可通过向 Prompt 添加特定于请求的运行时选项。例如,若要覆盖特定请求的默认模型和温度,可按如下方式编写代码:
ChatResponse response = chatModel.call(
    new Prompt(
        "Generate the names of 5 famous pirates.",
        OpenAiChatOptions.builder()
           .model("deepseek - chat")
           .temperature(0.4)
        .build()
    ));

6. 函数调用与限制

需要注意的是,deepseek - chat 模型的函数调用功能当前版本不稳定,可能出现循环调用或空响应的问题。并且,目前 DeepSeek API 暂不支持媒体内容。

7. Samples 控制器示例

创建一个新的 Spring Boot 项目,在 POM(或 Gradle)依赖项中添加 spring - ai - starter - model - openai。然后在 src/main/resources 目录下的 application.properties 文件中进行如下配置:

spring.ai.openai.api - key = <DEEPSEEK_API_KEY>
spring.ai.openai.base - url = https://api.deepseek.com
spring.ai.openai.chat.options.model = deepseek - chat
spring.ai.openai.chat.options.temperature = 0.7
# The DeepSeek API doesn't support embeddings, so we need to disable it.
spring.ai.openai.embedding.enabled = false

<DEEPSEEK_API_KEY> 替换为实际申请到的密钥。通过上述配置,会创建一个 OpenAiChatModel 实现,可将其注入到类中。以下是一个简单的 @Controller 类示例,用于使用聊天模型生成文本:

@RestController
public class ChatController {
    private final OpenAiChatModel chatModel;
    @Autowired
    public ChatController(OpenAiChatModel chatModel) {
        this.chatModel = chatModel;
    }
    @GetMapping("/ai/generate")
    public Map generate(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        return Map.of("generation", 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);
    }
}

若要查询如何使用本地部署的DeepSeek模型,可以查看文章: 利用ollama.com本地部署大模型及Java验证全攻略

总结

通过本文介绍的步骤,开发者能够成功地将 Spring AI 与 DeepSeek V3 模型集成,充分利用 DeepSeek 模型强大的能力来构建智能应用。在集成过程中,要特别注意 API 密钥的安全配置、模型选项的合理调整以及对不稳定功能(如函数调用)的妥善处理。同时,由于 AI 技术和相关框架处于不断发展中,开发者需持续关注官方文档,以便及时获取最新信息,优化应用性能和功能。希望本文能为大家在基于 Spring AI 和 DeepSeek 进行开发的道路上提供有力的指导和帮助,助力大家开发出更具创新性和竞争力的 AI 应用。

### 集成 DeepSeekSpring Boot 项目 #### 创建配置类 为了使应用程序能够连接到 DeepSeek API,创建一个专门用于管理API密钥和其他必要参数的配置类。此操作确保了敏感数据的安全性和灵活性。 ```java @Configuration @ConfigurationProperties(prefix = "deepseek") @Data public class DeepSeekConfig { private String apiKey; @Bean public ClientV4 getDeepSeekClient() { return new ClientV4.Builder(apiKey).build(); } } ``` 上述代码定义了一个名为 `DeepSeekConfig` 的配置类来存储和提供给其他组件使用的客户端实例[^3]。 #### 构建控制器以暴露 RESTful 接口 为了让外部应用可以调用内部的服务功能,构建一个REST风格接口是非常必要的。下面是一个简单的例子展示了怎样通过HTTP请求触发AI服务并返回结果: ```java @RestController @RequestMapping("/api/v1/deepseek") public class DeepSeekController { private final ClientV4 client; public DeepSeekController(ClientV4 client){ this.client = client; } /** * 聊天消息处理端点. */ @GetMapping("/chat") public ResponseEntity<String> handleChat( @RequestParam(value="query", required=true, defaultValue="你好") String query) throws Exception{ // 使用 deepseek-chat (V3),针对聊天场景优化过的模型版本 ChatRequest request = new ChatRequest(query); Response response = client.chat(request); return ResponseEntity.ok(response.getMessage()); } /** * 复杂推理问题解决器. */ @PostMapping("/reasoner") public ResponseEntity<Map<String,Object>> reason(@RequestBody Map<String,String> body)throws Exception{ // 利用 deepseek-reasoner(R1), 特别设计用来应对复杂的逻辑推演挑战 ReasoningRequest req = new ReasoningRequest(body.get("problem")); Result result = client.reason(req); HashMap<String, Object> resultMap = new HashMap<>(); resultMap.put("solution",result.getSolutions()); return ResponseEntity.ok(resultMap); } } ``` 这段程序片段实现了两个主要的功能:一个是基于文本输入生成回复的消息处理器;另一个则是接收JSON格式的问题描述并通过深度学习算法得出解决方案的方法[^1]。 #### 应用启动设置 最后,在主应用程序入口处添加对映射文件夹下所有Mapper接口的支持以便于后续可能涉及到的数据持久化层开发工作。 ```java @SpringBootApplication @MapperScan(basePackages={"com.example.mapper"}) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,args); } } ``` 以上就是关于如何在一个典型的Spring Boot环境中引入DeepSeek作为人工智能支持工具的一个基本指南[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-曾牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值