SpringAI整合deepseek的一个简单入门案例

注意:

1、本文大模型以deepseek为例,需提前到DeepSeek官网申请到key。

2、本文采用的调用deepseek在线api的方式。本地化部署请参考:https://blog.csdn.net/shenxiaomo1688/article/details/149297233?ops_request_misc=%257B%2522request%255Fid%2522%253A%25223ec1ad38708d28de772dae921cc5a63e%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=3ec1ad38708d28de772dae921cc5a63e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-149297233-null-null.nonecase&utm_term=%E6%8E%A5%E5%85%A5AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E7%9A%84%E7%AE%80%E5%8D%95%E4%BD%BF%E7%94%A8%28%E4%BA%8C%29&spm=1018.2226.3001.4450

一、下载依赖

如果maven使用的是阿里云镜像地址可能会下载不到下面的依赖:

spring-ai-openai-spring-boot-starter

可以在maven中指定仓库,如下所示

<!--下载spring-ai相关包需要用到的仓库地址-->
<repositories>
	<repository>
		<id>spring-milestones</id>
		<name>Spring Milestones</name>
		<url>https://repo.spring.io/milestone</url>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</repository>
	<repository>
		<id>spring-snapshots</id>
		<name>Spring Snapshots</name>
		<url>https://repo.spring.io/snapshot</url>
		<releases>
			<enabled>false</enabled>
		</releases>
	</repository>
</repositories>

附pom.xml中完整配置

<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.8</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>org.example</groupId>
    <artifactId>springai-deepseek-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <spring-ai.version>1.0.0-M5</spring-ai.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--<dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>-->

        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
        </dependency>
        <!--引入lombok依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!--下载spring-ai相关包需要用到的仓库地址-->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>

</project>

二、配置springai的api地址和key

server.port=9899
spring.application.name=spring-ai-deepseek-demo

spring.ai.openai.api-key=sk-c1efe9e2c2874f7cae1c7******
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

注意:

 1.api-key需替换为自己在deepseek上申请到的key; 

2.关于temperature参数说明,请参考下文和项目需要进行配置。

temperature值越高‌,生成的文本越多样化,但也可能包含更多的随机性和不可预测的内容。
  值越低‌,生成的文本越接近于确定性的结果,即生成的文本会更加一致和可预测。

三、创建controller,开发api

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/v1/deepseek")
public class DeepSeekController {

    private final OpenAiChatModel chatModel;

    @GetMapping("/chat")
    public String chat(@RequestParam String message) {
        String response = chatModel.call(message);
        System.out.println(response);
        return response;
    }
}

然后启动项目,开始测试,当传入的参数message的值为hello时测试效果如下:

当message传入的值为Java时

### 整合 SpringAIDeepSeek 框架 为了实现 SpringAIDeepSeek整合,开发者可以利用 Spring 提供的强大生态支持以及其便捷的配置方式来简化这一过程。Spring 官网指出,Spring 框架可以通过 OpenAI API 方式与 DeepSeek 集成[^1]。 具体来说,在项目中引入必要的依赖库之后,主要工作集中在配置文件设置上: #### 添加 Maven 或 Gradle 依赖项 对于基于 Java 的应用程序而言,通常会采用 Maven 或者 Gradle 来管理项目的构建流程。因此,第一步是在 `pom.xml` 文件(Maven)或 `build.gradle` 文件(Gradle)里加入所需的依赖包。 ```xml <!-- pom.xml --> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-core</artifactId> <version>${spring-ai.version}</version> </dependency> <dependency> <groupId>com.deepseek.api</groupId> <artifactId>deepseek-client-java</artifactId> <version>${deepseek-api-version}</version> </dependency> ``` ```groovy // build.gradle implementation 'org.springframework.ai:spring-ai-core:${springAiVersion}' implementation 'com.deepseek.api:deepseek-client-java:${deepSeekApiVersion}' ``` #### 创建应用配置类 接着创建一个新的配置类用于定义如何初始化并连接到 DeepSeek 服务端点。这一步骤涉及到读取环境变量中的认证信息和其他必要参数,并将其传递给客户端实例化方法。 ```java @Configuration public class AiConfig { @Value("${deepseek.api.key}") private String apiKey; @Bean public DeepSeekClient deepSeekClient() { return new DeepSeekClient.Builder() .setApiKey(apiKey) .build(); } } ``` #### 使用自动装配功能注入 DeepSeek Client Bean 最后,在任何需要调用 AI 功能的地方都可以直接通过 Spring 自动装配机制获取已经准备好的 `DeepSeekClient` 对象来进行交互操作。 ```java @Service public class MyAIService { private final DeepSeekClient client; @Autowired public MyAIService(DeepSeekClient client) { this.client = client; } // 实现业务逻辑... /** * 调用 DeepSeek 接口处理请求. */ public void processRequest(String inputText){ var response = client.sendQuery(inputText); System.out.println(response.getResult()); } } ``` 上述代码片段展示了基本的应用程序结构和组件之间的关系。当然实际应用场景可能会更加复杂一些,但这提供了一个良好的起点以便进一步探索更多可能性。 Spring AI 解决了 Spring 生态和 AI 的快速集成问题:它能够帮助企业轻松地将内部的数据资源和服务接口同外部的人工智能模型对接起来,从而加速智能化转型的步伐[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值