最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

寫(xiě)在前面

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

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

spring ai簡(jiǎn)介

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

翻譯:

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

翻譯:

特征

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

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

單獨(dú)整合al接口

我們先來(lái)看spring boot簡(jiǎn)單整合經(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 {
    /**
     * 聊天端點(diǎn)
     */
    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";//國(guó)內(nèi)代理接口
    private final static  String API_KEY = "Bearer sk-pbatvlgKeYScAS3kD4820bA1CcE741F996E0BaAb205421D1";
    /**
     * 需要代理服務(wù)器訪問(wèn)
     *
     * @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 "抱歉,我無(wú)法回答你的問(wèn)題。";
        }
        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)在運(yùn)行測(cè)試一下:

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

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

整合Spring AI組件

起步條件

  • jdk不低于17
  • spring boot 3x

我們直接新建一個(gè)demo項(xiàng)目

為何直接新建一個(gè)項(xiàng)目的,主要是為了避開(kāi)一些麻煩。如,阿里云maven鏡像沒(méi)有此依賴,需要到中央倉(cāng)庫(kù)下載。

一定要選不低于Java17的jdk

選擇這兩個(gè)依賴就夠了

  • Spring Web
  • OpenAI

spring boot的版本不要低于3.0

等待依賴下載完成。

進(jìn)行必要配置

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

共需要配置:

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

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

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

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是我隨意寫(xiě)的一個(gè),需要換成你自己的且有效的 。

測(cè)試控制器

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);
    }
}

最后啟動(dòng)項(xiàng)目瀏覽器地址欄訪問(wèn)測(cè)試接口即可。

http://localhost:8080/ai/embedding

寫(xiě)在最后 

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

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

相關(guān)文章

  • Java自定義函數(shù)調(diào)用方法解析

    Java自定義函數(shù)調(diào)用方法解析

    這篇文章主要介紹了java自定義函數(shù)調(diào)用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Java?數(shù)據(jù)結(jié)構(gòu)進(jìn)階二叉樹(shù)題集下

    Java?數(shù)據(jù)結(jié)構(gòu)進(jìn)階二叉樹(shù)題集下

    二叉樹(shù)可以簡(jiǎn)單理解為對(duì)于一個(gè)節(jié)點(diǎn)來(lái)說(shuō),最多擁有一個(gè)上級(jí)節(jié)點(diǎn),同時(shí)最多具備左右兩個(gè)下級(jí)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。本文將帶你通過(guò)實(shí)際題目來(lái)熟練掌握
    2022-04-04
  • spring整合JMS實(shí)現(xiàn)同步收發(fā)消息(基于ActiveMQ的實(shí)現(xiàn))

    spring整合JMS實(shí)現(xiàn)同步收發(fā)消息(基于ActiveMQ的實(shí)現(xiàn))

    本篇文章主要介紹了spring整合JMS實(shí)現(xiàn)同步收發(fā)消息(基于ActiveMQ的實(shí)現(xiàn)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • MySQL數(shù)據(jù)文件直接通過(guò)拷貝備份與恢復(fù)的操作方法

    MySQL數(shù)據(jù)文件直接通過(guò)拷貝備份與恢復(fù)的操作方法

    這篇文章主要介紹了MySQL數(shù)據(jù)文件直接通過(guò)拷貝備份與恢復(fù)的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • Java通過(guò)Modbus簡(jiǎn)單實(shí)現(xiàn)數(shù)采的示例代碼

    Java通過(guò)Modbus簡(jiǎn)單實(shí)現(xiàn)數(shù)采的示例代碼

    本文介紹了Java通過(guò)Modbus簡(jiǎn)單實(shí)現(xiàn)數(shù)采,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Java 如何遍歷JsonObject對(duì)象

    Java 如何遍歷JsonObject對(duì)象

    這篇文章主要介紹了Java 如何遍歷JsonObject對(duì)象?今天小編就為大家分享一篇Java遍歷JsonObject對(duì)象案例,希望對(duì)大家有所幫助吧
    2021-01-01
  • 一文搞懂?MyBatis的事務(wù)管理機(jī)制

    一文搞懂?MyBatis的事務(wù)管理機(jī)制

    MyBatis是一款優(yōu)秀的持久層框架,相信很多Java后端開(kāi)發(fā)人員對(duì)它都不會(huì)陌生。本文將從事務(wù)概述、MyBatis實(shí)現(xiàn)事務(wù)的方式、事務(wù)實(shí)現(xiàn)源碼分析方面詳細(xì)解析MyBatis的事務(wù)管理機(jī)制,需要的朋友可以參考下
    2023-05-05
  • 使用Springboot封裝好的發(fā)送post請(qǐng)求的工具類(lèi)

    使用Springboot封裝好的發(fā)送post請(qǐng)求的工具類(lèi)

    本文介紹了在Springboot中封裝發(fā)送HTTP請(qǐng)求的工具類(lèi),并提供了普通的HTTP請(qǐng)求工具類(lèi)代碼和Response類(lèi)的使用示例,這些工具類(lèi)可為開(kāi)發(fā)者提供便利性和參考價(jià)值,幫助提高開(kāi)發(fā)效率
    2024-09-09
  • Java中JDBC連接數(shù)據(jù)庫(kù)詳解

    Java中JDBC連接數(shù)據(jù)庫(kù)詳解

    本文主要介紹了JDBC連接數(shù)據(jù)庫(kù)的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • 詳解Spring Boot Junit單元測(cè)試

    詳解Spring Boot Junit單元測(cè)試

    本篇文章主要介紹了詳解Spring Boot Junit單元測(cè)試,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07

最新評(píng)論

庆云县| 轮台县| 通河县| 枣阳市| 南宁市| 玉环县| 江孜县| 汉川市| 阿拉善右旗| 涞水县| 郴州市| 家居| 手机| 大姚县| 桐庐县| 山丹县| 成安县| 天峨县| 荣成市| 衡阳县| 大石桥市| 巴南区| 新建县| 射洪县| 和顺县| 阜南县| 莱西市| 宕昌县| 台北市| 互助| 潮安县| 尼勒克县| 青川县| 横峰县| 临沧市| 长武县| 顺平县| 巴青县| 临颍县| 兰西县| 二连浩特市|