Spring Ai 如何配置以及如何搭建
解釋什么是Spring ai
首先,我們用Spring ai 其實不是去了解他的LLM,以及底層用的一些東西,Spring AI,提供給我們的其實是對各種大模型快速調用,提供了大模型API的作用,Spring AI 的核心定位是提供對大模型的標準化調用接口和集成工具,而非訓練自有模型或直接管理知識庫。它的主要目標是簡化AI能力在Java應用中的接入流程,通過抽象化和模塊化設計,讓開發者能快速對接多種大模型服務。
前期工作
首先我們要加入spring ai 的依賴,如果你用的是Maven,就加入如下配置:這里為什么要單獨對spring-ai-core這個進行版本的限定,因為你可能之前引入過Spring ai ,所以為了避免版本不一致,后期我主動在倉庫刪掉了不一致的版本,不想刪的可以顯示指定。如下
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId><version>1.0.0</version></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-core</artifactId><version>1.0.0</version></dependency>
目前大家應該都用的是阿里的倉庫,但是現在配了阿里的倉庫好像還是不能下載,具體可能每個人的環境不同,不能下載的通過如下路徑,到阿里倉庫搜索上面的依賴下載:
https://maven.aliyun.com/
然后放到你自己本地的Maven倉庫,也不用什么命令。直接打開你的倉庫,路徑為如下,點進去看見這兩個文件了注意我的是在D盤:D:\repository\org\springframework\experimental\ai
引入之后,就直接創建一個Controller就可以了代碼如下:特別注意的是不同版本的AI實現不同,具體大家有用不同的版本可以自己搜索。1.0.0這個版本如下:
private final ChatClient chatClient; // 直接注入具體實現public TestController(ChatClient.Builder chatClientBuilder) {this.chatClient = chatClientBuilder.build();}@GetMapping("/chat")public String callAi(@RequestParam String message){return chatClient.prompt().user(message) // 設置用戶消息.call() // 執行調用.content(); // 獲取響應內容}
代碼簡單的調用就完成了。下面是我們的配置,如果你要調用ChatGpt,那么就得配置Gpt的key,這個和阿里大模型,通義千問(Qwen)類似,一樣得配置key
在yml中或者是你自己項目里面的配置文件中添加如下配置:api-key就是Key,base-url是代理網址
springai:openai:# OpenAI keyapi-key: base-url: # 添加超時配置chat:options:model: gpt-3.5-turbo # 默認模型temperature: 0.7 # 控制生成隨機性
在這里插入代碼片
到此Spring ai 就配置完了。感謝大家的閱讀,謝謝,本篇博客就是在幫大家快速搭建環境,細節東西后續更新
關于大家為啥創建了chatClient報紅,說沒有這個Bean的錯誤,那是因為你引入的依賴版本不對,把你的包路徑鼠標點進去,你大概率會發現,雖然你依賴里面引入了,但是還是用的舊版本,情況一這個原因大概率就是idea緩存還是指向了舊的版本。情況二是因為你之前引入了別的版本,手動修改之后,多個版本在你的Libraries中,你可以手動將別的版本刪掉,或者清理緩存,或者是將你類中的import全部刪掉,手動引入對應版本的jar包。下面這一行會報錯!!!
private final ChatClient chatClient;
還有的是會報ChatClient.Builder,沒有Builder這個方法,也是因為上面這個原因,版本的原因。
public TestController(ChatClient.Builder chatClientBuilder) {this.chatClient = chatClientBuilder.build();}
具體我們看源碼,1.0.0這個版本就是bulider,采用了建造者模式和分層初始化的思想
我們看第一個create
最簡創建創建調用(隱藏觀測系統細節)
第二個create
允許自定義觀測系統
建造者模式的應用
static Builder builder(ChatModel chatModel) {return builder(chatModel, ObservationRegistry.NOOP, null);
}static Builder builder(/*全參數*/) {return new DefaultChatClientBuilder(chatModel, registry, convention);
}
為什么Spring要這么設計?
延遲初始化:
Builder 允許在構建時(build()調用時)才真正創建客戶端
避免在Spring容器啟動階段立即連接AI服務
代替方案
// 替代方案(不推薦)
public TestController(ChatClient chatClient) {this.chatClient = chatClient;
}