面試官:談?wù)剬pringAI的理解?
Spring AI 已經(jīng)發(fā)布了好長時間了,目前已經(jīng)更新到 1.0 版本了,所以身為 Java 程序員的你,如果還對 Spring AI 一點都不了解的話,那就有點太落伍了。
言歸正傳,那什么是 Spring AI?如何快速進行 Spring AI 開發(fā)呢?
1.什么是Spring AI?
Spring AI 是 Spring 官方社區(qū)項目,旨在簡化 Java AI 應(yīng)用程序開發(fā),讓 Java 開發(fā)者像使用 Spring 開發(fā)普通應(yīng)用一樣開發(fā) AI 應(yīng)用。
Spring 官方對于 Spring AI 的定義是這樣的:
Spring AI is an application framework for AI engineering. Its goal is to apply to the AI domain Spring ecosystem design principles such as portability and modular design and promote using POJOs as the building blocks of an application to the AI domain.
翻譯一下,Spring AI 是 AI 工程的應(yīng)用框架。其目標是將 Spring 生態(tài)系統(tǒng)設(shè)計原則(如可移植性和模塊化設(shè)計)應(yīng)用于 AI,并推廣使用 POJO 作為 AI 領(lǐng)域應(yīng)用程序的構(gòu)建塊。
什么意思呢?簡單來說,Spring AI 就是讓 Java 開發(fā)者,像開發(fā) Spring 普通應(yīng)用一樣開發(fā) AI 應(yīng)用。
注意:Spring AI 不是幫你構(gòu)建一個大模型,而是讓你方便的對接各種大模型。
Spring AI 官方文檔:https://spring.io/projects/spring-ai
2.Spring AI有什么功能?
Spring AI 目前可以實現(xiàn)以下功能(后續(xù)還會支持更多功能):
- 智能聊天
- 文本轉(zhuǎn)圖片
- 音頻和文本互轉(zhuǎn)
Spring AI 支持的大模型有以下這些(后續(xù)還會支持更多大模型):
3.Spring AI快速上手
Spring AI 開發(fā)步驟主要有以下幾步:
- 創(chuàng)建 Spring Boot 項目,并添加模型依賴;
- 配置模型的連接地址和秘鑰;
- 使用模型提供的對象和方法,實現(xiàn)功能調(diào)用。
具體操作如下。
(1)添加模型依賴
首先,先創(chuàng)建一個 Spring Boot 項目(最低 Java 版本為 JDK 17),并添加 AI 模型依賴(以 OpenAI 為例演示),如下圖所示:
(2)配置模型參數(shù)
OpenAI 至少要配置兩個參數(shù):模型的接口訪問地址和模型的秘鑰信息,如下配置所示:
spring:
ai:
openai:
base-url: https://api.openai.com
api-key: sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
如何獲取 OpenAI 的 api-key?
答:可以去某寶,搜索“API Key”花幾毛錢就可以買一個 key,調(diào)用上千次。
(3)調(diào)用模型方法
以 AI 聊天為例,當我們操作 OpenAI 的時候,可以通過 OpenAiChatModel 對象的 call(String msg) 進行聊天功能的實現(xiàn),具體實現(xiàn)代碼如下:
import jakarta.annotation.Resource;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/openai")
public class OpenAIController {
@Resource
private OpenAiChatModel chatModel;
// 生成一個普通方法
@RequestMapping("/test")
public String test(String msg) {
if (!StringUtils.hasLength(msg)) {
return "請先輸入信息!";
}
return chatModel.call(msg);
}
}
以上代碼的執(zhí)行效果如下:
當然,除了聊天功能之外,我們還可以實現(xiàn)生成圖片、音頻和文本的互相轉(zhuǎn)換等功能,這里就不一一演示了,大家可以去官網(wǎng)查看更多示例代碼:https://docs.spring.io/spring-ai/reference/1.0/api/index.html。