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

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

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

準(zhǔn)備工作

(1)已成功注冊(cè) OpenAI 的賬號(hào)。
(2)創(chuàng)建 API KEY,這個(gè) API KEY 是用于 HTTP 請(qǐng)求身份驗(yàn)證的,可以創(chuàng)建多個(gè)。
注意這個(gè)創(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ǔ)全接口示例

該接口功能較多,支持最常用的問(wèn)答功能。
(1)請(qǐng)求方式,Post
(2)url:https://api.openai.com/v1/completions
(3)請(qǐng)求體 (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
請(qǐng)求參數(shù)解析:
字段                說(shuō)明
model               可選參教。語(yǔ)言模型,這里選擇的是text-davinci-003
prompt              必選參數(shù)。即用戶的輸入。
max_tokens          可選參數(shù),默認(rèn)值為 16。最大分詞數(shù),會(huì)影響返回結(jié)果的長(zhǎng)度.
temperature         可選參數(shù),默認(rèn)值為 1,取值 0-2。該值越大每次返回的結(jié)果越隨機(jī),即相似度越小。
top_p               可選參數(shù),與temperature類似。
n                   可選參數(shù),默認(rèn)值為 1。表示對(duì)每條prompt生成多少條結(jié)果
stream              可選參數(shù),默認(rèn)值為false。表示是否回流部分結(jié)果

申請(qǐng)API-KEY

訪問(wèn)地址: https://platform.openai.com/account/api-keys 登錄賬號(hào),然后創(chuàng)建API KEY: 這個(gè) API KEY 是用于 HTTP 請(qǐng)求身份驗(yàn)證的,可以創(chuàng)建多個(gè)。 注意這個(gè)創(chuàng)建之后需要馬上復(fù)制好保存,關(guān)閉彈框之后就看不到了。

JavaScript調(diào)用API

直接可以使用js+html開(kāi)發(fā)一個(gè)對(duì)話,具體的源碼如下:

<!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)建一個(gè)定時(shí)器,每隔一段時(shí)間打印一個(gè)字符
               var interval = setInterval(function() {
                     responseText.innerHTML += message[index];
                     index++;
                     // 當(dāng)打印完成時(shí),清除定時(shí)器
                     if (index >= message.length) {
                        clearInterval(interval);
                     }
                  },
                  150); // 每隔50毫秒打印一個(gè)字符
            }
            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)建一個(gè)定時(shí)器,每隔一段時(shí)間打印一個(gè)字符
                  var interval = setInterval(function() {
                        responseText.innerHTML += response[index];
                        index++;
                        // 當(dāng)打印完成時(shí),清除定時(shí)器
                        if (index >= response.length) {
                           clearInterval(interval);
                        }
                     },
                     50); // 每隔50毫秒打印一個(gè)字符
               }
            };
            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('正在思考,請(qǐng)等待......');
            await xhr.send(data);
         }
</script>
   </head>
   <body>
      <div class="filter-menu text-center mb-40">
         <h4>與Ai對(duì)話,請(qǐng)描述您的需求-支持中文、英語(yǔ)、日本語(yǔ)等</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="請(qǐng)耐心等待回答 Ai生成它很快,但是由于網(wǎng)絡(luò)問(wèn)題我們需要等待,通常內(nèi)容越長(zhǎng)等待越久 如果長(zhǎng)時(shí)間沒(méi)反應(yīng)請(qǐng)刷新頁(yè)面重試" 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)建一個(gè)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)請(qǐng)求代碼:
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)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決java中的父類私有成員變量的繼承問(wèn)題

    解決java中的父類私有成員變量的繼承問(wèn)題

    這篇文章主要介紹了解決java中的父類私有成員變量的繼承問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • Java基于余弦方法實(shí)現(xiàn)的計(jì)算相似度算法示例

    Java基于余弦方法實(shí)現(xiàn)的計(jì)算相似度算法示例

    這篇文章主要介紹了Java基于余弦方法實(shí)現(xiàn)的計(jì)算相似度算法,簡(jiǎn)單說(shuō)明了余弦相似性的概念、原理并結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)余弦相似性算法的相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • Springboot實(shí)現(xiàn)密碼的加密解密

    Springboot實(shí)現(xiàn)密碼的加密解密

    這篇文章主要為大家詳細(xì)介紹了Springboot實(shí)現(xiàn)密碼的加密解密,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • MyBatis-Plus?Page?分頁(yè)不生效的問(wèn)題解決

    MyBatis-Plus?Page?分頁(yè)不生效的問(wèn)題解決

    分頁(yè)是常見(jiàn)的一種功能,本文主要介紹了MyBatis-Plus?Page分頁(yè)不生效的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Java中Controller引起的Ambiguous?mapping問(wèn)題及解決

    Java中Controller引起的Ambiguous?mapping問(wèn)題及解決

    這篇文章主要介紹了Java中Controller引起的Ambiguous?mapping問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • springmvc處理異步請(qǐng)求的示例

    springmvc處理異步請(qǐng)求的示例

    這篇文章主要介紹了springmvc處理異步請(qǐng)求的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • SpringBoot應(yīng)用啟動(dòng)流程源碼解析

    SpringBoot應(yīng)用啟動(dòng)流程源碼解析

    這篇文章主要介紹了SpringBoot應(yīng)用啟動(dòng)流程源碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java實(shí)現(xiàn)的上傳并壓縮圖片功能【可等比例壓縮或原尺寸壓縮】

    Java實(shí)現(xiàn)的上傳并壓縮圖片功能【可等比例壓縮或原尺寸壓縮】

    這篇文章主要介紹了Java實(shí)現(xiàn)的上傳并壓縮圖片功能,可實(shí)現(xiàn)圖片的等比例壓縮或原尺寸壓縮,涉及java文件讀寫(xiě)、轉(zhuǎn)換、傳輸?shù)认嚓P(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • mybatis中resulthandler的用法

    mybatis中resulthandler的用法

    這篇文章主要介紹了mybatis中resulthandler的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring AOP日志框架實(shí)現(xiàn)過(guò)程圖解

    Spring AOP日志框架實(shí)現(xiàn)過(guò)程圖解

    這篇文章主要介紹了Spring AOP日志框架實(shí)現(xiàn)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論

刚察县| 县级市| 泌阳县| 沂水县| 汾阳市| 阜阳市| 巢湖市| 锦州市| 修武县| 常州市| 乌审旗| 横山县| 金山区| 长泰县| 霍城县| 屏山县| 铁力市| 乐东| 拜城县| 湄潭县| 如皋市| 偃师市| 石城县| 岑巩县| 沾益县| 福建省| 宣汉县| 措勤县| 五大连池市| 任丘市| 密云县| 柳林县| 胶南市| 永嘉县| 石嘴山市| 大化| 三都| 油尖旺区| 遂宁市| 巫溪县| 永德县|