专业的JAVA编程教程与资源

网站首页 > java教程 正文

JAVA程序员自救之路——SpringAI框架对接openai

temp10 2025-06-13 16:54:15 java教程 5 ℃ 0 评论

背景

一提到大模型,AI,第一时间都会想到python。的确,在机器学习这方面,python已经领先了很多,提供了很多模型的包。我也一直用python的LangChain框架写大模型的应用。但是相对于JAVA程序员来说,换一个语言开发,还是不太习惯。而且大多数项目还都是业务复杂的java项目,改造起来也是个麻烦事。好在Spring虽然赶了个晚集,推出了SpringAI框架。

介绍

Spring AI是一个由Spring团队开发的开源框架,旨在帮助开发者在Spring应用中轻松集成和管理AI模型。它借鉴了Python生态中LangChain等工具的设计理念,但并非简单移植,而是专注于解决Java开发者在AI集成中面临的核心难题,即如何将企业数据API与AI模型无缝连接。大白话就是说,我抄(借鉴)了LangChain,我有生态,能更好的集成融合。有点像某讯。

JAVA程序员自救之路——SpringAI框架对接openai

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的其他文章。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表