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

SpringBoot?整合ChatGPT?API項(xiàng)目實(shí)戰(zhàn)教程

 更新時間:2023年05月12日 09:28:51   作者:java之書  
這篇文章主要介紹了SpringBoot整合ChatGPT API項(xiàng)目實(shí)戰(zhàn)教程,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

準(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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?+?ECharts實(shí)現(xiàn)數(shù)據(jù)可視化的案例詳解

    Spring?+?ECharts實(shí)現(xiàn)數(shù)據(jù)可視化的案例詳解

    Apache?ECharts是一個基于?JavaScript?的開源可視化圖表庫,在網(wǎng)頁上實(shí)現(xiàn)數(shù)據(jù)的可視化,非常好用,本文將通過一個簡單的demo來給大家介紹一下Spring?+?ECharts如何數(shù)據(jù)可視化,需要的朋友可以參考下
    2023-07-07
  • 使用Lombok時@JsonIgnore注解失效解決方案

    使用Lombok時@JsonIgnore注解失效解決方案

    這篇文章主要為大家介紹了使用Lombok時@JsonIgnore注解失效問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • java中每月等額與先息后本計算

    java中每月等額與先息后本計算

    一般信用貸款會提供兩種還款方式:每月等額或者先息后本。每月等額,就是每月歸還等同的部分本金和利息,你手里在使用的本金其實(shí)是逐月減少的。先息后本就是先還利息,到期歸還本金。本文將介紹他們的實(shí)現(xiàn)方法。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • Idea2023創(chuàng)建springboot不能選擇java8的解決方法(最新推薦)

    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種方式代碼舉例

    Java創(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
  • java發(fā)起http請求獲取返回的Json對象方法

    java發(fā)起http請求獲取返回的Json對象方法

    下面小編就為大家分享一篇java發(fā)起http請求獲取返回的Json對象方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • java compareTo和compare方法比較詳解

    java compareTo和compare方法比較詳解

    這篇文章主要介紹了java compareTo和compare方法比較詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Java?NIO?通道概念選擇器使用示例詳解

    Java?NIO?通道概念選擇器使用示例詳解

    這篇文章主要為大家介紹了Java?NIO?通道概念選擇器使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 對比Java講解Kotlin中?.與!!.的區(qū)別

    對比Java講解Kotlin中?.與!!.的區(qū)別

    這篇文章主要給大家介紹了關(guān)于對比Java,實(shí)例講解Kotlin中?.與!!.的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用kotlin具有一定參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • 簡述Java中的四種引用類型

    簡述Java中的四種引用類型

    從JDK1.2版本開始,把對象的引用分為四種級別,從而使程序能更加靈活的控制對象的生命周期。這四種級別由高到低依次為:強(qiáng)引用、軟引用、弱引用和虛引用,下面分別介紹下這四種引用。
    2021-04-04

最新評論