Spring 宣布接入 DeepSeek!!

原文:https://juejin.cn/post/7468882746939195418

DeepSeek 是深度求索公司发布的大模型,是国产之光。大家应该学会如何使用 DeepSeek 大模型,下面我们将看下如何开发基于 DeepSeek 大模型的智能应用。


DeepSeek 大模型

DeepSeek 推出两款模型;

  • DeepSeek V 系列,对于V系列主要 对话,模型名称:deepseek-chat

  • DeepSeek R 系统,对于R系统主要 推理, 模型名称:deepseek-reasoner

DeepSeek 官方更新日志,可以看到模型发布和演化的过程。

https://api-docs.deepseek.com/zh-cn/updates


集成 DeepSeek 大模型

DeepSeek AI提供开源的 DeepSeek V3 模型,该模型以其尖端的推理和解决问题的能力而闻名。

Spring AI 通过重用现有的 OpenAI 客户端与 DeepSeek AI 集成。首先,您需要获取 DeepSeek API 密钥,配置基本 URL,并选择其中一个受支持的模型。

图片

接入前准备

  1. 创建 API 密钥:访问此处:https://api-docs.deepseek.com/zh-cn/创建 API 密钥。使用 Spring AI 项目中的 spring.ai.openai.api-key 属性对其进行配置。

  2. 设置 DeepSeek 基本 URL:将 spring.ai.openai.base-url 属性设置为 api.deepseek.com

  3. 选择 DeepSeek 模型:使用属性 spring.ai.openai.chat.model=<model name> 指定模型。有关可用选项,请参阅支持的型号。


集成 DeepSeek 示例


1、引入依赖

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


2、配置

spring:
  ai:
    openai:
      api-key: sk-xxx   // 填写自己申请的key
      base-url: https://api.deepseek.com
      chat:
        options:
          model: deepseek-chat


3、简单的聊天示例

package com.ivy.controller;

import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

import java.util.Map;


@RestController
public class ChatController {

    private final OpenAiChatModel chatModel;
    
    public ChatController(OpenAiChatModel chatModel) {
        this.chatModel = chatModel;
    }

    @GetMapping("/ai/generate")
    public Map<String, String> 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 服务受资源限制可能无法提供在线服务,那么可以本地部署一个DeepSeek 大模型进行学习和使用。


总结

Spring AI 接入 DeepSeek 大模型是非常简单的,实现了阻塞和流式聊天模式。对于 DeepSeek 大模型的函数调用,角色定义以及结构化输出等和之前文章中讲解的内容是一致的,没有什么特别的地方,这里也不再赘述了,有兴趣的可以参考本专栏的其它文章。

源码案例:
https://github.com/Fj-ivy/spring-ai-examples

 
 

==好了,给粉丝个福利==

==打车千万别直接去APP,记得先领券==
亲测一单省了30块钱
### 将DeepSeek集成到Spring项目 为了将DeepSeek成功集成到Spring项目中,可以借鉴数据库和其他服务与Spring框架集成的方法。通常情况下,在Spring环境中引入新的组件或服务涉及几个主要方面:配置管理、依赖注入和服务调用。 #### 配置管理 类似于创建Git仓库来存储配置文件[^1],对于DeepSeek的集成而言,首先需要准备相应的API密钥或其他认证凭证,并将其安全地保存起来。这些敏感信息不应该硬编码在源码里而是通过环境变量或者专门的秘密管理系统提供给应用程序。 ```yaml # application.yml 示例 deepseek: apiKey: ${DEEPSEEK_API_KEY} baseUrl: "https://api.deepseek.com/v1" ``` #### 依赖注入 定义一个用于访问DeepSeek API的服务类,并利用`@Service`注解使其成为Spring容器中的bean。这样可以在其他地方轻松获取该实例并执行所需的操作。 ```java @Service public class DeepSeekClient { private final String apiKey; private final RestTemplate restTemplate; @Autowired public DeepSeekClient(@Value("${deepseek.apiKey}") String apiKey) { this.apiKey = apiKey; this.restTemplate = new RestTemplate(); } // 实现具体方法... } ``` #### 数据库连接设置 虽然这里讨论的是DeepSeek而非传统意义上的数据库,但是某些概念仍然适用。比如建立数据源的方式可以启发我们思考如何初始化对外部HTTP RESTful接口的客户端对象。这一步骤对应于选择合适的HTTP请求工具以及对其进行必要的参数化处理[^2]。 #### 控制器层实现 最后,在控制器层面编写逻辑以便能够触发对DeepSeek API的实际调用。确保遵循REST原则设计URL路径和HTTP动词的选择;同时考虑到异常情况下的错误响应机制。 ```java @RestController @RequestMapping("/search") public class SearchController { private final DeepSeekClient deepSeekClient; @Autowired public SearchController(DeepSeekClient deepSeekClient){ this.deepSeekClient = deepSeekClient; } @GetMapping("/{query}") public ResponseEntity<?> search(@PathVariable String query){ try{ SearchResult result = deepSeekClient.search(query); return ResponseEntity.ok(result); }catch(Exception e){ return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage()); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值