一、概述

Spring AI

Spring
官方社区项目,旨在简化
Java AI
应用程序开发,让
Java
开发者像使用
Spring
开发普通应用一样开发
AI
应用。

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
应用开发场景的建设。

完整的样例代码下载:
https://gitee.com/zlt2000/spring-cloud-ai-sample

标签: none

添加新评论