重磅發布!AI 驅動的 Java 開發框架:Spring AI Alibaba

*本文作者系阿里云云原生微服務技術負責人,Spring AI Alibaba 發起人彥林,望陶和隆基對可觀測和 RocketMQ 部分內容亦有貢獻。
*

摘要

隨著生成式 AI 的快速發展,基于 AI 開發框架構建 AI 應用的訴求迅速增長,涌現出了包括 LangChain、LlamaIndex 等開發框架,但大部分框架只提供了 Python 語言的實現。但這些開發框架對于國內習慣了 Spring 開發范式的 Java 開發者而言,并非十分友好和絲滑。

因此,我們基于 Spring AI 發布并快速演進 Spring AI Alibaba,通過提供一種方便的 API 抽象,幫助 Java 開發者簡化 AI 應用的開發。同時,提供了完整的開源配套,包括可觀測、網關、消息隊列、配置中心等。

應用框架發展趨勢

應用架構歷經了單體架構、LAMP 架構、SOA 架構、微服務架構、云原生架構。

下圖左邊是典型的云原生應用架構,采用了容器 、微服務和聲明式 API 技術。其中,微服務按照業務模塊進行拆分,架構做無狀態改造,將存儲下沉到數據庫;微服務跑在容器上進行按量伸縮,從而把研發效率和運維發揮到極致。

右圖的 AI 原生應用架構,則是基于大模型(大腦),Agent 驅動(手腳)進行構建。其中,Agent 有三個架構原則:

  • API First,開放協同: OpenAI 作為全球最大售賣 API 公司,通過 API 快速構建了生態和營收,加速創新,大模型企業無不例外通過 API 來向外提供服務。
  • 事件驅動,提升吞吐: 不同于經典應用,大模型處理速度慢,長鏈接流式推送消耗大,因此需要消息解耦,提升吞吐。
  • AIOps,一鍵診斷: 相比經典應用,大模型失敗率更高,定位難度更大,因此需要更智能的診斷工具。

AI Agent 框架發展趨勢

AI Agent 的發展大致可以分為以下 3 個階段:

  • 第一階段:2022 年 ,ChatGPT 3.0 發布,震驚世界,但是當時數據幻覺,數據質量,數據格式問題非常多,很快行業推出了 LangChain 試圖來解決這些問題;但是隨著模型能力的增強,原有的問題逐步得到解決,但是由于大模型迭代迅速,Langchain 的過度封裝,反而沒有減少工程師們的代碼量,額外帶來了復雜度。
  • 第二階段:2023 年,隨著 ChatGPT 4.0 / LIama 3.0 / Qwen 2.5 的推出,模型能力進一步提升,早期提示詞的價值逐步弱化,LlamaIndex 因其更簡單的體系抽象,更加符合當前的需求。
  • 第三階段:2024 年,隨著多模態發展,模型能力持續突破,在過去的兩年框架以 Python 為主,但是對于中國 42.9% 的 Java 開發者會選擇是什么來構建 AI 應用呢?寫 Python?寫 Java 版 Langchain / LlamaIndex ?還是基于 Spring 體系進行構建?

Spring AI Alibaba?重磅發布

隨著生成式 AI 的快速發展,基于 AI 開發框架構建 AI 應用的訴求迅速增長,涌現出了包括 LangChain、LlamaIndex 等開發框架,它們為 Python 開發者提供了方便的 API 抽象。但這些開發框架對于國內習慣了 Spring 開發范式的 Java 開發者而言,并非十分友好和絲滑。因此,我們基于 Spring AI 發布并快速演進 Spring AI Alibaba,通過提供一種方便的 API 抽象,幫助 Java 開發者簡化 AI 應用的開發,一步邁入 AI 原生時代。

同時,我們發布了配套組件,更完整的幫助 Java 開發者簡化 AI 應用的開發。

  • Higress:作為 AI 網關,支持多模型適配、流式輸出、請求/Tokens 限流防護、長連接無損熱更新,支持最小請求數負載均衡,并借助豐富的 AI 插件,幫助開發者零代碼構建 AI 應用,守住安全合規底線。
  • OTel:基于開源 Open Telemetry Python SDK 進行了擴展,發布可觀測探針,為 GenAI 應用可觀測而生,能自動獲取大模型調用各個階段的數據,全面提升 LLM 應用的可觀測性。
  • Apache RocketMQ:支持主動 POP 消費模式,自適應負載均衡,動態消費超時時長,適應不同算力消耗的請求,實時數據驅動 RAG 架構,提升吞吐量和實時性。
  • Nacos Python SDK:提升靈活性,動態調整提示詞模版、算法、相關度等參數。

這一套開源矩陣具備“自用、開源、商業”三位一體的優勢,包括:

  • 阿里內部大規模驗證,通義 / PAI / 百煉長期打磨。
  • 具備完整的生態和組件,覆蓋應用開發的主鏈路。
  • 支持主流大模型,低代碼、甚至無代碼構建企業級 AI 應用。
  • 深度集成阿里云百煉、云原生應用開發平臺 CAP,開箱即用。

Spring AI Alibaba 已完整提供 Model、Prompt、RAG、Tools 等 AI 應用開發所需的必備能力,將兼具提示詞模板、函數調用、格式化輸出等低層次抽象,以及 RAG、智能體、對話記憶等高層次抽象。

項目地址:https://github.com/alibaba/spring-ai-alibaba

Higress:零代碼構建 AI 應用

我們可以很快構建 AI 應用,但是如何確保上線后不出問題呢?

  • 相比 Web 應用,LLM 應用的內容生成時間更長,對話連續性對用戶體驗至關重要,如何避免后端插件更新導致的服務中斷?Higress 使用 Envoy 作為數據面,對網關配置、和連接無關的配置做了合理抽象,并通過 WASM 插件形式實現了熱更新,避免后端插件更新導致的服務中斷。
  • 相比傳統 Web 應用,LLM 應用在服務端處理單個請求的資源消耗會大幅超過客戶端,來自客戶端的攻擊成本更低,后端的資源開銷更大,如何加固后端架構穩定性?Higress 提供了 Token 流控能力,并且集成 WAF 插件,在入口建立安全防線。
  • 不同于傳統 Web 應用基于信息的匹配關系,LLM 應用生成的內容則是基于人工智能推理,如果保障生產內容的合規和安全?例如近期有兩家公司因為內容合規問題導致股市大跌,Higress 通過濾網插件,幫助用戶在流量入口處守住了合規底線。
  • 當接入多個大模型 API 時,如何屏蔽不同模型廠商 API 的調用差異,來提升單一大模型的調用失敗率?Higress 提供了 AI Proxy 插件,構建高可用 AI 服務,如通義 2.5 失敗,Failover 到通義 2.0;或者自建大模型失敗,Failover 到通義模型等。

此外,為了解決 RT 問題,Higress 在入口構建緩存(對接 Redis),RAG 能力(對接向量數據庫),降低 RT,降低了大模型的調用成本。

OTel:提升大模型應用可觀測性

大模型失敗率較高,數據幻覺需要檢測,對輸出進行評估等。為了解決這個挑戰,我們基于 OTel Python 探針構建了阿里云 OTel python 發行版,增加了常見的大模型的埋點,以更好的觀測和大模型的交互過程,預計在 9 月正式上線。

在構建的過程中我們也看到 OTel 社區正在討論中的 GenAI 語義約定,因此我們的發行版也嚴格的遵循了最新 GenAI 語義約定,同時支持了常見的大模型框架例如 LlamaIndex,Langchain,PromtFlow 以及通義千問 2,OpenAI 等大模型。

在社區 GenAI 規范的基礎上,我們還增加了額外的精細化的埋點和 Attribute,能夠觀測到更加細節的交互過程,包括支持 session_id 在多個 traceId 之前進行傳播,以方便在一個會話中關聯多個調用鏈。有了這些埋點之后,客戶可以方便的在專屬大模型視圖中查看與大模型交互的信息,包括各種 RAG 的過程,調用大模型的入參出參,消耗的 token 等等,這些增強我們也計劃貢獻給社區。

Nacos:提升 Agent 靈活性

模型上線后,我們為了不斷提升效果,需要不斷優化各種參數和配置。傳統做法是改一個參數就重啟發布一次;這樣效率低下,且發布對業務業務流量有損。

因此,我們把提示詞模版/相關的參數存儲在在 Nacos 配置中心,通過動態配置可以實時修改,無需重啟就能發布應用;為了滿足安全合規要求,把對大模型調用過程中定義的脫敏規則、密鑰,以及數據源外置到 Nacos 配置中心;最后,為了提升模型的穩定性,需要做好 A/B 測試,可以把模型版本、參數、流控規則,也存儲在 Nacos 配置中心。可見,通過 Nacos 可以大幅提升 Agent 的靈活性。

Apache RocketMQ:提升 AI 應用吞吐量和實時性

在推理場景,私域數據向量化后,提供給 AI 應用搜索增強,但是這個模式私域數據不能及時更新,為了提升整體鏈路實時性,可以通過事件流集成關鍵事件,實時 Embedding 向量數據庫、更新私有數據存儲,全面提升 AI 應用實時性、個性化和準確度。

AI 原生應用請求往往耗時過久,全面采用同步調用會使得系統性能急劇惡化,響應慢,影響客戶體驗。通過引入RocketMQ 事件驅動架構、解耦快慢服務,能顯著提升性能和體驗。面臨 AI 應用請求耗時方差大,資源消耗不均勻的特點,RocketMQ 支持主動 Pop 消費模式,動態消費超時時長,能夠實時結合模型實例負載和推理請求特點,自適應負載均衡。

Java AI 開發框架的落地&實踐

相信通過上面的介紹,大家對于構建生成式 AI 應用已經躍躍欲試了,但是選擇哪些場景投入產出比較高呢?下面簡單分享一下我們的思路。

AI 落地場景

是不是所有的業務都能用 AI 解決呢?目前看不是的。那 AI 適合做什么場景呢?目前看,適合容錯性高、結構化強的場景。

我們在做開源社區的時候發現社區的 Issue 非常多,但是無法響應開發者需求,因此我們想如果構建一個 AI 答疑專家,幫助開發者解決場景問題,構建新型開源社區協作模式,這個就非常有價值。

因此我們落地第一個場景是 AI 答疑專家,解決開源社區答疑問題,提升開源社區活躍度。

AI 技術選型

我們在技術上有三個技術選型 :Prompt / RAG / 微調。

  • Prompt:效果略有提升,但是不能帶來本質改變;
  • 微調:成本比較高,我們的數據還不斷迭代過程中無法承受;
  • RAG:無論是成本、效果,還是可持續迭代性,都是目前最高投入產出比模式,因此我們采用了 RAG 為主的技術方案。

AI 應用實踐

AI 答疑專家-實踐

AI 答疑專家基于百煉的通義 2.5 模型,將開源文檔、電子書、常見問題灌入百煉數據中心,進行了向量化;通過 Spring AI Alibaba 對接通義模型和 RAG 能力,搜索到了 TOP3 的相關度信息,進行壓縮提煉。并通過 Higress 將服務發布到開源官網和釘釘機器人,在入口構建安全合規防線。最后通過 AI 答疑專家不斷與開發者溝通,收集反饋。通過 Chat-Admin 處理反饋差的信息,補充文檔,優化數據。

AI 答疑專家-落地效果

落地效果非常顯著,開源官網的流量提升了 20%,人工答疑成本降低 20%,準確率可達 90%+,并且完成了私域數據、AI 專家反饋機制、人工訂正的正循環。

AI 答疑專家-AIPaaS 雛形

最后我們構建了 AI 行業專家解決方案,沉淀了 AIPaaS 的雛形,以模型未核心,Agent 驅動,充分挖掘私域數據,打造行業 AI 專家!

未來,我們將提供 Spring AI Alibaba 和阿里巴巴整體開源生態的深度適配,包括 Prompt Template 管理、事件驅動的 AI 應用程序、更多 Vector Database 支持、函數計算等部署模式、可觀測性建設、AI 代理節點開發能力,如綠網、限流、多模型切換和開發者工具集,旨在構建業內最完整的 AI 驅動的 Java 開發框架生態。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895178.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895178.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895178.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

防御保護作業二

拓撲圖 需求 需求一: 需求二: 需求三: 需求四: 需求五: 需求六: 需求七: 需求分析 1.按照要求進行設備IP地址的配置 2.在FW上開啟DHCP功能,并配置不同的全局地址池,為…

react 路由配置:從入門到精通

前言 在現代Web開發中,React憑借其高效的組件化開發模式和虛擬DOM技術,已成為構建用戶界面的首選庫之一。然而,僅掌握React的核心概念并不足以應對復雜的單頁應用(SPA)開發需求。路由管理作為連接各個頁面、實現視圖切…

CPLD實現SPI通信

在 CPLD 中編寫 SPI 程序時,需根據具體需求(主/從設備、時鐘極性、數據位寬等)設計邏輯。以下提供一個 SPI 主控制器的 Verilog 實現示例,支持 模式 0(CPOL=0, CPHA=0),適用于控制外設(如 ADC、DAC、存儲器等)。 SPI 主控制器模塊設計(Verilog) 模塊功能 支持 8/16…

MapReduce簡單應用(三)——高級WordCount

目錄 1. 高級WordCount1.1 IntWritable降序排列1.2 輸入輸出格式1.3 處理流程 2. 代碼和結果2.1 pom.xml中依賴配置2.2 工具類util2.3 高級WordCount2.4 結果 參考 本文引用的Apache Hadoop源代碼基于Apache許可證 2.0,詳情請參閱 Apache許可證2.0。 1. 高級WordCo…

智慧機房解決方案(文末聯系,領取整套資料,可做論文)

智慧機房解決方案-軟件部分 一、方案概述 本智慧機房解決方案旨在通過硬件設備與軟件系統的深度整合,實現機房的智能化管理與服務,提升機房管理人員的工作效率,優化機房運營效率,確保機房設備的安全穩定運行。軟件部分包括機房管…

(五)Spring Boot學習——spring security +jwt使用(前后端分離模式)

一定要熟悉spring security原理和jwt無狀態原理,理解了才知道代碼作用。 在 Spring Security JWT 認證流程中,通常的做法是: 用戶提交用戶名和密碼Spring Security 認證管理器 (AuthenticationManager) 進行認證如果認證成功,生…

清華DeepSeek手冊:從入門到精通(網頁版便于閱讀)

目錄 一、產品概述二、清華DeepSeek從入門到精通三、PDF文件路徑 一、產品概述 DeepSeek是國產領先的人工智能技術平臺,提供從數據分析到大型語言模型的全棧解決方案。其核心產品包括網頁端數據分析工具[1] 、視覺語言模型(DeepSeek-VL)[2] 和670億參數大型語言模型…

阿里云百煉初探DeepSeek模型調用

阿里云百煉初探DeepSeek模型調用 阿里云百煉為什么選擇百煉開始使用百煉方式一:文本對話方式二:文本調試方式三:API調用 DeepSeek調用1、搜索模型2、查看API調用3、開始調用安裝依賴查看API Key運行以下代碼 4、流式輸出 總結 阿里云百煉 阿…

【網絡安全】服務器安裝Docker及拉取鏡像教程

文章目錄 1. 安裝 Docker2. 拉取鏡像3. 運行 Ubuntu 容器4. 執行相關操作5. 退出并停止容器1. 安裝 Docker # 更新軟件包索引 sudo apt update# 安裝必要的依賴 sudo apt install -y ca-certificates curl gnupg

AI刷題-子數組和的最大值問題

目錄 問題描述 輸入格式 輸出格式 輸入樣例 輸出樣例 說明 數據范圍 解題思路: 問題理解 數據結構選擇 算法步驟 具體步驟 代碼實現: 1.特判: 不需要刪除元素的時候 2.在前面的判斷結束后:k1,&#xff…

pytest.fixture

pytest.fixture 是 pytest 測試框架中的一個非常強大的功能,它允許你在測試函數運行前后執行一些設置或清理代碼。以下是關于 pytest.fixture 的詳細介紹: 一、定義與用途 pytest.fixture 是一個裝飾器,用于標記一個函數為 fixture。Fixture 函數中的代碼可以在測試函數運…

Swift的方法派發機制

1. 靜態派發(Static Dispatch) 靜態派發在編譯時確定方法的具體實現,調用時直接跳轉到該實現。靜態派發的優點是性能高,因為不需要運行時查找方法實現。 適用場景: 值類型(Struct 和 Enum)&am…

C++并發編程指南 09(共享數據)

文章目錄 第3章 共享數據本章主要內容共享數據的問題使用互斥保護數據保護數據的替代方案 3.1 共享數據的問題共享數據的核心問題不變量的重要性示例:刪除雙鏈表中的節點多線程環境中的問題條件競爭的后果總結3.1.1 條件競爭3.1.2 避免惡性條件競爭 3.2 使用互斥量3…

ZooKeeper 技術全解:概念、功能、文件系統與主從同步

引言 隨著分布式系統變得越來越復雜,對協調服務的需求也在不斷增長。ZooKeeper 作為一個由 Apache 維護的開源分布式協調服務框架,廣泛用于 Hadoop 生態系統和其他需要協調的分布式環境中。這一系統旨在解決分布式應用中常見的挑戰,如配置管…

設計方案主要做哪些事情?

目錄 1. 需求分析 2. 系統架構設計 3. 數據庫設計 4. 接口設計 5. 緩存設計 6. 安全設計 7. 性能優化 8. 高可用與容災 9. 監控與日志 10. 測試方案 11. 部署方案 12. 文檔編寫 13. 風險評估 14. 項目管理 總結 設計方案是項目開發的關鍵步驟,確保項目按計劃進…

【語法】C++的內存管理 模板

內存管理: 在C語言中,動態開辟空間可以用malloc,calloc,realloc這三個函數,下面先來復習一下這三者的區別 malloc和calloc都是用來開辟新空間,calloc在malloc的基礎上還會初始化該空間為0,用法…

30~32.ppt

目錄 30.導游小姚-介紹首都北京? 題目? 解析 31.小張-旅游產品推廣文章 題目 解析 32.小李-水的知識? 題目? 解析 30.導游小姚-介紹首都北京? 題目 解析 新建幻燈片-從大綱-重置-檢查設計→主題對話框→瀏覽主題:考生文件夾(注意&#x…

深度學習-交易預測

下面為你詳細介紹如何使用Python結合深度學習庫TensorFlow和Keras來構建一個簡單的交易預測模型。在這個示例中,我們以股票價格預測為例,假設我們要根據過去一段時間的股票價格數據來預測未來的價格走勢。 步驟分析 數據準備:獲取股票價格數…

C++ STL Map 學習學案(提高版)

C++ STL Map 學案(初中生版) 一、學習目標 深入理解 STL 中 map 容器的概念、特點和用途。熟練掌握 map 容器的基本操作,如插入、查找、刪除和遍歷元素。能夠運用 map 容器解決實際編程問題,提升邏輯思維和編程實踐能力。二、知識講解 引入 在日常生活中,我們常常會遇到…

uniapp實現人臉識別(不使用三方插件)

uniapp實現人臉識別 內容簡介功能實現上傳身份證進行人臉比對 遇到的問題 內容簡介 1.拍攝/相冊將身份證照片上傳到接口進行圖片解析 2.使用live-pusher組件拍攝人臉照片,上傳接口與身份證人臉進行比對 功能實現 上傳身份證 先看下效果 點擊按鈕調用chooseImage…