国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
目的
實施前
提示詞
概念驗證
項目設(shè)置
代碼實現(xiàn)
Spring AI 集成
客戶端 - Spring Boot應用程序通信
客戶端 - Open AI 通信
調(diào)整和觀察
結(jié)論
首頁 科技周邊 人工智能 利用Spring Boot以及Spring AI構(gòu)建生成式人工智能應用

利用Spring Boot以及Spring AI構(gòu)建生成式人工智能應用

Apr 28, 2024 am 11:46 AM
ai spring spring框架 gen ai

Spring AI作為行業(yè)領(lǐng)導者,通過其強大、靈活的API和先進的功能,為各種行業(yè)提供了領(lǐng)先性的解決方案。在本專題中,我們將深入探討Spring AI在各領(lǐng)域的應用示例,每個案例都將展示Spring AI如何滿足特定需求,實現(xiàn)目標,并將這些LESSONS LEARNED擴展到更廣泛的應用。希望這個專題能對你有所啟發(fā),更深入地理解和利用Spring AI的無限可能。

Spring框架在軟件開發(fā)領(lǐng)域已經(jīng)有超過20年的歷史,自Spring Boot 1.0版本發(fā)布以來已有10年?,F(xiàn)在,無人會質(zhì)疑,Spring創(chuàng)建了一種獨特的風格,使開發(fā)者從重復任務(wù)中解放出來,專注于提供業(yè)務(wù)價值。隨著時間的推移,Spring的技術(shù)深度不斷增強,涵蓋了廣泛的開發(fā)領(lǐng)域和技術(shù)。另一方面,隨著更多的專用解決方案得到嘗試,概念的驗證被創(chuàng)建,而最終在項目的保護下得到推廣,其技術(shù)廣度不斷擴大。

Spring AI項目是一個實例,根據(jù)其參考文檔,該項目旨在簡化當生成式人工智能層需求被引入應用時的開發(fā)過程。開發(fā)者再次從重復任務(wù)中解放出來,可以直接通過簡單的接口與預先訓練的模型(包含實際處理算法)進行交互。

通過直接通過Spring AI編程方式與生成式預訓練的轉(zhuǎn)換器(GPTs)交互,用戶(開發(fā)者)不需要擁有廣泛的機器學習知識。但作為一名工程師,我強烈認為,即使這些開發(fā)者工具可以方便快捷地使用并產(chǎn)生結(jié)果,我建議我們需要克制自己,警覺觀察察嘗試首先理解基本概念。此外,通過遵循這條路徑,產(chǎn)出的結(jié)果可能會更有價值。

目的

本文介紹了如何將 Spring AI 集成到 Spring Boot 應用,并與 OpenAI 進行編程交互。我們假設(shè)設(shè)計一般來說是一種最先進的活動。因此,在實驗過程中使用的prompt具有教導性,但應用性不大。此處的重點是通訊接口,即 Spring AI API。

實施前

首先要明確自身使用GPT解決方案的理由,除了希望提供更好的質(zhì)量,節(jié)省時間和降低成本。

生產(chǎn)式人工智能據(jù)說擅長執(zhí)行大量耗時的任務(wù),速度更快,效率更高,生成結(jié)果。此外,如果這些結(jié)果進一步經(jīng)過經(jīng)驗豐富且智慧的人類驗證,獲得有用結(jié)果的可能性會增加。

接下來,應抵制立即跳入實施的誘惑,至少要花一些時間熟悉一下一般概念。對生成式人工智能概念的深入探索遠遠超出了本文的范圍。然而,出現(xiàn)在交互中的“主要角色”在下面簡要描述。

舞臺?- 生成式人工智能是人工智能的一部分
輸入?- 提供的數(shù)據(jù)(輸入)
輸出?- 計算結(jié)果(輸出)
大型語言模型(LLM)- 根據(jù)解釋的輸入產(chǎn)生輸出的微調(diào)算法
提示詞- 一種最先進的接口,通過它將輸入傳入模型
提示詞模板?- 允許構(gòu)造結(jié)構(gòu)化參數(shù)化提示的組件
令牌?- 算法在內(nèi)部將輸入轉(zhuǎn)換為令牌,然后使用這些令牌來編譯結(jié)果,并最終從中構(gòu)造輸出
模型的環(huán)境窗口 - 模型限制每次調(diào)用的令牌數(shù)量的閾值(通常,使用的令牌越多,操作就越昂貴)

最后,可以開始實施,但隨著實施的進行,建議回顧和優(yōu)化前兩個步驟。

提示詞

在本次練習中,我們請求如下:

Write {count = three} reasons why people in {location = Romania} should consider a {job = software architect} job. These reasons need to be short, so they fit on a poster. For instance, "{job} jobs are rewarding."

上面內(nèi)容代表了提示詞模板。按照建議,應作為提示詞的一部分提供清晰的主題,清晰的任務(wù)含義以及額外的有用信息,以提高結(jié)果的準確性。

提示詞包含三個參數(shù)

count - 希望作為輸出的原因數(shù)量
job - 感興趣的領(lǐng)域或工作
location - 工作申請者所在的國家,城鎮(zhèn),地區(qū)等

概念驗證

在這篇文章中,簡單的概念驗證目標如下:

將 Spring AI 集成到Spring Boot應用程序并使用它
允許客戶端通過應用程序與 Open AI 進行通信
客戶端向應用程序發(fā)出參數(shù)化的HTTP請求
應用程序使用一個提示詞來創(chuàng)建輸入,發(fā)送給 Open AI 并獲取輸出
應用程序?qū)㈨憫l(fā)送給客戶端

利用Spring Boot以及Spring AI構(gòu)建生成式人工智能應用圖片

項目設(shè)置

Java 21
Maven 3.9.2
Spring Boot – v. 3.2.2
Spring AI – v. 0.8.0-SNAPSHOT (仍在開發(fā),實驗性)

代碼實現(xiàn)

Spring AI 集成

通常,這是一個基本步驟,不一定值得一提。然而,因為 Spring AI 目前以快照形式發(fā)布,為了能夠集成 Open AI 自動配置依賴,你需要添加一個引用到 Spring 快照倉庫。

<repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository></repositories>

下一步是添加 spring-ai-openai-spring-boot-starter Maven 依賴項。

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>0.8.0-SNAPSHOT</version></dependency>

Open AI ChatClient 現(xiàn)在是應用程序類路徑的一部分。它是用來向 Open AI 發(fā)送輸入并獲取輸出的組件。

為了能夠連接到AI模型,需要在 application.properties 文件中設(shè)置 spring.ai.openai.api-key 屬性。

spring.ai.openai.api-key = api-key-value

它的值代表了用戶的有效API密鑰,用戶將通過此密鑰進行通信。通過訪問[資源2],可以注冊或登錄并生成一個。

客戶端 - Spring Boot應用程序通信

概念驗證的第一部分是客戶端應用程序(例如瀏覽器,curl等)與開發(fā)的應用程序之間的通信。這是通過一個 REST 控制器實現(xiàn)的,可以通過HTTP GET請求訪問。

URL路徑是 /job-reasons,還有之前在定義提示時概述的三個參數(shù),這將導致如下格式:

/job-reasons?count={count}&job={job}&locatinotallow={location}

和相應的控制器:

@RestControllerpublic class OpenAiController { @GetMapping("/job-reasons")public ResponseEntity<String> jobReasons(@RequestParam(value = "count", required = false, defaultValue = "3") int count, @RequestParam("job") String job, @RequestParam("location") String location) {return ResponseEntity.ok().build();}}

由于來自 Open AI 的響應將是一個字符串,因此控制器返回一個封裝了字符串的ResponseEntity。如果我們運行應用程序并發(fā)出請求,當前響應體部分沒有返回任何內(nèi)容。

客戶端 - Open AI 通信

Spring AI 目前主要關(guān)注處理語言并產(chǎn)生語言或數(shù)字的AI模型。在前一類別中, Open AI 模型的例子包括GPT4-openai或GPT3.5-openai。

為了與這些AI模型(實際上是指 Open AI 算法)進行交互, Spring AI 提供了一個統(tǒng)一的接口。

ChatClient接口目前支持文本輸入和輸出,并具有簡單的契約。

@FunctionalInterfacepublic interface ChatClient extends ModelClient<Prompt, ChatResponse> {default String call(String message) {Prompt prompt = new Prompt(new UserMessage(message));return call(prompt).getResult().getOutput().getContent();} ChatResponse call(Prompt prompt);}

確實如此,功能接口的實際方法通常是被使用的方法。

在我們的概念驗證中,這正是我們所需要的,一種調(diào)用 Open AI 并發(fā)送目標參數(shù)化 Prompt 作為參數(shù)的方式。我們定義了以下的OpenAiService,在其中注入了一個 ChatClient 的實例。

@Servicepublic class OpenAiService { private final ChatClient client; public OpenAiService(OpenAiChatClient aiClient) {this.client = aiClient;} public String jobReasons(int count, String domain, String location) {final String promptText = """Write {count} reasons why people in {location} should consider a {job} job.These reasons need to be short, so they fit on a poster.For instance, "{job} jobs are rewarding.""""; final PromptTemplate promptTemplate = new PromptTemplate(promptText);promptTemplate.add("count", count);promptTemplate.add("job", domain);promptTemplate.add("location", location); ChatResponse response = client.call(promptTemplate.create());return response.getResult().getOutput().getContent();}}

如果應用程序正在運行,那么可以從瀏覽器執(zhí)行以下請求:

http://localhost:8080/gen-ai/job-reasons?count=3&job=software%20architect&locatinotallow=Romania

這下面的結(jié)果被檢索出來的結(jié)果:

利潤豐裕的職業(yè):軟件架構(gòu)師的工作提供了有競爭力的薪酬和出色的增長機會,確保在羅馬尼亞的財務(wù)穩(wěn)定和成功。
熱門職業(yè):隨著技術(shù)需求的持續(xù)增長,軟件架構(gòu)師在羅馬尼亞和全世界都備受追捧,提供了豐富的就業(yè)前景和就業(yè)保障。
創(chuàng)造性問題解決:軟件架構(gòu)師在設(shè)計和開發(fā)創(chuàng)新軟件解決方案中扮演著至關(guān)重要的角色,使他們可以釋放他們的創(chuàng)造力,并對各種行業(yè)產(chǎn)生重大影響。

這就是我們所期望的——一個簡易的接口,通過它,可以要求 Open AI GPT模型寫出一些原因,解釋為何在特定地點的特定工作具有吸引力。

調(diào)整和觀察

到目前為止,開發(fā)的簡單概念驗證主要使用了默認的配置。

ChatClient實例可以通過各種屬性根據(jù)所需需要來配置。雖然這超出了本文的范圍,但在這里舉兩個例子。

spring.ai.openai.chat.options.model 指定要使用的AI模型。默認為'gpt-35-turbo',但'gpt-4'和'gpt-4-32k'指定的是最新版本。雖然這些版本都是可用的,但你可能無法使用按使用量付費的計劃來訪問這些版本,但 Open AI 網(wǎng)站上有更多的信息可以幫助你了解如何適應它。

另一個值得一提的屬性是 spring.ai.openai.chat.options.temperature。根據(jù)參考文檔,采樣溫度控制了“回應的創(chuàng)新性”。據(jù)說,較高的值會讓輸出“更隨機”,而較低的值會“更專注和決定性”。默認值為0.8,如果我們將其降低到0.3,重啟應用并再次使用相同的請求參數(shù)詢問,下面的結(jié)果將被檢索出來。

有利可圖的職業(yè)機會:羅馬尼亞的軟件架構(gòu)師工作提供有競爭力的薪水和極好的成長前景,對于尋求財務(wù)穩(wěn)定和職業(yè)發(fā)展的個人來說,這是一個吸引人的職業(yè)選擇。
具有挑戰(zhàn)性和智能刺激的工作:作為一名軟件架構(gòu)師,你將負責設(shè)計和實現(xiàn)復雜的軟件系統(tǒng),解決復雜的技術(shù)問題,并與有才華的團隊合作。這個角色提供了持續(xù)的學習機會和在尖端技術(shù)上工作的機會。
高需求和工作保障:隨著對技術(shù)和數(shù)字化轉(zhuǎn)型的依賴增加,各行各業(yè)對熟練軟件架構(gòu)師的需求在上升。選擇在羅馬尼亞的軟件架構(gòu)師工作確保了工作安全和廣泛的就業(yè)選擇,無論是在本地還是國際上。

可以看出,這種情況下的輸出更具描述性。

最后一個考慮因素是與獲取的輸出的結(jié)構(gòu)相關(guān)的。擁有將實際接收的有效載荷映射到Java對象(例如,類或記錄)的能力將非常方便。截至目前,表示形式是文本形式,實現(xiàn)也是如此。輸出解析器可能實現(xiàn)這一點,類似于Spring JDBC的映射結(jié)構(gòu)。

在這個概念驗證中,我們使用了一個BeanOutputParser,它允許直接將結(jié)果反序列化到Java記錄中,如下所示:

public record JobReasons(String job, String location, List<String> reasons) {}

通過將 {format} 作為提示文本的一部分,并將其作為指示提供給 AI 模型。

OpenAiService 方法變?yōu)椋?/span>

public JobReasons formattedJobReasons(int count, String job, String location) {final String promptText = """Write {count} reasons why people in {location} should consider a {job} job.These reasons need to be short, so they fit on a poster.For instance, "{job} jobs are rewarding."{format}"""; BeanOutputParser<JobReasons> outputParser = new BeanOutputParser<>(JobReasons.class); final PromptTemplate promptTemplate = new PromptTemplate(promptText);promptTemplate.add("count", count);promptTemplate.add("job", job);promptTemplate.add("location", location); promptTemplate.add("format", outputParser.getFormat());promptTemplate.setOutputParser(outputParser); final Prompt prompt = promptTemplate.create(); ChatResponse response = client.call(prompt);return outputParser.parse(response.getResult().getOutput().getContent());}

再次調(diào)用時,輸出如下:

{"job":"software architect","location":"Romania","reasons":["High demand","Competitive salary","Opportunities for growth"]}

格式符合預期,但解釋的原因似乎較少,這意味著需要進行額外的調(diào)整以達到更好的可用性。然而,從概念驗證的角度來看,這是可接受的,因為焦點是形式。

結(jié)論

提示設(shè)計是任務(wù)的重要部分 - 提示越清晰,輸入越好,輸出的質(zhì)量也就越高。

使用 Spring AI 與各種聊天模型進行集成非常簡單 - 本篇文章展示了一個 Open AI 的集成。

然而,對于 Gen AI 或者幾乎任何技術(shù)來說,首先至少要熟悉基本概念是非常重要的。然后,嘗試理解如何進行通訊的魔法,最后再開始編寫“生產(chǎn)”代碼。

最后但同樣重要的是,建議進一步探索 Spring AI API,以了解實現(xiàn)并隨著其不斷發(fā)展和改進保持最新狀態(tài)。


以上是利用Spring Boot以及Spring AI構(gòu)建生成式人工智能應用的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
以太坊是什么幣?以太坊ETH獲得的方式有哪些? 以太坊是什么幣?以太坊ETH獲得的方式有哪些? Jul 31, 2025 pm 11:00 PM

以太坊是一個基于智能合約的去中心化應用平臺,其原生代幣ETH可通過多種方式獲取。1、通過Binance必安、歐意ok等中心化平臺注冊賬戶、完成KYC認證并用穩(wěn)定幣購買ETH;2、通過去中心化平臺連接數(shù)字儲存,使用穩(wěn)定幣或其他代幣直接兌換ETH;3、參與網(wǎng)絡(luò)質(zhì)押,可選擇獨立質(zhì)押(需32個ETH)、流動性質(zhì)押服務(wù)或在中心化平臺一鍵質(zhì)押以獲取獎勵;4、通過為Web3項目提供服務(wù)、完成任務(wù)或獲得空投等方式賺取ETH。建議初學者從主流中心化平臺入手,逐步過渡到去中心化方式,并始終重視資產(chǎn)安全與自主研究,以

以太坊閃耀:美國銀行開啟數(shù)字資產(chǎn)追蹤,ETH 再成焦點 以太坊閃耀:美國銀行開啟數(shù)字資產(chǎn)追蹤,ETH 再成焦點 Aug 01, 2025 pm 08:09 PM

美國銀行開啟數(shù)字資產(chǎn)追蹤標志著以太坊在主流金融的認可度提升,1. 合法性認可度提升;2. 可能吸引機構(gòu)配置數(shù)字資產(chǎn);3. 推動合規(guī)化進程;4. 確認ETH作為“數(shù)字石油”的應用前景和潛在價值;以太坊成為焦點因其擁有龐大的DApp生態(tài)系統(tǒng),1. 技術(shù)升級至PoS提升可擴展性、安全性和可持續(xù)性;2. 作為DeFi核心支持借貸、交易等金融服務(wù);3. 支撐NFT繁榮鞏固生態(tài)需求;4. 拓展企業(yè)級應用如供應鏈管理;5. EIP-1559引入通縮機制提升稀缺性;頂尖交易平臺包括:1. Binance(交易量

歐易交易所APP安卓版 v6.132.0 歐易APP官網(wǎng)下載安裝指南2025 歐易交易所APP安卓版 v6.132.0 歐易APP官網(wǎng)下載安裝指南2025 Aug 04, 2025 pm 11:18 PM

歐易(OKX)是一款全球知名的數(shù)字資產(chǎn)綜合服務(wù)平臺,為廣大用戶提供涵蓋現(xiàn)貨、合約、期權(quán)等在內(nèi)的多元化產(chǎn)品和服務(wù)。其官方APP憑借流暢的操作體驗和強大的功能集成,成為了許多數(shù)字資產(chǎn)用戶的常用工具。

全球十大比特幣交易平臺最新排行榜 全球十大比特幣交易平臺最新排行榜 Aug 01, 2025 pm 07:36 PM

1.幣安是全球交易量領(lǐng)先的平臺,以其豐富的幣種、多樣交易模式和Launchpad融資服務(wù)著稱,全球化布局廣泛;2.OKX以創(chuàng)新金融衍生品和高安全性聞名,積極布局Web3生態(tài);3.gate.io歷史悠久,提供超千種幣種交易,系統(tǒng)穩(wěn)定且風控嚴格;4.火幣提供多元交易服務(wù),研究實力強,注重合規(guī)與安全;5.KuCoin被稱為“全民交易平臺”,以低費用和高收益潛力項目吸引投資者,客戶服務(wù)響應快;6.Kraken是美國知名交易所,安全措施嚴格,支持法幣交易,合規(guī)性高;7.Bitstamp為歐洲老牌平臺,服務(wù)

螞蟻集團或與 Circle 合作,將 USDC 引入螞蟻鏈 螞蟻集團或與 Circle 合作,將 USDC 引入螞蟻鏈 Aug 01, 2025 pm 07:15 PM

螞蟻集團正與Circle洽談將USDC引入螞蟻鏈,1. 提升跨境支付效率,服務(wù)阿里生態(tài)中小企業(yè);2. 搭建DeFi生態(tài)橋梁,探索合規(guī)去中心化金融;3. 推動全球化合規(guī)布局,助力Alipay 拓展歐美及東南亞市場,盡管面臨中國監(jiān)管限制與激烈競爭,此舉仍標志著中國科技巨頭在區(qū)塊鏈金融全球化的重要突破,預示傳統(tǒng)企業(yè)加速擁抱合規(guī)加密資產(chǎn)。

華爾街巨頭紛紛布局穩(wěn)定幣,傳統(tǒng)銀行打響支付 '保衛(wèi)戰(zhàn)” 華爾街巨頭紛紛布局穩(wěn)定幣,傳統(tǒng)銀行打響支付 '保衛(wèi)戰(zhàn)” Aug 01, 2025 pm 07:21 PM

華爾街正積極布局穩(wěn)定幣以應對支付領(lǐng)域變革,1.法幣抵押型、2.加密資產(chǎn)抵押型、3.算法穩(wěn)定幣三類各有特點與風險;銀行布局動因包括提升跨境支付效率、拓展服務(wù)邊界、應對競爭壓力、滿足機構(gòu)需求及探索CBDC;摩根大通JPM Coin、花旗Citi Token、富達與高盛等案例顯示傳統(tǒng)金融已將其視為關(guān)鍵基礎(chǔ)設(shè)施;面對非銀行支付與科技巨頭挑戰(zhàn),銀行采取擁抱技術(shù)、構(gòu)建生態(tài)、提升體驗、發(fā)揮合規(guī)優(yōu)勢及參與CBDC等策略;未來監(jiān)管將強化儲備金審計、牌照管理、消費者保護、AML/CFT合規(guī)及全球協(xié)調(diào),推動穩(wěn)定幣融入

購買穩(wěn)定幣,步驟全解析 購買穩(wěn)定幣,步驟全解析 Aug 01, 2025 pm 07:30 PM

購買穩(wěn)定幣的步驟為:1.選擇信譽良好的交易平臺,如幣安、火幣、OKX、Coinbase等中心化交易所,或Uniswap、PancakeSwap等去中心化交易所,也可通過USDT、USDC、DAI等穩(wěn)定幣發(fā)行方官網(wǎng)購買;2.注冊賬戶并完成KYC身份驗證,提供身份證或護照等證件,同時設(shè)置雙重認證(2FA)以增強賬戶安全性;3.綁定銀行賬戶或信用卡,選擇銀行轉(zhuǎn)賬、信用卡支付或第三方支付等方式進行法幣入金,并確認匯率與手續(xù)費后完成充值;4.進入交易界面選擇“法幣交易”或“快捷買幣”,選定所需穩(wěn)定幣種類如

ai智能發(fā)售數(shù)字貨幣是什么?普通人在哪里購買? ai智能發(fā)售數(shù)字貨幣是什么?普通人在哪里購買? Aug 01, 2025 pm 10:15 PM

AI數(shù)字貨幣并非AI自主發(fā)行貨幣,而是將人工智能技術(shù)深度整合于區(qū)塊鏈項目中的代幣,其價值與AI應用前景緊密相關(guān)。1、AI用于智能決策與優(yōu)化,提升DeFi效率;2、賦能去中心化AI應用,作為算力支付與激勵工具;3、增強網(wǎng)絡(luò)安全與風控,識別異常行為;4、結(jié)合AIGC與NFT,推動內(nèi)容生成與價值流轉(zhuǎn)。普通人可通過三個渠道參與:1、大型中心化平臺(如幣安、歐易),操作簡便適合新手;2、去中心化交易所(如Uniswap),需自行管理錢苞與私鑰,安全性要求高;3、項目初期發(fā)行平臺(Launchpad),參與

See all articles