- 😃作者简介:前阿里淘天、现字节跳动高级 Java 开发工程师- 💻称 号:CSDN 博客专家✨、阿里云博客专家🌟- 🔍公众号:云服务小管家。免费💡的阿里云服务器☁ 和云环境直接使用- 💪生活:专注于后端技术分享🎓迷茫时可来瞅瞅码农轨迹🚶♂️- 📋服务:提供模拟面试和简历辅导,提供生产项目。📩内推可私信✉- 💬卷卷群:可以和大家一起学习,一起进步👀- 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
前言
大型语言模型如GPT具备强大的智能能力,可以进行智能对话和自然语言处理。然而,将其应用到实际开发中存在挑战。通过将SpringBoot与Spring AI结合,开发者可以更轻松地构建智能化应用程序,充分发挥大模型的优势,加速应用的创新与发展,驱动智能革命向前迈进。
Spring AI介绍
Spring AI 是类似于SpringMVC的一个模块,是一个用于AI工程的应用框架。它的目标是将Spring生态系统的设计原则(如可移植性和模块化设计)应用于AI领域,并推广在AI领域使用POJOs作为应用程序的构建块。
- 官方地址:https://spring.io/projects/spring-ai
- 文档地址:https://docs.spring.io/spring-ai/reference/
当然支持很多模型,包括但不限制与GPT。
项目实践
这篇文章将使用SpringBoot整合Spring AI来实现文生图、图生文、视频生文等功能。
准备工作
- JDK17、 IDEA、Maven
链接:https://pan.baidu.com/s/19EZ1VHO2HRUv8eEB-R0ZIA
提取码:e8w2
注意事项:百度网盘密码失效加UP【CHAI956056312】
- OpenAI的key 【OR】5米买一个key
5米买一个key:https://gitaigc.com/token
- 能上网
不会上网的可以加UP【CHAI956056312】
构建项目
本文使用的版本如下:
IDEA2024.1、JDK17、Maven3.9.6、SpringBoot3.2.5、SpringAI1.0.0-SNAPSHOT
项目源码:https://gitee.com/cbeann/spring-ai-demo
GPT-KEY获取
我这里是通过花钱的方式解决的,上面其实也提到过https://gitaigc.com/这个网站,支持很多模型。最少买5块钱的,如果想自测几次可以加【CHAI956056312】获取免费的KEY。后面会用到。
导入依赖并下载
首先构建一个SpingBoot的web项目,然后导入SpringAi的POM依赖
<dependencyManagement><dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-bom</artifactId><version>1.0.0-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
在POM文件中添加下载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>--><!-- </repositories>--><!--上面的repositories下载不下来的话,再用下面的2024.5.12--><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>
文生文
写一个调用的接口
import jakarta.annotation.Resource;
import org.springframework.ai.openai.OpenAiChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class Text2TextAIController {@Resourceprivate OpenAiChatClient chatClient;//http://localhost:24512/ai/text?ask=北京有几个区@GetMapping("/ai/text")public String topCodeLanguage(@RequestParam("ask") String ask){System.out.println(chatClient.call(ask));return chatClient.call(ask);}
}
需要添加配置文件,指定GPT的KEY和文生文交互的模型
server.port=24512spring.application.name=springA##### GPT的地址和KEY
# https://gitaigc.com/token
spring.ai.openai.api-key=sk-xxxxxx[上面获得的key,如果想试几次可以加CHAI956056312]
spring.ai.openai.base-url=https://gitaigc.com
##### text to text
##模型
spring.ai.openai.chat.options.model=gpt-3.5-turbo
##准确度
spring.ai.openai.chat.options.temperature=0.4F
在浏览器中输入
http://localhost:24512/ai/text?ask=北京有几个区
就会出现如下所示的结果
文生图
写一个调用的接口
import jakarta.annotation.Resource;
import org.springframework.ai.image.ImagePrompt;
import org.springframework.ai.image.ImageResponse;
import org.springframework.ai.openai.OpenAiImageClient;
import org.springframework.ai.openai.OpenAiImageOptions;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;/*** @auther CBeann* @create 2024-05-18 16:06*/
@RestController
public class Text2ImageOpenAIController
{@Resourceprivate OpenAiImageClient openAiImageClient;@GetMapping(value = "/ai/imagev1")public Object imageV1(@RequestParam(value = "msg",defaultValue = "苹果") String msg){ImageResponse imageResponse = openAiImageClient.call(new ImagePrompt(msg));System.out.println("------imageResponse: "+imageResponse);return imageResponse.getResult().getOutput();}/*** 下面是代码,会失败,如果模型支持,那下面代码会成功* @param msg* @return*/@GetMapping(value = "/ai/imagev2")public Object imageV2(@RequestParam(value = "msg",defaultValue = "苹果") String msg){ImageResponse imageResponse = openAiImageClient.call(new ImagePrompt(msg,OpenAiImageOptions.builder().withQuality("hd") //高清图.withN(1) //生成1张.withHeight(10) //高.withWidth(1024) //宽.build()));System.out.println("------imageResponse: "+imageResponse);return imageResponse.getResult().getOutput();}
}
需要添加配置文件,指定GPT的KEY和文生文交互的模型
# text to image dall-e-3
spring.ai.openai.image.options.model=dall-e-3
视频生文
https://gitee.com/cbeann/spring-ai-demo 下个源码自己跑看
其它碎碎语
- 对于Java开发工程师来说,会使用API和Promte提示词即可。不要嘲笑调接口,谁不是呢。
- 新的风口已经出现,你可以不卷,但是不能不学,因为别人学了那就显得你无知了。
- 😃作者简介:前阿里淘天、现字节跳动高级 Java 开发工程师- 💻称 号:CSDN 博客专家✨、阿里云博客专家🌟- 🔍公众号:云服务小管家。免费💡的阿里云服务器☁ 和云环境直接使用- 💪生活:专注于后端技术分享🎓迷茫时可来瞅瞅码农轨迹🚶♂️- 📋服务:提供模拟面试和简历辅导,提供生产项目。📩内推可私信✉- 💬卷卷群:可以和大家一起学习,一起进步👀- 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦