欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring boot3整合AI組件及使用方法

 更新時間:2024年05月09日 11:56:30   作者:蒾酒  
本文介紹了springboot開發(fā)后端服務(wù)中,AI組件(Spring AI)的整合與使用,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

寫在前面

本文介紹了springboot開發(fā)后端服務(wù)中,AI組件(Spring AI)的整合與使用。堅持看完相信對你有幫助。

同時歡迎訂閱springboot系列專欄,持續(xù)分享spring boot的使用經(jīng)驗。

spring ai簡介

先看官網(wǎng)介紹:

翻譯:

Spring AI 是 AI 工程的應(yīng)用框架。其目標是將 Spring 生態(tài)系統(tǒng)設(shè)計原則(如可移植性和模塊化設(shè)計)應(yīng)用于 AI,并推廣使用 POJO 作為 AI 領(lǐng)域應(yīng)用程序的構(gòu)建塊。

翻譯:

特征

跨 AI 提供商的可移植 API 支持,適用于聊天、文本到圖像和嵌入模型。支持同步和流 API 選項。還支持下拉以訪問特定于模型的功能。

在spring-ai組件沒發(fā)布前,我們在spring boot中對接各種ai接口,由于接口規(guī)范格式的不同,我們通常每種接口都得單獨去寫代碼去對接,最后通過實現(xiàn)策略模式來實現(xiàn)靈活切換ai接口源。這樣是比較麻煩的。而spring-ai組件就是幫我們做了類似的封裝,使得我們對接多種ai接口變得十分方便。

單獨整合al接口

我們先來看spring boot簡單整合經(jīng)典的chatGPT 3.5接口

代碼如下:

import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @author mijiu
 * ClassName:OpenAIAPI.java
 * date:2024-05-06 16:49
 * Description:
 */
public class OpenAIAPI {
    /**
     * 聊天端點
     */
    private final static String CHAT_ENDPOINT = "https://api.openai.com/v1/chat/completions";//官網(wǎng)接口地址
    private final static  String PROXY_ENDPOINT ="https://www.chatgp.fun/v1/chat/completions";//國內(nèi)代理接口
    private final static  String API_KEY = "Bearer sk-pbatvlgKeYScAS3kD4820bA1CcE741F996E0BaAb205421D1";
    /**
     * 需要代理服務(wù)器訪問
     *
     * @param txt 內(nèi)容
     * @return {@link String}
     */
    public static String chat(String txt) {
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("model", "gpt-3.5-turbo");
        List<Map<String, String>> dataList = new ArrayList<>();
        dataList.add(new HashMap<String, String>(){{
            put("role", "user");
            put("content", txt);
        }});
        paramMap.put("messages", dataList);
        System.out.println(JSONUtil.toJsonStr(paramMap));
        JSONObject message = null;
        try {
            String body = HttpRequest.post(PROXY_ENDPOINT)
                    .header("Authorization", API_KEY)
                    .header("Content-Type", "application/json")
                    .body(JSONUtil.toJsonStr(paramMap))
                    .execute()
                    .body();
            JSONObject jsonObject = JSONUtil.parseObj(body);
            System.out.println(jsonObject);
            JSONArray choices = jsonObject.getJSONArray("choices");
            JSONObject result = choices.get(0, JSONObject.class, Boolean.TRUE);
            message = result.getJSONObject("message");
        } catch (Exception e) {
            return "抱歉,我無法回答你的問題。";
        }
        return message.getStr("content");
    }
    public static void main(String[] args) {
        System.out.println(chat("你是?"));
    }
}

這段代碼依賴hutool工具包的http工具包

 <dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.22</version>
 </dependency>

現(xiàn)在運行測試一下:

可以看到目前整合調(diào)用測試成功了。

代碼里面的api-key有一定量的token新手可以復(fù)制代碼運行下試試。言歸正傳下面開始介紹核心內(nèi)容。

整合Spring AI組件

起步條件

  • jdk不低于17
  • spring boot 3x

我們直接新建一個demo項目

為何直接新建一個項目的,主要是為了避開一些麻煩。如,阿里云maven鏡像沒有此依賴,需要到中央倉庫下載。

一定要選不低于Java17的jdk

選擇這兩個依賴就夠了

  • Spring Web
  • OpenAI

spring boot的版本不要低于3.0

等待依賴下載完成。

進行必要配置

這個api-key需要你去openal官網(wǎng)去申請購買,或者在一些購物軟件直接購買現(xiàn)成的用。

共需要配置:

spring.ai.openai.api-key: 這是你的 OpenAI API 密鑰,它是用于通過 API 訪問 OpenAI 服務(wù)的憑證。密鑰應(yīng)該是一個長字符串,用于標識你的賬戶并授權(quán)訪問。

spring.ai.openai.chat.options.model: 這是用于設(shè)置對話系統(tǒng)所使用的 OpenAI 模型的選項之一。在這種情況下,模型選擇為 GPT-3.5 Turbo,這是 OpenAI 提供的一種強大的自然語言處理模型,適用于生成對話。

spring.ai.openai.chat.options.temperature: 這是對話系統(tǒng)生成響應(yīng)時的溫度參數(shù)。溫度參數(shù)控制著生成文本的多樣性,值越高,生成文本的多樣性越大。在這里,溫度設(shè)置為 0.7,這意味著對話系統(tǒng)生成的文本會相對保守,但仍具有一定的多樣性。

application.properties:

spring.ai.openai.api-key=sk-uVfM7GiD9RIdIKRrF70eT3BlbkyhdHGHGH
spring.ai.openai.chat.options.model=gpt-3.5-turbo
spring.ai.openai.chat.options.temperature=0.7

代碼里面的api-key是我隨意寫的一個,需要換成你自己的且有效的 。

測試控制器

import org.springframework.ai.embedding.EmbeddingClient;
import org.springframework.ai.embedding.EmbeddingResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
 * @author mijiupro
 */
@RestController
public class EmbeddingController {
    private final EmbeddingClient embeddingClient;
    @Autowired
    public EmbeddingController(EmbeddingClient embeddingClient) {
        this.embeddingClient = embeddingClient;
    }
    @GetMapping("/ai/embedding")
    public Map embed(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        EmbeddingResponse embeddingResponse = this.embeddingClient.embedForResponse(List.of(message));
        return Map.of("embedding", embeddingResponse);
    }
}

最后啟動項目瀏覽器地址欄訪問測試接口即可。

http://localhost:8080/ai/embedding

寫在最后 

spring boot3整合AI組件到這里就結(jié)束了。任何問題評論區(qū)或私信討論,歡迎指正。

到此這篇關(guān)于spring boot3整合AI組件的文章就介紹到這了,更多相關(guān)spring boot3 AI組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot如何使用@RequestBody進行數(shù)據(jù)校驗

    SpringBoot如何使用@RequestBody進行數(shù)據(jù)校驗

    在Web開發(fā)中,前臺向后臺發(fā)送數(shù)據(jù)是非常常見的場景,而在SpringBoot框架中,我們通常使用@RequestBody注解來接收前臺發(fā)送的?JSON數(shù)據(jù),并將其轉(zhuǎn)化為Java對象,本文將介紹如何在?SpringBoot?中使用?@RequestBody?進行數(shù)據(jù)校驗
    2023-06-06
  • SpringBoot整合log4j2日志的實現(xiàn)

    SpringBoot整合log4j2日志的實現(xiàn)

    在項目推進中,如果說第一件事是搭Spring框架的話,那么第二件事情就是在Sring基礎(chǔ)上搭建日志框架,大家都知道日志對于一個項目的重要性,尤其是線上Web項目,因為日志可能是我們了解應(yīng)用如何執(zhí)行的唯一方式。此篇文章是博主在實踐中用Springboot整合log4j2日志的總結(jié)
    2021-06-06
  • Java命名規(guī)則詳細總結(jié)

    Java命名規(guī)則詳細總結(jié)

    Class名應(yīng)是首字母大寫的名詞。命名時應(yīng)該使其簡潔而又具有描述性。異常類的命名,應(yīng)以Exception結(jié)尾。Interface的命名規(guī)則與Class相同
    2013-10-10
  • java在文件尾部追加內(nèi)容的簡單實例

    java在文件尾部追加內(nèi)容的簡單實例

    下面小編就為大家?guī)硪黄猨ava在文件尾部追加內(nèi)容的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 如何基于SpringWeb?MultipartFile實現(xiàn)文件上傳、下載功能

    如何基于SpringWeb?MultipartFile實現(xiàn)文件上傳、下載功能

    在做項目時,后端經(jīng)常采用上傳文件組件MultipartFile,下面這篇文章主要給大家介紹了關(guān)于如何基于SpringWeb?MultipartFile實現(xiàn)文件上傳、下載功能的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • 解讀file.exists(),file.isFile()和file.isDirectory()的區(qū)別

    解讀file.exists(),file.isFile()和file.isDirectory()的區(qū)別

    本文介紹了Java中的File類的三個方法:file.exists()、file.isFile()和file.isDirectory(),并詳細解釋了它們的區(qū)別和使用場景
    2025-02-02
  • java高效讀大文件(csv,text)的幾種處理方式

    java高效讀大文件(csv,text)的幾種處理方式

    這篇文章主要給大家介紹了關(guān)于java高效讀大文件(csv,text)的幾種處理方式,Java中處理大文件時,通常需要采取一些特定的策略來避免內(nèi)存溢出或性能問題,文中通過代碼及圖片介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • 解決Error:(1,?1)?java:?非法字符:?'\ufeff'問題

    解決Error:(1,?1)?java:?非法字符:?'\ufeff'問題

    這篇文章主要介紹了解決Error:(1,?1)?java:?非法字符:?'\ufeff'問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java 構(gòu)造器原理及用法解析

    Java 構(gòu)造器原理及用法解析

    這篇文章主要介紹了Java 構(gòu)造器原理及用法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • SpringMVC域?qū)ο蠊蚕頂?shù)據(jù)示例詳解

    SpringMVC域?qū)ο蠊蚕頂?shù)據(jù)示例詳解

    這篇文章主要為大家介紹了SpringMVC域?qū)ο蠊蚕頂?shù)據(jù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05

最新評論