SpringAI-1-集成DeepSeek

分为以下几个步骤:

1、新建Springboot项目

2、进deepseek开放平台官网申请API key

网址:https://platform.deepseek.com/usage

3、配置application.yml文件,springboot项目默认是application.properties,它对中文不友好,需要改成application.yml:

bash 复制代码
# 设置Spring应用的名称为spring-ai
spring:
  application:
    name: spring-ai
  # DeepSeek AI配置
  ai:
    deepseek:
      # 配置DeepSeek API密钥,用于身份验证
      api-key: sk-7d608ca9235b422b8ae5acfcc2df7d55
      chat:
        options:
          # 配置DeepSeek聊天模型为deepseek-reasoner(推理模型)
          model: deepseek-reasoner

spring.ai.deepseek.api-key这个值填写从官网上申请的apikey。

4、添加maven依赖

我的依赖如下(可以全部拷贝过去):

bash 复制代码
<?xml version="1.0" encoding="UTF-8"?> <!-- XML声明,指定版本和编码格式为UTF-8 -->
<!-- project标签是Maven项目的根元素,定义了命名空间和XML Schema位置 -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion> <!-- 指定POM模型版本为4.0.0 -->
    <parent> <!-- 定义父项目,继承Spring Boot的默认配置 -->
        <groupId>org.springframework.boot</groupId> <!-- 父项目的组织ID -->
        <artifactId>spring-boot-starter-parent</artifactId> <!-- 父项目的Artifact ID -->
        <version>3.4.2</version> <!-- Spring Boot版本号为3.4.2 -->
        <relativePath/> <!-- 从仓库中查找父项目,不从本地相对路径查找 -->
    </parent>
    <groupId>com.zkwm.springai</groupId> <!-- 当前项目的组织ID,用于唯一标识项目 -->
    <artifactId>spring-ai</artifactId> <!-- 当前项目的Artifact ID,即项目名称 -->
    <version>0.0.1-SNAPSHOT</version> <!-- 项目版本号,SNAPSHOT表示开发版本 -->
    <name>spring-ai</name> <!-- 项目的显示名称 -->
    <description>spring-ai</description> <!-- 项目的描述信息 -->
    <url/> <!-- 项目的URL地址,当前为空 -->
    <licenses> <!-- 项目许可证信息 -->
        <license/> <!-- 许可证详情,当前为空 -->
    </licenses>
    <developers> <!-- 项目开发者信息 -->
        <developer/> <!-- 开发者详情,当前为空 -->
    </developers>
    <scm> <!-- 软件配置管理信息,用于版本控制 -->
        <connection/> <!-- SCM连接地址,当前为空 -->
        <developerConnection/> <!-- 开发者SCM连接地址,当前为空 -->
        <tag/> <!-- 版本标签,当前为空 -->
        <url/> <!-- SCM的URL地址,当前为空 -->
    </scm>
    <properties> <!-- 定义项目属性,可在整个POM中引用 -->
        <java.version>17</java.version> <!-- 指定Java版本为17 -->
        <spring-ai.version>1.0.0</spring-ai.version> <!-- 指定Spring AI的版本号为1.0.0 -->
    </properties>
    <dependencies> <!-- 项目依赖项列表 -->
        <dependency> <!-- Spring Boot Web启动器依赖,用于构建Web应用 -->
            <groupId>org.springframework.boot</groupId> <!-- 依赖的组织ID -->
            <artifactId>spring-boot-starter-web</artifactId> <!-- Web启动器的Artifact ID -->
        </dependency>

        <dependency> <!-- Spring Boot测试启动器依赖 -->
            <groupId>org.springframework.boot</groupId> <!-- 依赖的组织ID -->
            <artifactId>spring-boot-starter-test</artifactId> <!-- 测试启动器的Artifact ID -->
            <scope>test</scope> <!-- 依赖作用域为test,只在测试时使用 -->
        </dependency>

        <dependency> <!-- Spring AI DeepSeek模型启动器依赖 -->
            <groupId>org.springframework.ai</groupId> <!-- Spring AI的组织ID -->
            <artifactId>spring-ai-starter-model-deepseek</artifactId> <!-- DeepSeek模型启动器 -->
        </dependency>



    </dependencies>
    <dependencyManagement> <!-- 依赖管理部分,用于统一管理依赖版本 -->
        <dependencies> <!-- 依赖管理列表 -->
            <dependency> <!-- Spring AI BOM(物料清单),用于管理Spring AI相关依赖版本 -->
                <groupId>org.springframework.ai</groupId> <!-- Spring AI的组织ID -->
                <artifactId>spring-ai-bom</artifactId> <!-- BOM的Artifact ID -->
                <version>${spring-ai.version}</version> <!-- 引用上面定义的Spring AI版本属性 -->
                <type>pom</type> <!-- 类型为pom,表示这是一个BOM文件 -->
                <scope>import</scope> <!-- 作用域为import,导入BOM中的依赖管理 -->
            </dependency>
        </dependencies>
    </dependencyManagement>
    <build> <!-- 项目构建配置 -->
        <plugins> <!-- 构建插件列表 -->
            <plugin> <!-- Spring Boot Maven插件,用于打包和运行Spring Boot应用 -->
                <groupId>org.springframework.boot</groupId> <!-- 插件的组织ID -->
                <artifactId>spring-boot-maven-plugin</artifactId> <!-- 插件的Artifact ID -->
            </plugin>
        </plugins>
    </build>
    <repositories> <!-- 项目依赖仓库配置 -->
        <repository> <!-- Spring快照仓库,用于获取Spring的开发版本 -->
            <id>spring-snapshots</id> <!-- 仓库的唯一标识ID -->
            <url>https://repo.spring.io/snapshot</url> <!-- 仓库的URL地址 -->
            <snapshots> <!-- 快照版本配置 -->
                <enabled>true</enabled> <!-- 允许下载快照版本 -->
            </snapshots>
        </repository>
    </repositories>
</project> <!-- project标签结束 -->

AI相关的核心依赖(不需要拷,从上面pom文件摘出来的):

bash 复制代码
   <dependency> <!-- Spring AI DeepSeek模型启动器依赖 -->
            <groupId>org.springframework.ai</groupId> <!-- Spring AI的组织ID -->
            <artifactId>spring-ai-starter-model-deepseek</artifactId> <!-- DeepSeek模型启动器 -->
        </dependency>

   <dependencyManagement> <!-- 依赖管理部分,用于统一管理依赖版本 -->
        <dependencies> <!-- 依赖管理列表 -->
            <dependency> <!-- Spring AI BOM(物料清单),用于管理Spring AI相关依赖版本 -->
                <groupId>org.springframework.ai</groupId> <!-- Spring AI的组织ID -->
                <artifactId>spring-ai-bom</artifactId> <!-- BOM的Artifact ID -->
                <version>${spring-ai.version}</version> <!-- 引用上面定义的Spring AI版本属性 -->
                <type>pom</type> <!-- 类型为pom,表示这是一个BOM文件 -->
                <scope>import</scope> <!-- 作用域为import,导入BOM中的依赖管理 -->
            </dependency>
        </dependencies>
    </dependencyManagement>

5、创建1个测试使用的Controller

java 复制代码
package com.zkwm.springai.springai.deepseek; // 声明当前类所在的包路径,deepseek相关控制器

import org.springframework.ai.deepseek.DeepSeekChatModel; // 导入DeepSeek聊天模型类,用于调用DeepSeek AI服务
import org.springframework.beans.factory.annotation.Autowired; // 导入Autowired注解,用于自动注入依赖
import org.springframework.web.bind.annotation.GetMapping; // 导入GetMapping注解,用于处理HTTP GET请求
import org.springframework.web.bind.annotation.RequestMapping; // 导入RequestMapping注解,用于定义请求路径前缀
import org.springframework.web.bind.annotation.RestController; // 导入RestController注解,标识这是一个RESTful控制器

@RestController // 标记这是一个RESTful风格的控制器,返回数据而不是视图
@RequestMapping("/deepseek") // 定义该控制器的基础请求路径为/deepseek
public class TestController { // 定义测试控制器类

    @Autowired // 自动注入DeepSeekChatModel实例,由Spring容器管理
    DeepSeekChatModel deepSeekChatModel; // 声明DeepSeek聊天模型成员变量

    @GetMapping("/str") // 处理HTTP GET请求,路径为/deepseek/str
    public String test() { // 定义测试方法,返回字符串类型

    String deepseekStr=deepSeekChatModel.call("你是谁?"); // 调用DeepSeek模型,传入问题"你是谁?",获取AI回复

        return deepseekStr; // 返回DeepSeek模型的回复字符串
    } // test方法结束

} // 类定义结束

6、进入Application文件点击运行

7、在浏览器输入:http://127.0.0.1:8080/deepseek/str

稍等片刻即可看到答案。

最简单版的AI就这么集成进来了。

尝试自己重新传问题进去,看看什么效果.

当前的代码是一次性输出的(非流式),需要全部生成完才返回到客户端。

相关推荐
好家伙VCC1 小时前
**发散创新:编译器优化实战——从LLVM IR到性能飞跃的奇妙旅程**
java·开发语言·python·算法
Anastasiozzzz1 小时前
如何理解AOP?带你写一个!
java·开发语言
礼拜天没时间.1 小时前
Docker Registry私有仓库搭建与使用
java·运维·docker·云原生·容器·centos
追随者永远是胜利者1 小时前
(LeetCode-Hot100)70. 爬楼梯
java·算法·leetcode·职场和发展·go
前路不黑暗@2 小时前
Java项目:Java脚手架项目的阿里云短信服务集成(十六)
android·java·spring boot·学习·spring cloud·阿里云·maven
海南java第二人2 小时前
Flink运行时组件深度解析:Java工程师的架构设计与实战指南
java·大数据·flink
WJX_KOI2 小时前
保姆级教程:Apache Flink CDC(standalone 模式)部署 MySQL CDC、PostgreSQL CDC 及使用方法
java·大数据·mysql·postgresql·flink
追随者永远是胜利者2 小时前
(LeetCode-Hot100)49. 字母异位词分组
java·算法·leetcode·职场和发展·go
吴声子夜歌2 小时前
RxJava——Flowable与背压
android·java·rxjava