SpringBoot?整合ChatGPT?API項(xiàng)目實(shí)戰(zhàn)教程
準(zhǔn)備工作
(1)已成功注冊 OpenAI 的賬號。
(2)創(chuàng)建 API KEY,這個 API KEY 是用于 HTTP 請求身份驗(yàn)證的,可以創(chuàng)建多個。
注意這個創(chuàng)建之后需要馬上復(fù)制好保存,關(guān)閉彈框之后就看不到了。
(3)官方 API 文檔鏈接:
https://platform.openai.com/docs/api-reference/authentication
(4)注意 API 調(diào)用是收費(fèi)的,但是 OpenAI 已經(jīng)為我們免費(fèi)提供了18美元的用量,足夠大家放心使用。
補(bǔ)全接口示例
該接口功能較多,支持最常用的問答功能。 (1)請求方式,Post (2)url:https://api.openai.com/v1/completions (3)請求體 (json)。 { "model": "text-davinci-003", "prompt": "Say this is a test", "max_tokens": 7, "temperature": 0, "top_p": 1, "n": 1, "stream": false } (4)接口文檔 https://platform.openai.com/docs/api-reference/completions/create 請求參數(shù)解析: 字段 說明 model 可選參教。語言模型,這里選擇的是text-davinci-003 prompt 必選參數(shù)。即用戶的輸入。 max_tokens 可選參數(shù),默認(rèn)值為 16。最大分詞數(shù),會影響返回結(jié)果的長度. temperature 可選參數(shù),默認(rèn)值為 1,取值 0-2。該值越大每次返回的結(jié)果越隨機(jī),即相似度越小。 top_p 可選參數(shù),與temperature類似。 n 可選參數(shù),默認(rèn)值為 1。表示對每條prompt生成多少條結(jié)果 stream 可選參數(shù),默認(rèn)值為false。表示是否回流部分結(jié)果
申請API-KEY
訪問地址: https://platform.openai.com/account/api-keys 登錄賬號,然后創(chuàng)建API KEY: 這個 API KEY 是用于 HTTP 請求身份驗(yàn)證的,可以創(chuàng)建多個。 注意這個創(chuàng)建之后需要馬上復(fù)制好保存,關(guān)閉彈框之后就看不到了。
JavaScript調(diào)用API
直接可以使用js+html開發(fā)一個對話,具體的源碼如下:
<!doctype html> <html class="no-js" lang=""> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <title>Ai - Chat</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> #chatgpt-response { font-family: "宋體"; font-size: 20px; color: #0000FF; font-weight: bold; } </style> <script> async function callCHATGPT() { var responseText1 = document.getElementById("chatgpt-response"); responseText1.innerHTML = "" function printMessage(message) { var responseText = document.getElementById("chatgpt-response"); var index = 0; // 創(chuàng)建一個定時器,每隔一段時間打印一個字符 var interval = setInterval(function() { responseText.innerHTML += message[index]; index++; // 當(dāng)打印完成時,清除定時器 if (index >= message.length) { clearInterval(interval); } }, 150); // 每隔50毫秒打印一個字符 } var xhr = new XMLHttpRequest(); var url = "https://api.openai.com/v1/completions"; xhr.open("POST", url, true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.setRequestHeader("Authorization", "Bearer API-KEY"); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { var json = JSON.parse(xhr.responseText); var response = json.choices[0].text; // 將CHATGPT的返回值輸出到文本框 var responseText = document.getElementById("chatgpt-response"); var index = 0; // 創(chuàng)建一個定時器,每隔一段時間打印一個字符 var interval = setInterval(function() { responseText.innerHTML += response[index]; index++; // 當(dāng)打印完成時,清除定時器 if (index >= response.length) { clearInterval(interval); } }, 50); // 每隔50毫秒打印一個字符 } }; var data = JSON.stringify({ "prompt": document.getElementById("chat-gpt-input").value, "max_tokens": 2048, "temperature": 0.5, "top_p": 1, "frequency_penalty": 0, "presence_penalty": 0, "model": "text-davinci-003" }); console.log(data); await printMessage('正在思考,請等待......'); await xhr.send(data); } </script> </head> <body> <div class="filter-menu text-center mb-40"> <h4>與Ai對話,請描述您的需求-支持中文、英語、日本語等</h4> </div> <textarea class="form-control" id="chat-gpt-input" placeholder="輸入描述" rows="3" resize="none" style="width: 135%; margin: 0 auto; background-color: #f4f4f4; color: #333; border: 1px solid #ccc; border-radius: 12px;"></textarea> <button onclick="callCHATGPT()" autocomplete="off" class="btn btn-large" href="#" style="background-color: #333; color: #f4f4f4; border-radius: 10px"> <span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>回答 </button> <textarea class="form-control" id="chatgpt-response" placeholder="請耐心等待回答 Ai生成它很快,但是由于網(wǎng)絡(luò)問題我們需要等待,通常內(nèi)容越長等待越久 如果長時間沒反應(yīng)請刷新頁面重試" rows="26" resize="none" style="width: 150%;height: auto; margin: 0 auto; background-color: #f4f4f4; color: #333; border: 1px solid #ccc; border-radius: 10px; overflow: scroll;" readonly="true"></textarea>
注意:需要替換自己的api-key,修改這一行代碼:
xhr.setRequestHeader(“Authorization”, “Bearer API-KEY”)。
SpringBoot使用ChatGPT API
(1)構(gòu)建一個Spring Boot項(xiàng)目,這里使用的是2.7.6版本; (2)引入依賴: <dependency> <groupId>com.theokanning.openai-gpt3-java</groupId> <artifactId>service</artifactId> <version>0.10.0</version> </dependency> (3)請求代碼: String token = "API-KEY ";//System.getenv("OPENAI_TOKEN"); OpenAiService service = new OpenAiService(token); CompletionRequest completionRequest = CompletionRequest.builder() .model("text-davinci-003") .prompt("今天天氣怎么樣?") .temperature(0.5) .maxTokens(2048) .topP(1D) .frequencyPenalty(0D) .presencePenalty(0D) .build(); service.createCompletion(completionRequest).getChoices().forEach(System.out::println);
到此這篇關(guān)于SpringBoot 整合ChatGPT API項(xiàng)目實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)SpringBoot 整合ChatGPT API項(xiàng)目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java調(diào)用ChatGPT(基于SpringBoot和Vue)實(shí)現(xiàn)可連續(xù)對話和流式輸出的ChatGPT API
- SpringBoot?整合ChatGPT?API項(xiàng)目實(shí)戰(zhàn)教程
- Java SpringBoot集成ChatGPT實(shí)現(xiàn)AI聊天
- springboot+chatgpt+chatUI Pro開發(fā)智能聊天工具的實(shí)踐
- SpringBoot整合chatGPT的項(xiàng)目實(shí)踐
- 基于ChatGPT+SpringBoot實(shí)現(xiàn)智能聊天AI機(jī)器人接口并上線至服務(wù)器的方法
- SpringBoot3.0自定stater模塊的操作流程(chatGPT提供的49種場景)
- SpringBoot3.0整合chatGPT的完整步驟
相關(guān)文章
Spring?+?ECharts實(shí)現(xiàn)數(shù)據(jù)可視化的案例詳解
Apache?ECharts是一個基于?JavaScript?的開源可視化圖表庫,在網(wǎng)頁上實(shí)現(xiàn)數(shù)據(jù)的可視化,非常好用,本文將通過一個簡單的demo來給大家介紹一下Spring?+?ECharts如何數(shù)據(jù)可視化,需要的朋友可以參考下2023-07-07Idea2023創(chuàng)建springboot不能選擇java8的解決方法(最新推薦)
在idea2023版本創(chuàng)建springboot的過程中,選擇java版本時發(fā)現(xiàn)沒有java8版本,只有java17和java20,遇到這樣的問題如何解決呢,下面小編給大家分享Idea2023創(chuàng)建springboot不能選擇java8的解決方法,感興趣的朋友一起看看吧2024-01-01Java創(chuàng)建數(shù)組的3種方式代碼舉例
數(shù)組是相同類型數(shù)據(jù)的有序集合,數(shù)組描述的是若干個相同類型的數(shù)據(jù)按照一定的先后次序排列組合而成,其中每一個數(shù)據(jù)稱為數(shù)組的元素,可以通過下標(biāo)進(jìn)行訪問,這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建數(shù)組的3種方式,需要的朋友可以參考下2024-01-01