在人工智能迅猛发展的今天,作为Java程序员,我们不能停留在传统的开发模式中。AI技术正在逐步渗透到各个行业,改变着我们的工作方式和生活方式。为了在这个时代保持竞争力,Java程序员也需要拥抱AI。幸运的是,Spring提供了两款强大的框架,帮助我们快速集成AI功能,轻松将AI融入到我们的应用中。
这两个框架分别是Spring AI和Spring Cloud Alibaba AI。今天,我们就来一起了解这两个框架,看看它们如何帮助Java程序员在AI时代中脱颖而出。
1. 什么是Spring AI?
Spring AI是Spring官方社区项目,旨在简化Java AI应用程序开发,让Java开发者像使用Spring开发普通应用一样开发AI应用。
Spring AI的核心是提供抽象,作为开发Java AI应用程序的基础,提供以下功能:
提供多种大模型服务对接能力,包括业界大多数主流大模型服务等; 支持灵活的Prompt Template和模型输出解析Output Parsing能力; 支持多模态的生成式AI能力,如对话,文生图、文生语音等; 提供通用的可移植的API以访问各类模型服务和Embedding服务,支持同步和流式调用,同时也支持传递特定模型的定制参数; 支持RAG能力的基础组件,包括DocumentLoader、TextSpillter、EmobeddingClient、VectorStore 等; 支持AI Spring Boot Starter 实现配置自动装配;
2. 什么是 Spring Cloud Alibaba AI?
如果说Spring AI让你能够集成各种AI功能,那么Spring Cloud Alibaba AI则为你提供了一个更强大的平台。作为Spring Cloud Alibaba的一部分,这个框架将阿里云的强大AI服务与Spring Boot微服务架构结合起来,提供了丰富的 AI 能力。
Spring Cloud Alibaba AI 支持:
文本处理:自动摘要、情感分析、语法解析等 图像识别:图像分类、物体检测、人脸识别等 文生图:根据文本生成图片 语音识别与合成:将语音转换为文字,或者根据文字生成语音
通过Spring Cloud Alibaba AI,Java 程序员可以轻松地将阿里云的AI服务集成到自己的微服务架构中,借助云计算的强大能力,实现高效的AI应用。
3. 动手体验 Spring Cloud Alibaba AI
接下来,让我们动手使用 Spring Cloud Alibaba AI构建一个简单的AI应用。
3.1 环境准备
JDK17版本或以上 在官方申请 API-KEY,申请地址API-KEY的获取与配置 https://help.aliyun.com/zh/model-studio/developer-reference/get-api-key?spm=a2c4g.11186623.0.0.1dc57980QSfXA0
3.2 创建 Spring Boot 项目
使用 Spring Initializr 创建一个新的 Spring Boot 项目,选择需要的依赖:
spring-cloud-starter-alibaba-ai
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>
<groupId>org.example</groupId>
<artifactId>aliAI</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>aliAI</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2023.0.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-ai</artifactId>
</dependency>
</dependencies>
<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>
配置阿里云 AI 服务 在 application.yml 中配置阿里云的 API 密钥:
server:
port: 8888
spring:
cloud:
ai:
tongyi:
api-key: 官网申请的密钥
4. 对接文本模型
新建文本接口类TongYiSimpleService
public interface TongYiSimpleService {
public String completion(String message);
}
实现文本接口方法TongYiSimpleServiceImpl
@Service
public class TongYiSimpleServiceImpl implements TongYiSimpleService{
private final ChatClient chatClient;
private final StreamingChatClient streamingChatClient;
@Autowired
public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) {
this.chatClient = chatClient;
this.streamingChatClient = streamingChatClient;
}
public String completion(String message) {
Prompt prompt = new Prompt(new UserMessage(message));
return chatClient.call(prompt).getResult().getOutput().getContent();
}
}
新建一个控制器类
/**
* 聊天对话应用 单轮对话
*
* @param message
* @return
*/
@GetMapping("/example")
public String completion(@RequestParam(value = "message", defaultValue = "你好,给我讲个笑话") String message, HttpServletRequest request, HttpServletResponse response) {
String completion = tongYiSimpleService.completion(message);
return completion;
}
浏览器调用地址,测试结果
可以看到我们的聊天应用可以使用啦!
5. 文生图模型
新建文本接口类TongyiImageService
public interface TongyiImageService {
public ImageResponse genImg(String imgPrompt);
}
实现文本接口方法TongyiImageServiceImp
@Service
public class TongyiImageServiceImp implements TongyiImageService{
private static final Logger logger = LoggerFactory.getLogger(TongyiImageServiceImp.class);
private final ImageClient imageClient;
@Autowired
public TongyiImageServiceImp(ImageClient client) {
this.imageClient = client;
}
@Override
public ImageResponse genImg(String imgPrompt) {
var prompt = new ImagePrompt(imgPrompt);
return imageClient.call(prompt);
}
}
新建一个控制器类
/**
* 文生图应用
*
* @param imgPrompt
* @return
*/
@GetMapping("/img")
public String genImg(@RequestParam(value = "prompt", defaultValue = "生成一个加班的程序员") String imgPrompt) {
ImageResponse imageResponse = tongyiImageService.genImg(imgPrompt);
String url = imageResponse.getResult().getOutput().getUrl();
return url;
}
浏览器调用地址,测试结果
查看图片
这个效果还是很nice的!
6. 总结
通过本文,我们演示了如何利用这两个框架构建AI应用。无论是初学者还是有经验的开发者,都可以快速上手,借助阿里云的强大AI服务和Spring强大的开发工具,将AI融入到自己的应用中。
如果你对AI感兴趣,赶快试试这些框架,带着你的创意和热情,创造属于自己的智能应用吧!
4 个关键的 AI 趋势 | 吴恩达在 Snowflake Build 2024 上的演讲大纲 智能体(AI Agent)的5个能力级别将带我们走向何方 一文说清楚什么是AI大模型 为AI而生的向量数据库 - milvus(二) | 单机Standalone安装 人工智能小白到高手:Sentence-Transformers 一文说清楚人工智能的嵌入(Embedding)是什么 一文说清楚什么是AI Agent(智能体)
--END--