搜尋
首頁科技週邊人工智慧編程新範式,當Spring Boot遇上OpenAI

2023年,AI技術已成為熱門話題,對各產業產生了巨大影響,程式設計領域尤其如此。人們越來越認識到AI技術的重要性,Spring社群也不例外。

隨著GenAI(General Artificial Intelligence)技術的不斷進步,簡化具備AI功能的應用程式的創建變得至關重要和迫切。在這個背景下,"Spring AI"應運而生,旨在簡化開發AI功能應用程式的過程,使其變得簡單直觀,避免不必要的複雜性。透過"Spring AI",開發者可以更輕鬆地建立具備AI功能的應用程序,將其變得更加易於使用和操作。這不僅有助於提高開發效率,還可以加速AI技術的普及和應用。總之,"Spring AI"為AI應用程式的開發帶來了新的可能性,為開發者提供了更簡單、更直覺的工具和框架。

本文將簡要介紹Spring AI框架以及一些使用該框架的提示工程技巧。開發人員可以透過這些技巧更好地建立提示訊息,充分發揮Spring AI的功能。

1 Spring AI介紹

编程新范式,当Spring Boot遇上OpenAISpring AI由M K Pavan Kumar創建和撰寫

Spring AI是一個旨在簡化AI應用程序開發的項目,它受到了Python項目LangChain和LlamaIndex的啟發。然而,Spring AI並不是簡單的複製。它的核心理念是將生成式AI應用程式開放給各種程式語言的用戶,而不僅限於Python語言的愛好者。這意味著開發人員無需學習Python語言就可以使用他們熟悉的語言來建立AI應用程式。透過Spring AI,開發人員可以更輕鬆地利用AI的強大功能來解決各種問題,無論他們使用的是哪種程式語言。這將促進更廣泛的AI應用程式開發,並為開發人員提供更多靈活性和選擇。

Spring AI的核心目標是提供建立AI驅動應用程式的基本構建塊。這些構建塊具有高度的靈活性,可以輕鬆交換組件,幾乎不需要對程式碼進行任何修改。一個例子是,Spring AI引入了一個名為ChatClient介面的元件,它相容於OpenAI和Azure OpenAI的技術。這使得開發人員可以在不改變程式碼的情況下切換不同的AI服務供應商,從而更方便地進行開發和整合。

Spring AI的核心是為開發基於人工智慧的應用程式提供可靠的建置模組。這些模組具有彈性,使得能夠平滑地交換組件,而無需對編碼進行大量修改。一個範例是Spring AI引入了ChatClient接口,該接口與OpenAI和Azure OpenAI相容,使得開發人員能夠輕鬆地與這兩個平台進行對話。這種相容性使得開發人員能夠根據實際需求選擇適合的平台,而無需重新編寫程式碼。透過Spring AI,開發人員能夠更有效率地建立AI驅動的應用程式。

Spring AI不僅提供基本構建塊,還專注於提供更高級的解決方案。例如,它可以支援「關於自己文件的問答」或「使用文件進行互動式聊天」等典型場景。而隨著應用程式需求的成長,Spring AI計畫與Spring生態系統的其他元件如Spring Integration,Spring Batch和Spring Data等緊密合作,以滿足更複雜的業務需求。

2 建立Spring Boot專案和編寫OpenAI控制器範例

先在IDE中產生Spring Boot項目,在application.properties檔案中保留以下內容:

spring.ai.openai.api-key=<your></your>

下面編寫名為OpenAIController.java的控制器:

package com.vas.springai.controller;import org.springframework.ai.client.AiClient;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/api/v1")public class OpenAIController {private final AiClient aiClient;public OpenAIController(AiClient aiClient) {this.aiClient = aiClient;}}

3 使用Prompt類別建立提示訊息

提示類別是一個訊息物件序列的結構化持有者,每個訊息都代表提示的一部分。這些訊息在提示中扮演不同的角色和目的,內容也各不相同。包括用戶問題、AI生成的回應以及相關上下文細節等等。這種設置有助於進行複雜和精細的人機交互,因為提示由多個具有特定功能的訊息組成。

@GetMapping("/completion")public String completion(@RequestParam(value = "message") String message){return this.aiClient.generate(message);}

然而,aiClient的generate方法並不僅僅接受純文字作為參數,它也可以接受Prompt類別的物件作為參數,如下所示。現在,這個方法傳回的是AiResponse類型的實例,不是簡單的文字。

@GetMapping("/completion")public AiResponse completion(@RequestParam(value = "message") String message){ PromptTemplate promptTemplate = new PromptTemplate("translate the given english sentence sentence into french {query}"); Prompt prompt = promptTemplate.create(Map.of("query", message)); return this.aiClient.generate(prompt);}

此外,Prompt類別也提供了一個重載的建構函數,可以接受不同角色和意圖的Message類型實例序列作為參數。這樣可以更好地組織和管理提示訊息,方便後續的處理和使用。下面是一個範例程式碼,展示如何使用這個重載建構函數來合併所有內容。

package com.vas.springai.controller;import org.springframework.ai.client.AiClient;import org.springframework.ai.client.Generation;import org.springframework.ai.prompt.Prompt;import org.springframework.ai.prompt.PromptTemplate;import org.springframework.ai.prompt.SystemPromptTemplate;import org.springframework.ai.prompt.messages.Message;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.util.List;import java.util.Map;@RestController@RequestMapping("/api/v1")public class OpenAIController {private final AiClient aiClient;public OpenAIController(AiClient aiClient) {this.aiClient = aiClient;}@GetMapping("/completion")public List<generation> completion(@RequestParam(value = "message") String message) {String systemPrompt = """You are a helpful AI assistant that helps people translate given text from english to french.Your name is TranslateProYou should reply to the user's request with your name and also in the style of a professional.""";SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemPrompt);Message systemMessage = systemPromptTemplate.createMessage();PromptTemplate promptTemplate = new PromptTemplate("translate the given english sentence sentence into french {query}");Message userMessage = promptTemplate.createMessage(Map.of("query", message));Prompt prompt = new Prompt(List.of(systemMessage, userMessage));return this.aiClient.generate(prompt).getGenerations();}}</generation>

4 測試應用程式

可以使用市場上任何可用的開放工具來測試應用程序,例如postman、insomnia和Httpie等等。

编程新范式,当Spring Boot遇上OpenAI 圖片

#

以上是編程新範式,當Spring Boot遇上OpenAI的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
如何使用Huggingface Smollm建立個人AI助手如何使用Huggingface Smollm建立個人AI助手Apr 18, 2025 am 11:52 AM

利用“設備” AI的力量:建立個人聊天機器人CLI 在最近的過去,個人AI助手的概念似乎是科幻小說。 想像一下科技愛好者亞歷克斯(Alex)夢見一個聰明的本地AI同伴 - 不依賴

通過斯坦福大學激動人心的新計劃,精神健康的AI專心分析通過斯坦福大學激動人心的新計劃,精神健康的AI專心分析Apr 18, 2025 am 11:49 AM

他們的首屆AI4MH發射於2025年4月15日舉行,著名的精神科醫生兼神經科學家湯姆·因斯爾(Tom Insel)博士曾擔任開幕式演講者。 Insel博士因其在心理健康研究和技術方面的傑出工作而聞名

2025年WNBA選秀課程進入聯盟成長並與在線騷擾作鬥爭2025年WNBA選秀課程進入聯盟成長並與在線騷擾作鬥爭Apr 18, 2025 am 11:44 AM

恩格伯特說:“我們要確保WNBA仍然是每個人,球員,粉絲和公司合作夥伴,感到安全,重視和授權的空間。” anno

Python內置數據結構的綜合指南 - 分析VidhyaPython內置數據結構的綜合指南 - 分析VidhyaApr 18, 2025 am 11:43 AM

介紹 Python擅長使用編程語言,尤其是在數據科學和生成AI中。 在處理大型數據集時,有效的數據操作(存儲,管理和訪問)至關重要。 我們以前涵蓋了數字和ST

與替代方案相比,Openai新型號的第一印象與替代方案相比,Openai新型號的第一印象Apr 18, 2025 am 11:41 AM

潛水之前,一個重要的警告:AI性能是非確定性的,並且特定於高度用法。簡而言之,您的里程可能會有所不同。不要將此文章(或任何其他)文章作為最後一句話 - 目的是在您自己的情況下測試這些模型

AI投資組合|如何為AI職業建立投資組合?AI投資組合|如何為AI職業建立投資組合?Apr 18, 2025 am 11:40 AM

建立杰出的AI/ML投資組合:初學者和專業人士指南 創建引人注目的投資組合對於確保在人工智能(AI)和機器學習(ML)中的角色至關重要。 本指南為建立投資組合提供了建議

代理AI對安全操作可能意味著什麼代理AI對安全操作可能意味著什麼Apr 18, 2025 am 11:36 AM

結果?倦怠,效率低下以及檢測和作用之間的差距擴大。這一切都不應該令任何從事網絡安全工作的人感到震驚。 不過,代理AI的承諾已成為一個潛在的轉折點。這個新課

Google與Openai:AI為學生打架Google與Openai:AI為學生打架Apr 18, 2025 am 11:31 AM

直接影響與長期夥伴關係? 兩週前,Openai提出了強大的短期優惠,在2025年5月底之前授予美國和加拿大大學生免費訪問Chatgpt Plus。此工具包括GPT-4O,A A A A A

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境