Sping AI接入Deepseek R1大模型

系列文章目录

第一回 deepseek r1 32b模型在ollma amd rx590上成功运行!

第二回 amd rx580&590 ollma的安装

第三回 Sping AI接入Deepseek R1大模型


文章目录


前言

        目前,很多网上类似的博客都是使用okhttp手动创建http连接的方式来调用api,这种方式需要自己构造请求头,请求体,请求等,模版类代码有点多,说白话,就是重复编写代码,有没有一种方式封装了这些模版类代码呢,Sping AI的出现恰到好处的解决了此类问题。


一、Spring AI介绍?

        借用spring ai官网自己的描述,Spring AI 是一个面向 AI 工程的应用框架,其目标是将 Spring 生态系统的可移植性和模块化设计等设计原则应用到 AI 领域,并推动将 POJO 作为应用的构建块应用于 AI 领域,从本质上讲,Spring AI 解决了 AI 集成的基本挑战:将企业数据APIAI 模型连接起来。

特征:

  • 聊天
  • 嵌入
  • 文本转图像
  • 音频转录
  • 文本转语音
  • 内容审核

目前,sping ai只有snapshot版本,还没有正式列为可用于生产版本,迭代较快,api接口变化也比较多,如下图:

推荐使用1.0.0.M6版本,1.0.0.SNAPSHOT版本启动会找不到类,坑很多,对接deepseek的官方文档链接:https://docs.spring.io/spring-ai/reference/1.0/api/chat/deepseek-chat.html,如下图:

二、使用步骤

1.获取API Key

        deepseek官网https://platform.deepseek.com,硅基流动官网https://cloud.siliconflow.cn/,申请api key,具体申请方法及价格请搜索百度,此处不再赘述,申请后配置application.yml文件,下图红框处替换为自己的api key

2.引入依赖

主pom中引入如下依赖

<dependency>

  <groupId>org.springframework.ai</groupId>

  <artifactId>spring-ai-openai-spring-boot-starter</artifactId>

</dependency>
同时,因为该依赖包暂时没有托管到maven仓库,因此,需要通过依赖管理加入sping ai自己的依赖源地址,配置如下:
<dependencyManagement>

  <dependencies>

</dependency>

    <dependency>

        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-core</artifactId>
        <version>1.0.0-M6</version>
        <scope>compile</scope>
    </dependency>

    <dependency>

      <groupId>org.springframework.ai</groupId>

      <artifactId>spring-ai-bom</artifactId>

      <version>1.0.0-M6</version>

      <type>pom</type>

      <scope>import</scope>

    </dependency>

  </dependencies>

</dependencyManagement>

注意此处单独引入spring-ai-core依赖,否则,会引入1.0.0-SNAPSHOT版本,导致找不到类,这里又是一个坑

3.测试api接口

这里编写一个controller,调用api进行测试

@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);

  }

}

方法中带有stream的为流式调用,文毕!

总结

文中对Spring Boot引入Spring AI进行了简单的介绍,包括了避坑注意事项,希望对大家有所帮助,谢谢!。

03-08
### Spring框架教程和文档 #### Spring框架概述 Spring框架是一个分层架构,由多个模块组成。这些模块可以被划分为核心容器、数据访问/集成、Web、面向切面编程(AOP)、工具和其他技术的支持模块[^1]。 #### 核心组件介绍 - **Core Container (核心容器)** 这部分包含了BeanFactory,它提供了对工厂模式的经典实现,并允许通过配置元数据(如XML)来解耦对象之间的依赖关系。 - **Context (上下文)** 上下文的概念建立在核心容器之上,增加了国际化(I18N),事件传播,资源加载等功能,还支持JNDI定位服务。 - **AOP (面向方面编程)** 提供了符合标准的AOP功能,用于定义方法拦截器和切入点,从而能够将横切关注点逻辑分离出来。 - **Data Access/Integration (数据存取/集成)** 支持JDBC, ORM, OXM, JMS等接口和技术,简化了数据库操作的同时也提高了程序的可移植性和灵活性。 - **Web** 包含了构建Web应用所需的各种特性,比如MVC框架(Spring MVC), WebSocket支持等等. #### 开发环境搭建指南 为了使用Spring框架开发Java项目,开发者通常需要准备四个基本jar包以及`commons-logging-1.2.jar`这个日志库文件,并将其放置于项目的lib目录下以便编译器识别并加入到classpath中去[^2]. #### 实战案例分析 当涉及到具体的应用场景时,例如电子商务平台建设过程中遇到的数据持久化问题,则可以通过创建DAO(Data Access Object)类及其相应的XML映射文件来进行解决;而在处理业务逻辑层面的任务时,就可以利用Spring所提供的声明式事务管理机制来确保系统的稳定运行[^4]. ```java // 创建一个简单的Spring Bean示例 public class HelloWorld { private String message; public void setMessage(String message){ this.message = message; } public void getMessage(){ System.out.println("Your Message : " + message); } } ``` ```xml <!-- 对应的beans.xml配置 --> <bean id="helloWorld" class="com.example.HelloWorld"> <property name="message" value="Hello World!"/> </bean> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

才疏学浅的石头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值