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 应用开发场景的建设。
Spring Cloud Alibaba AI 入门与实践的更多相关文章
- Spring Cloud Alibaba(1)---入门篇
Spring Cloud Alibaba入门篇 有关微服务的一些概念的东西我这里就不再阐述了,因为之前在写Spring Cloud系列的时候都有详细写过. 具体地址: Spring Cloud系列博客 ...
- Spring Cloud Alibaba 从入门到精通(2023)
Alibaba Cloud 简介 Spring Cloud Alibaba 即 Alibaba Cloud ,基于 Spring Cloud 构建,同时封装了阿里巴巴的 Nacos.Sentinel ...
- Spring Cloud Alibaba Nacos 入门
概览 阿里巴巴在2018年7月份发布Nacos, Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.并表示在6-8个月完成到生产可用的0.8版本,目前版本是0.9版本. Na ...
- Spring Cloud Alibaba 实战(十二) - Nacos配置管理
本章主要内容是:使用Nacos管理配置以及实现配置管理的原因,配置如何管理以及动态刷新和最佳实现总结,最后是Nacos配置刷新原理解读 该技术类似于Spring Cloud Config 1 配置管理 ...
- Spring Cloud Alibaba 实战(十三) - Sleuth调用链监控
本文概要:大白话剖析调用链监控原理,然后学习Sleuth,Zipkin,然后将Sleuth整合Zipkin,最后学习Zipkin数据持久化(Elasticsearch)以及Zipkin依赖关系图 实战 ...
- Spring Cloud Alibaba 实战(十一) - Spring Cloud认证授权
欢迎关注全是干货的技术公众号:JavaEdge 本文主要内容: 如何实现用户认证与授权? 实现的三种方案,全部是通过画图的方式讲解.以及三种方案的对比 最后根据方案改造Gateway和扩展Feign ...
- Spring Cloud Alibaba(4)---Nacos(注册中心)
Nacos(注册中心) 有关Spring Cloud Alibaba之前写过三篇文章. Spring Cloud Alibaba(1)---入门篇 Spring Cloud Alibaba(2)--- ...
- Spring Cloud Alibaba(5)---Nacos(配置中心)
Nacos(配置中心) 有关Spring Cloud Alibaba之前写过四篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring C ...
- Spring Cloud Alibaba(8)---Feign服务调用
Feign服务调用 有关Spring Cloud Alibaba之前写过五篇文章,这篇也是在上面项目的基础上进行开发. Spring Cloud Alibaba(1)---入门篇 Spring Clo ...
- Spring Cloud Alibaba入门实战之nacos(一)
Spring Cloud Alibaba入门实战之nacos(一) 前情介绍 Spring Cloud Alibaba 是阿里巴巴提供的新一代的微服务解决方案,相信会有越来越多采用微服务架构的公司 ...
随机推荐
- 【速记】C++ STL自定义排序
因为是"速记",难免会有不完善的地方.这篇笔记咱日后应该还会进行补充. 关于sort的比较函数 void sort( RandomIt first, RandomIt last, ...
- 工作中的技术总结_Thymeleaf插件_关于th:if 、th:with、th:replace和th:fragment的一些事 _20210825
工作中的技术总结_Thymeleaf _20210825 1.值取为空的情况:不能使用 th:if 进行条件渲染(因为是伪条件渲染,不管怎样元素都是先渲染到DOM再决定是否显示:个人这么认为不一定准确 ...
- 小程序框架开发笔记-wepy
WePY 一.前置 本地使用版本V1.7.3最新版本V2.x 二.使用 export class App extends wepy.app {} 小程序入口,App基类 wepy ...
- C#-公众号H5页面授权获取用户code、openid、unionid
一:配置信息 公众号设置: 1:设置 IP白名单(所在的服务器ip).记录公众号APPID和APPsecret; 2:设置 网页授权域名; 二:页面授权----[html中获取code] 1:页面引入 ...
- python SQLAlchemy 查询慢sql
1.config文件添加如下配置 FLASKY_DB_QUERY_TIMEOUT = 0.1 # 设置sql执行超时时间 0.1s SQLALCHEMY_RECORD_QUERIES = True # ...
- 使用JAVA建立稳定的多线程服务器
侯光敏 (wearebug@etang.com), 简介: 本文详细的介绍了使用Java语言建立一套多线程服务器的过程,该服务器使用对象传递消息,在线程中使用队列机制,使服务器的性能大大提高了.这套服 ...
- python之typing
typing介绍 Python是一门动态语言,很多时候我们可能不清楚函数参数类型或者返回值类型,很有可能导致一些类型没有指定方法,在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参 ...
- 移动端NES网页模拟器(2)
前言 前面的章节已经封装了一个NES的虚拟按钮,这个章节来封装他的方向键. 在一些NES网页网页模拟器中,方向键要么使用按钮模式,要么使用摇杆模式,各有不足.例如按钮模式无法滑动,用户点了半天才知道点 ...
- C++中的多线程及其之后的周边
多线程 参考:https://zhuanlan.zhihu.com/p/613630658 平台差异:Linux 与 Windows,跨平台方案 在Linux上,有pthread的使用,而C++ 11 ...
- 借助AI助手快速解析LlamaIndex的Workflow设计与Java迁移
在前面的讨论中,我们通过AI助手快速浏览并分析了LlamaIndex的核心源码及其可视化部分.在上次的工作中,我们已基本完成了使用Java版本实现的可视化部分,尽管在工作流(workflow)的分析上 ...