网站首页 > java教程 正文
背景
一提到大模型,AI,第一时间都会想到python。的确,在机器学习这方面,python已经领先了很多,提供了很多模型的包。我也一直用python的LangChain框架写大模型的应用。但是相对于JAVA程序员来说,换一个语言开发,还是不太习惯。而且大多数项目还都是业务复杂的java项目,改造起来也是个麻烦事。好在Spring虽然赶了个晚集,推出了SpringAI框架。
介绍
Spring AI是一个由Spring团队开发的开源框架,旨在帮助开发者在Spring应用中轻松集成和管理AI模型。它借鉴了Python生态中LangChain等工具的设计理念,但并非简单移植,而是专注于解决Java开发者在AI集成中面临的核心难题,即如何将企业数据API与AI模型无缝连接。大白话就是说,我抄(借鉴)了LangChain,我有生态,能更好的集成融合。有点像某讯。
Spring AI 的核心理念是提供高度抽象化的组件,作为开发AI应用程序的基础。这些抽象化组件具备多种实现,使得开发者能够以最少的代码改动便捷地交换和优化功能模块。
具体而言,Spring AI 提供了支持多种主流模型提供商的功能,包括OpenAI、Microsoft、Amazon、Google和Hugging Face。支持的模型类型涵盖了从聊天机器人到文本生成、图像处理、语音识别等多个领域。而其跨模型提供商的可移植API设计,不仅支持同步和流式接口,还提供了针对特定模型功能的灵活选项。
此外,Spring AI 还支持将AI模型输出映射为POJO,以及与主流矢量数据库提供商(如Apache Cassandra、Azure Vector Search、MongoDB Atlas等)无缝集成的能力。其功能不仅局限于模型本身,还包括了数据工程中的ETL框架和各种便利的函数调用,使得开发AI应用程序变得更加高效和可靠。
Springboot集成SpringAI
下面,我用一个简单聊天机器人的例子,来看一下如何在springboot项目里引入springai,接入大模型。
第一步,引入sdk。这里需要注意一点,springai因为暂时还是里程碑版,并未纳入到稳定版。所以,需要加入spring-milestones仓库。所以如果是生产环境还是要慎重,想要在生产环境使用的JAVA大佬们还是需要等一等,可以先尝尝鲜。
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-openai</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>1.0.0-M4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
接下来,我们需要配置一下properties。后面我会在另一篇文章里着重介绍下详细配置。这里是做一个demo。这里还是用了硅基流动的提供的api。
spring.ai.openai.api-key=xxxxxxxxxxx
spring.ai.openai.base-url=https://api.siliconflow.cn
spring.ai.openai.chat.options.model=Qwen/Qwen2.5-7B-Instruct
至此,我们就可以调用sdk了。调用chat也很简单,只需要加载ChatModel的bean,调用ChatModel的call方法,就能轻松调用大模型进行对话了。
@RestController
public class ChatController {
private final ChatModel chatModel;
@Autowired
public ChatController(ChatModel chatModel) {
this.chatModel = chatModel;
}
@GetMapping("/ai/generate")
public Map<String,String> generate(@RequestParam(value = "message", defaultValue = "讲一个笑话") String message) {
return Map.of("generation", this.chatModel.call(message));
}
}
我们部署下看看效果,让大模型讲一个笑话:
呵呵,这个笑话确实很冷,直打哆嗦。
好了,SpringAI的介绍以及简单的demo到这里就结束了。欢迎大家批评指正,也欢迎大家继续关注我后续关于SpringAI的其他文章。
- 上一篇: 真心被Spring框架折服!Spring全家桶知识点全梳理
- 下一篇:已经是最后一篇了
猜你喜欢
- 2025-06-13 真心被Spring框架折服!Spring全家桶知识点全梳理
- 2025-06-13 由浅入深,讲解spring实战详细使用——spring源码篇
- 2025-06-13 一篇文章带你掌握主流办公框架——SpringBoot
- 2025-06-13 怎么快速入行Java Spring框架工作原理是什么
- 2025-06-13 Java设计模式在Spring框架中的精彩演绎
- 2025-06-13 Spring框架入门(spring框架总结)
- 2025-06-13 Java框架学习 —— Spring(循环依赖问题)
- 2025-06-13 Spring框架的核心原理与源码解析:Java世界的魔术师
- 2025-06-13 spring框架怎么实现依赖注入?(spring依赖注入的方法)
- 2025-06-13 为java工程师准备的AI开发框架spring-ai
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)