SpringBoot?整合ChatGPT?API項目實戰(zhàn)教程
準備工作
(1)已成功注冊 OpenAI 的賬號。
(2)創(chuàng)建 API KEY,這個 API KEY 是用于 HTTP 請求身份驗證的,可以創(chuàng)建多個。
注意這個創(chuàng)建之后需要馬上復制好保存,關閉彈框之后就看不到了。
(3)官方 API 文檔鏈接:
https://platform.openai.com/docs/api-reference/authentication
(4)注意 API 調用是收費的,但是 OpenAI 已經(jīng)為我們免費提供了18美元的用量,足夠大家放心使用。
補全接口示例
該接口功能較多,支持最常用的問答功能。
(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ù),默認值為 16。最大分詞數(shù),會影響返回結果的長度.
temperature 可選參數(shù),默認值為 1,取值 0-2。該值越大每次返回的結果越隨機,即相似度越小。
top_p 可選參數(shù),與temperature類似。
n 可選參數(shù),默認值為 1。表示對每條prompt生成多少條結果
stream 可選參數(shù),默認值為false。表示是否回流部分結果申請API-KEY
訪問地址: https://platform.openai.com/account/api-keys 登錄賬號,然后創(chuàng)建API KEY: 這個 API KEY 是用于 HTTP 請求身份驗證的,可以創(chuàng)建多個。 注意這個創(chuàng)建之后需要馬上復制好保存,關閉彈框之后就看不到了。

JavaScript調用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++;
// 當打印完成時,清除定時器
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++;
// 當打印完成時,清除定時器
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)絡問題我們需要等待,通常內容越長等待越久 如果長時間沒反應請刷新頁面重試" 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)構建一個Spring Boot項目,這里使用的是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);
到此這篇關于SpringBoot 整合ChatGPT API項目實戰(zhàn)的文章就介紹到這了,更多相關SpringBoot 整合ChatGPT API項目內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Java調用ChatGPT(基于SpringBoot和Vue)實現(xiàn)可連續(xù)對話和流式輸出的ChatGPT API
- SpringBoot?整合ChatGPT?API項目實戰(zhàn)教程
- Java SpringBoot集成ChatGPT實現(xiàn)AI聊天
- springboot+chatgpt+chatUI Pro開發(fā)智能聊天工具的實踐
- SpringBoot整合chatGPT的項目實踐
- 基于ChatGPT+SpringBoot實現(xiàn)智能聊天AI機器人接口并上線至服務器的方法
- SpringBoot3.0自定stater模塊的操作流程(chatGPT提供的49種場景)
- SpringBoot3.0整合chatGPT的完整步驟
相關文章
Spring?+?ECharts實現(xiàn)數(shù)據(jù)可視化的案例詳解
Apache?ECharts是一個基于?JavaScript?的開源可視化圖表庫,在網(wǎng)頁上實現(xiàn)數(shù)據(jù)的可視化,非常好用,本文將通過一個簡單的demo來給大家介紹一下Spring?+?ECharts如何數(shù)據(jù)可視化,需要的朋友可以參考下2023-07-07
Idea2023創(chuàng)建springboot不能選擇java8的解決方法(最新推薦)
在idea2023版本創(chuàng)建springboot的過程中,選擇java版本時發(fā)現(xiàn)沒有java8版本,只有java17和java20,遇到這樣的問題如何解決呢,下面小編給大家分享Idea2023創(chuàng)建springboot不能選擇java8的解決方法,感興趣的朋友一起看看吧2024-01-01
Java創(chuàng)建數(shù)組的3種方式代碼舉例
數(shù)組是相同類型數(shù)據(jù)的有序集合,數(shù)組描述的是若干個相同類型的數(shù)據(jù)按照一定的先后次序排列組合而成,其中每一個數(shù)據(jù)稱為數(shù)組的元素,可以通過下標進行訪問,這篇文章主要給大家介紹了關于Java創(chuàng)建數(shù)組的3種方式,需要的朋友可以參考下2024-01-01

