Spring Cloud Alibaba AI 入门与实践
一、概述
Spring AI
是
Spring
官方社区项目,旨在简化
Java AI
应用程序开发,让
Java
开发者像使用
Spring
开发普通应用一样开发
AI
应用。
- 可参考文章《
SpringAI:Java 开发的智能新利器
》
Spring Cloud Alibaba AI
是一个将
Spring Cloud
微服务生态与阿里巴巴
AI
能力无缝集成的框架,帮助开发者快速构建具备
AI
功能的现代化应用。本文将介绍
Spring Cloud Alibaba AI
的基本概念、主要特性和功能,并演示如何完成一个
在线聊天
和
在线画图
的
AI
应用。
二、主要特性和功能
Spring Cloud Alibaba AI
目前基于
Spring AI 0.8.1
版本 API 完成通义系列大模型的接入。通义接入是基于阿里云
阿里云百炼
服务;而
阿里云百炼
建立在
模型即服务(MaaS)
的理念基础之上,围绕
AI
各领域模型,通过标准化的
API
提供包括模型推理、模型微调训练在内的多种模型服务。
主要提供以下核心功能:
2.1. 简单易用的集成
通过
Spring Boot
风格的自动配置机制,开发者只需少量代码配置,即可快速接入阿里云的
AI
服务。
2.2. 丰富的 AI 服务支持
支持以下核心能力:
- 自然语言处理(NLP)
:文本分析、智能问答、翻译。 - 计算机视觉(CV)
:图像生成、图像识别、目标检测。 - 语音处理
:语音识别、语音合成。 - 数据分析与预测
:数据建模、趋势分析。
2.3. 高度扩展性
通过配置中心和注册中心(如 Nacos)实现动态扩展,支持微服务架构的扩展需求。
提供接口定义,方便接入第三方
AI
平台。
三、构建 AI 应用
Spring Cloud Alibaba AI 对 Java 版本有要求,所以需要提前预装好 Java 17 环境。
3.1. 申请 API-KEY
登录阿里云,进入
阿里云百炼
的页面:
https://bailian.console.aliyun.com/?apiKey=1#/api-key
创建自己的
API-KEY
3.2. 添加依赖
在
Spring Boot
项目的
pom.xml
中添加
alibaba-ai
依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-ai</artifactId>
</dependency>
<repositories>
<repository>
<id>alimaven</id>
<url>https://maven.aliyun.com/repository/public</url>
</repository>
<repository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
3.3. 配置 API-KEY
在
application.yml
中配置 Kafka 的相关属性,包括服务器地址、认证信息等。
spring:
cloud:
ai:
tongyi:
connection:
api-key: sk-xxxxxx
api-key
配置在阿里云百炼里申请的api-key
3.4. 创建模型调用服务
@Service
@Slf4j
public class TongYiSimpleService {
@Resource
private TongYiChatModel chatClient;
@Resource
private TongYiImagesModel imageClient;
public String chat(String message) {
Prompt prompt = new Prompt(new UserMessage(message));
return chatClient.call(prompt).getResult().getOutput().getContent();
}
public String image(String message) {
ImagePrompt prompt = new ImagePrompt(message);
Image image = imageClient.call(prompt).getResult().getOutput();
return image.getB64Json();
}
}
聊天和图片的服务,分别通过注入
TongYiChatModel
和
TongYiImagesModel
对象来实现,屏蔽底层通义大模型交互细节。
3.5. 创建controller
@RestController
@RequestMapping("/ai")
public class TongYiController {
@Resource
private TongYiSimpleService tongYiSimpleService;
@GetMapping("/chat")
public String chat(@RequestParam(value = "message") String message) {
return tongYiSimpleService.chat(message);
}
@GetMapping("/image")
public ResponseEntity<byte[]> image(@RequestParam(value = "message") String message) {
String b64Str = tongYiSimpleService.image(message);
byte[] imageBytes = Base64.getDecoder().decode(b64Str);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_JPEG);
return new ResponseEntity<>(imageBytes, headers, HttpStatus.OK);
}
}
3.6. 测试效果
3.6.1. 聊天接口
在浏览器输入:
http://localhost:8009/ai/chat?message=你是谁
3.6.2. 图片接口
在浏览器输入:
http://localhost:8009/ai/image?message=意大利面拌42号混凝土
3.6.3. 搭配聊天页面
四、总结
当前版本的
Spring Cloud Alibaba AI
主要完成了几种常见生成式模型的适配,涵盖对话、文生图、文生语音等。在未来的版本中将继续推进
VectorStore
、
Embedding
、
ETL Pipeline
、
RAG
等更多
AI
应用开发场景的建设。