Spring AI 是 Spring 官方社群專案,旨在簡化 Java AI 應用程式開發,讓 Java 開發者像使用 Spring 開發普通應用一樣開發 AI 應用。
Spring Cloud Alibaba AI 以 Spring AI 為基礎,並在此基礎上提供阿里雲通義系列大模型全面適配,讓使用者在 5 分鐘內開發基於通義大模型的 Java AI 應用。
Spring AI x 通義千問 Demo 已上線至 sca.aliyun.com
Spring AI 簡介
據 Spring AI 官網描述,該專案的靈感來自著名的 Python 專案,如 LangChain 和 LlamaIndex,但 Spring AI 並不是這些專案的直接複製。Spring AI 相信下一波 Generative AI 生成式應用程式將不僅面向 Python 開發人員,而且將在許多程式語言中廣泛應用。
Spring AI 的核心是提供抽象,作為開發 Java AI 應用程式的基礎,提供以下功能:
- 提供多種大模型服務對接能力,包括業界大多數主流大模型服務等;
- 支援靈活的 Prompt Template 和模型輸出解析 Output Parsing 能力;
- 支援多模態的生成式 AI 能力,如對話,文生圖、文生語音等;
- 提供通用的可移植的 API 以訪問各類模型服務和 Embedding 服務,支援同步和流式呼叫,同時也支援傳遞特定模型的定製引數;
- 支援 RAG 能力的基礎元件,包括 DocumentLoader、TextSpillter、EmobeddingClient、VectorStore 等;
- 支援 AI Spring Boot Starter 實現配置自動裝配。
Spring Cloud Alibaba AI 簡介
Spring Cloud Alibaba AI 目前基於 Spring AI 0.8.1[1]版本 API 完成通義系列大模型的接入。通義接入是基於阿里雲靈積模型服務[2],靈積模型服務建立在“模型即服務”(Model-as-a-Service,MaaS)的理念基礎之上,圍繞 AI 各領域模型,透過標準化的API提供包括模型推理、模型微調訓練在內的多種模型服務。
在當前最新版本中,Spring Cloud Alibaba AI 主要完成了幾種常見生成式模型的適配,包括對話、文生圖、文生語音等,開發者可以使用 Spring Cloud Alibaba AI 開發基於通義的聊天、圖片或語音生成 AI 應用,框架還提供 OutParser、Prompt Template、Stuff 等實用能力。
以下是當前官方提供的 Spring Cloud Alibaba AI 應用開發示例,訪問 http://sca.aliyun.com 可檢視。
- 聊天對話應用
- 文生圖應用
- 文生語音應用
- 模型輸出解析OutputParser(實現從 String 到自動 POJO 對映)
- 使用 Prompt Template
- 讓 AI 模型接入外部資料(Prompt Stuff)
體驗第一個 Spring AI 應用開發
本專案演示如何使用 spring-cloud-starter-alibaba-ai 完成一個線上聊天 AI 應用,底層使用通義千問提供的模型服務。可在此檢視完整示例原始碼[3]。
開發聊天對話應用
1. 在專案 pom.xml 中加入 2023.0.1.0 版本 Spring Cloud Alibaba 依賴:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2023.0.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-ai</artifactId>
</dependency>
</dependencies>
2. 在 application.yml 配置檔案中加入以下配置:
spring:
cloud:
ai:
tongyi:
chat:
options:
# Replace the following key with a valid API-KEY.
api-key: sk-a3d73b1709bf4a178c28ed7c8b3b5axx
3. 編寫聊天服務實現類,由 Spring AI 自動注入 ChatClient、StreamingChatClient,ChatClient 遮蔽底層通義大模型互動細節。
@Service
public class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl {
private final ChatClient chatClient;
private final StreamingChatClient streamingChatClient;
@Autowired
public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) {
this.chatClient = chatClient;
this.streamingChatClient = streamingChatClient;
}
}
4. 提供具體聊天邏輯實現
@Service
public class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl {
// ......
@Override
public String completion(String message) {
Prompt prompt = new Prompt(new UserMessage(message));
return chatClient.call(prompt).getResult().getOutput().getContent();
}
@Override
public Map<String, String> streamCompletion(String message) {
StringBuilder fullContent = new StringBuilder();
streamingChatClient.stream(new Prompt(message))
.flatMap(chatResponse -> Flux.fromIterable(chatResponse.getResults()))
.map(content -> content.getOutput().getContent())
.doOnNext(fullContent::append)
.last()
.map(lastContent -> Map.of(message, fullContent.toString()))
.block();
log.info(fullContent.toString());
return Map.of(message, fullContent.toString());
}
}
5. 編寫 Spring 入口類並啟動應用
@SpringBootApplication
public class TongYiApplication {
public static void main(String[] args) {
SpringApplication.run(TongYiApplication.class);
}
}
至此,便完成了最簡單的聊天 AI 應用開發,與普通的 Spring Boot 應用開發步驟完全一致!
驗證應用效果
啟動應用後,可透過如下兩種方式驗證應用效果。
方式一
瀏覽器位址列輸入:http://localhost:8080/ai/example
返回如下響應:
{
"Tell me a joke": "Sure, here's a classic one for you:\n\nWhy was the math book sad?\n\nBecause it had too many problems.\n\nI hope that made you smile! If you're looking for more, just let me know."
}
方式二
進入 resources/static 目錄下,使用瀏覽器開啟 index.html 檔案,輸入問題,即可獲得輸出響應(確保 api-key 有效):
申請通義API-KEY
為使示例能夠正常接入通義大模型,需要在阿里雲開通 DashScope 靈積模型服務,申請有效的 API-KEY 並更新到應用配置檔案。具體操作步驟可參見如下文件:https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key
未來規劃
當前版本 Spring Cloud Alibaba AI 主要完成了幾種常見生成式模型適配,包括對話、文生圖、文生語音等。接下來的版本中,我們將繼續完成 VectorStore、Embedding、ETL Pipeline 等更多適配,簡化 RAG 等更多 AI 應用開發場景。
相關連結:
[1] Spring AI 0.8.1
https://docs.spring.io/spring-ai/reference/0.8-SNAPSHOT/index.html
[2] 靈積模型服務
https://help.aliyun.com/zh/dashscope/
[3] 完整示例原始碼
https://github.com/alibaba/spring-cloud-alibaba/tree/2023.x/spring-cloud-alibaba-examples/spring-cloud-ai-example/src/main/java/com/alibaba/cloud/ai/example/tongyi/service/impl/helloworld
原文連結
本文為阿里雲原創內容,未經允許不得轉載。