基于ChatGPT+SpringBoot實(shí)現(xiàn)智能聊天AI機(jī)器人接口并上線至服務(wù)器的方法
?? ChatGPT是最近很熱門的AI智能聊天機(jī)器人
?? 本文使用SpringBoot+OpenAI的官方API接口,自己實(shí)現(xiàn)一個(gè)可以返回對(duì)話數(shù)據(jù)的接口并上線服務(wù)器
?? 用途方面相比于普通的聊天AI更加的廣泛,甚至可以幫助你改BUG,寫代碼?。?!
最終接口效果演示
ChatGPT介紹
ChatGPT是一款基于自然語(yǔ)言處理技術(shù)的聊天機(jī)器人。它使用受控語(yǔ)料庫(kù),并使用最先進(jìn)的深度學(xué)習(xí)技術(shù)來學(xué)習(xí)用戶的輸入,以便以最相似的方式回應(yīng)。ChatGPT可以模擬真實(shí)的人類對(duì)話,并能夠更貼近用戶的需求,提供更有價(jià)值的服務(wù)。
SpringBoot介紹
Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進(jìn)行配置,從而使開發(fā)人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力于在蓬勃發(fā)展的快速應(yīng)用開發(fā)領(lǐng)域(rapid application development)成為一個(gè)重要的先驅(qū)。
Spring Boot為Spring應(yīng)用提供了一種快速的起步方式,可用來創(chuàng)建獨(dú)立的,生產(chǎn)級(jí)的基于Spring的應(yīng)用程序。它提供了一種更快捷的方式來創(chuàng)建Spring應(yīng)用,并且不需要任何XML配置。Spring Boot提供了可選擇的高級(jí)特性,如持久層技術(shù)和安全性,可以讓你快速構(gòu)建令人滿意的web應(yīng)用程序和服務(wù)。
構(gòu)建SpringBoot項(xiàng)目
項(xiàng)目主要使用的maven依賴如下,通過Maven構(gòu)建項(xiàng)目即可
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.yopai</groupId> <artifactId>openapi</artifactId> <version>0.0.1-SNAPSHOT</version> <name>openapi</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>2.0.21</version> </dependency>
Post請(qǐng)求解析
RestTemplate是Spring框架的一個(gè)用于訪問RESTful服務(wù)的客戶端庫(kù),它提供了一組簡(jiǎn)單的、可擴(kuò)展的方法來訪問RESTful服務(wù)。它可以訪問HTTP服務(wù),并以字符串、Java對(duì)象或多種格式的數(shù)據(jù)(如JSON)進(jìn)行序列化和反序列化。RestTemplate支持多種HTTP方法,如GET、POST、PUT、DELETE等,可以用來訪問RESTful服務(wù),并獲取服務(wù)器返回的結(jié)果。
public static String sendPost(String data) { RestTemplate client = new RestTemplate(); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Authorization","Bearer <YourAPI>"); httpHeaders.add("Content-Type", "application/json"); // 傳遞請(qǐng)求體時(shí)必須設(shè)置 // String requestJson = "{\n" + // " \"model\": \"text-davinci-003\",\n" + // " \"prompt\": \"你好\",\n" + // " \"temperature\": 0, \n" + // " \"max_tokens\": 2048\n" + // "}"; String requestJson = String.format( "{\n" + " \"model\": \"text-davinci-003\",\n" + " \"prompt\": \"%s\",\n" + " \"temperature\": 0, \n" + " \"max_tokens\": 2048\n" + "}",data ); HttpEntity<String> entity = new HttpEntity<String>(requestJson,httpHeaders); ResponseEntity<String> response = client.exchange("https://api.openai.com/v1/completions", HttpMethod.POST, entity, String.class); System.out.println(response.getBody()); JSONObject jsonObject = JSONObject.parseObject(response.getBody()); JSONArray choices = jsonObject.getJSONArray("choices"); String text = choices.getJSONObject(0).getString("text"); // Object o = jsonObject.get("\"choices\""); return text; }
接口控制類
@PostMapping("gpt") public JsonData get(@RequestBody Promat promat){ String text = HttpGPT.sendPost(promat.getData()); System.out.println(promat); JsonData jsonData = JsonData.bulidSuccess(text); return jsonData; }
打包發(fā)布接口到服務(wù)器
通過IDEA將項(xiàng)目進(jìn)行打包后上傳到服務(wù)器,運(yùn)行以下命令即可完成線上部署
java -jar :運(yùn)行打包好的項(xiàng)目
nohup:讓項(xiàng)目在后臺(tái)一直運(yùn)行
之后把LocalHost修改成服務(wù)器的公網(wǎng)IP即可
到此這篇關(guān)于基于ChatGPT+SpringBoot實(shí)現(xiàn)智能聊天AI機(jī)器人接口并上線至服務(wù)器的文章就介紹到這了,更多相關(guān)ChatGPT+SpringBoot打造智能聊天AI機(jī)器人接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
多jdk環(huán)境下指定springboot外部配置文件詳解
這篇文章主要為大家介紹了多jdk環(huán)境下指定springboot外部配置文件詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03IDEA:Git stash 暫存分支修改的實(shí)現(xiàn)代碼
這篇文章主要介紹了IDEA:Git stash 暫存分支修改的實(shí)現(xiàn)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03Java多線程之JUC(java.util.concurrent)的常見類(多線程編程常用類)
這篇文章主要給大家介紹了關(guān)于Java多線程之JUC(java.util.concurrent)的常見類(多線程編程常用類)的相關(guān)資料,Java中的JUC(java.util.concurrent)包提供了一些并發(fā)編程中常用的類,這些類可以幫助我們更方便地實(shí)現(xiàn)多線程編程,需要的朋友可以參考下2024-02-02Can''t use Subversion command line client:svn 報(bào)錯(cuò)處理
這篇文章主要介紹了Can't use Subversion command line client:svn 報(bào)錯(cuò)處理的相關(guān)資料,需要的朋友可以參考下2016-09-09JFreeChart簡(jiǎn)單實(shí)現(xiàn)光滑曲線繪制
這篇文章主要為大家詳細(xì)介紹了JFreeChart簡(jiǎn)單實(shí)現(xiàn)光滑曲線的繪制,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06淺談Java中replace與replaceAll區(qū)別
這篇文章主要介紹了Java中replace與replaceAll區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-035分鐘讓你快速掌握java8 stream常用開發(fā)技巧
這篇文章主要給大家介紹了關(guān)于java8 stream常用開發(fā)技巧的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12