Spring Cloud Alibaba AI 入門與實踐

一、概述

Spring AISpring 官方社區(qū)項目,旨在簡化 Java AI 應(yīng)用程序開發(fā),讓 Java 開發(fā)者像使用 Spring 開發(fā)普通應(yīng)用一樣開發(fā) AI 應(yīng)用。

Spring Cloud Alibaba AI 是一個將 Spring Cloud 微服務(wù)生態(tài)與阿里巴巴 AI 能力無縫集成的框架,幫助開發(fā)者快速構(gòu)建具備 AI 功能的現(xiàn)代化應(yīng)用。本文將介紹 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一個 在線聊天在線畫圖AI 應(yīng)用。

?

二、主要特性和功能

Spring Cloud Alibaba AI 目前基于 Spring AI 0.8.1 版本 API 完成通義系列大模型的接入。通義接入是基于阿里云 阿里云百煉 服務(wù);而 阿里云百煉 建立在 模型即服務(wù)(MaaS) 的理念基礎(chǔ)之上,圍繞 AI 各領(lǐng)域模型,通過標(biāo)準(zhǔn)化的 API 提供包括模型推理、模型微調(diào)訓(xùn)練在內(nèi)的多種模型服務(wù)。

主要提供以下核心功能:

2.1. 簡單易用的集成

通過 Spring Boot 風(fēng)格的自動配置機(jī)制,開發(fā)者只需少量代碼配置,即可快速接入阿里云的 AI 服務(wù)。

2.2. 豐富的 AI 服務(wù)支持

支持以下核心能力:

  • 自然語言處理(NLP):文本分析、智能問答、翻譯。
  • 計算機(jī)視覺(CV):圖像生成、圖像識別、目標(biāo)檢測。
  • 語音處理:語音識別、語音合成。
  • 數(shù)據(jù)分析與預(yù)測:數(shù)據(jù)建模、趨勢分析。

2.3. 高度擴(kuò)展性

通過配置中心和注冊中心(如 Nacos)實現(xiàn)動態(tài)擴(kuò)展,支持微服務(wù)架構(gòu)的擴(kuò)展需求。
提供接口定義,方便接入第三方 AI 平臺。

?

三、構(gòu)建 AI 應(yīng)用

Spring Cloud Alibaba AI 對 Java 版本有要求,所以需要提前預(yù)裝好 Java 17 環(huán)境。

3.1. 申請 API-KEY

登錄阿里云,進(jìn)入 阿里云百煉 的頁面:

https://bailian.console.aliyun.com/?apiKey=1#/api-key

創(chuàng)建自己的 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 的相關(guān)屬性,包括服務(wù)器地址、認(rèn)證信息等。

spring:
  cloud:
    ai:
      tongyi:
        connection:
          api-key: sk-xxxxxx
  • api-key 配置在阿里云百煉里申請的api-key

3.4. 創(chuàng)建模型調(diào)用服務(wù)

@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();
    }
}

聊天和圖片的服務(wù),分別通過注入 TongYiChatModelTongYiImagesModel 對象來實現(xiàn),屏蔽底層通義大模型交互細(xì)節(jié)。

3.5. 創(chuàng)建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. 搭配聊天頁面

四、總結(jié)

當(dāng)前版本的 Spring Cloud Alibaba AI 主要完成了幾種常見生成式模型的適配,涵蓋對話、文生圖、文生語音等。在未來的版本中將繼續(xù)推進(jìn) VectorStore、Embedding、ETL PipelineRAG 等更多 AI 應(yīng)用開發(fā)場景的建設(shè)。

完整的樣例代碼下載:
https://gitee.com/zlt2000/spring-cloud-ai-sample

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容