Java程序员的福音:Spring AI+DeepSeek
欢迎关注微信公众号:互联网全栈架构现在AI这么火爆,Java程序员如何参与其中呢?答案来了,那就是Spring AI。创作不易,烦请点个在看、点个赞。本文就来讲一讲什么是Spring AI,并且编写一个Hello World程序,接入本地的DeepSeek,并且与其聊天。主要分为以下几个部分:一、什么是Spring AI二、编写Spring AI程序三、测试四、总结一什么是Spring AI总体来
欢迎关注微信公众号:互联网全栈架构
现在AI这么火爆,Java程序员如何参与其中呢?答案来了,那就是Spring AI。创作不易,烦请点个在看、点个赞。
本文就来讲一讲什么是Spring AI,并且编写一个Hello World程序,接入本地的DeepSeek,并且与其聊天。主要分为以下几个部分:
一、什么是Spring AI
二、编写Spring AI程序
三、测试
四、总结
一
什么是Spring AI
总体来讲,在人工智能领域,编程语言Python会显得高出一档,而Java语言或者Spring框架都有点相对滞后。为了弥补这一缺陷,Spring团队推出了Spring AI框架,旨在帮助Java程序员快速进行AI的相关开发,目前,已经推出了Spring AI 1.0.0 M1版本,当然,这个版本还在不断完善中,还不是GA(General Availability)。

顾名思义,Spring AI框架是用来进行AI应用开发的,它旨在简化人工智能应用程序的开发流程,减少或者避免不必要的复杂性。Spring AI具备以下特性:
1. 支持主流的AI模型,比如Anthropic, OpenAI, Microsoft, Amazon, Google, and Ollama。
2. 跨模型的兼容性,它提供跨AI提供商的API,这样就可以综合利用各平台的能力,同时它也提供特定模型的API。
3. 支持主流的向量数据库,包括Apache Cassandra, Azure Vector Search, Elasticsearch, Neo4j, Redis, SAP Hana等。
4. 模型输出映射,它能够将模型输出转换成Java对象(POJO),这样就大大降低了AI开发的难度。
5. 函数调用,使得AI模型能够与外部API进行交互,从而增强应用的功能性和灵活性。
。。。。。。

总体来讲,Spring AI解决的核心问题是:把你的数据和API与AI模型连接起来。
二
编写Spring AI程序
接下来我们就创建一个Spring AI的Hello World程序,它会连接本地的DeepSeek,并且调用接口进行交互。
环境准备:Spring AI要求Spring Boot的版本为3.2.x或者3.3.x。JDK为17或者以上版本。
新增一个父工程,pom.xml的内容如下:
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.myai</groupId>
<artifactId>example</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>example</name>
<description>example</description>
<modules>
<module>dm-sample</module>
</modules>
<properties>
<java.version>17</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.3.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>3.3.4</version>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
再创建一个模块,模块的pom.xml:
<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>com.myai</groupId>
<artifactId>example</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.myai</groupId>
<artifactId>dm-sample</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>dm-sample</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
这样,工程创建好了,接下来创建一个Controller类,用于接收请求,它把前端发过来的消息,转发给大模型,并把模型的结果返回给前端:
package com.myai.doc.controller;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/ai")
publicclass ChatController {
privatefinal ChatClient chatClient;
public ChatController(ChatClient.Builder chatClient) {
this.chatClient = chatClient.build();
}
@GetMapping("/chat")
public String chat(@RequestParam(value = "message") String message) {
String result;
try {
result = chatClient.prompt().user(message).call().content();
} catch (Exception e) {
return"Exception";
}
return result;
}
}
对应的配置文件application.yaml:
spring:
http:
encoding:
charset: UTF-8
enable: true
force: true
ai:
ollama:
base-url: http://localhost:11434
chat:
model: deepseek-r1:1.5b
当然,底层还是基于Spring Boot框架的,所以需要创建一个启动类,这个就非常简单了,此处不再给出,如果需要可以参考之前的文章。
三
测试
运行上面的程序,确保本地的Ollama在运行。关于本地部署DeepSeek的方法,请参考之前的文章:DeepSeek本地部署流程:超级简单,配置要求很低
在浏览器里面输入:
http://localhost:8080/ai/chat?message=hello
参数message就是我们跟大模型聊天的内容,这里是hello,回车后就出现下面的结果:

四
总结
这样,Spring AI的Hello World就算是完成了,并且接入的是现在超级火爆的DeepSeek。大模型的能力无庸置疑,有了这样的框架,让我们Java程序员非常广阔的想象空间。
Spring AI现在还是特别成熟,从版本号也就可见一斑,不过,依据Spring强大的社区力量和号召力,以及高歌猛进的AI演进,相信Spring AI会越来越成熟,早点入局,会带给我们更多的机会。
有任何问题,也欢迎留言讨论。
参考文章:
https://spring.io/projects/spring-ai
推荐阅读:
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)