qaz 发表于 2025-2-7 00:12:10

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@Slf4jpublic 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 应用开发场景的建设。
完整的样例代码下载:
https://gitee.com/zlt2000/spring-cloud-ai-sample
页: [1]
查看完整版本: Spring Cloud Alibaba AI 入门与实践