国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot 整合 ChatGPT API 項(xiàng)目實(shí)戰(zhàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

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

  • 一、準(zhǔn)備工作

  • 二、補(bǔ)全接口示例

  • 三、申請(qǐng)API-KEY

  • 四、JavaScript調(diào)用API

  • 五、SpringBoot使用ChatGPT API


體驗(yàn)到了ChatGPT的強(qiáng)大之后,那么我們會(huì)想,如果我們想基于ChatGPT開發(fā)一個(gè)自己的聊天機(jī)器人,這個(gè)能搞定嗎?

ChatGPT平臺(tái)已經(jīng)為技術(shù)提供了一個(gè)入口了,很簡(jiǎn)單的就是實(shí)現(xiàn)了。

一、準(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美元的用量,足夠大家放心使用。

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

二、補(bǔ)全接口示例

該接口功能較多,支持最常用的問答功能。

(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ù)解析:

字段 說明
model 可選參數(shù)。語言模型,這里選擇的是text-davinci-003
prompt 必選參數(shù)。即用戶的輸入。
max_tokens 可選參數(shù),默認(rèn)值為 16。最大分詞數(shù),會(huì)影響返回結(jié)果的長度。
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

訪問地址:

https://platform.openai.com/account/api-keys

登錄賬號(hào),然后創(chuàng)建API KEY:

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

這個(gè) API KEY 是用于 HTTP 請(qǐng)求身份驗(yàn)證的,可以創(chuàng)建多個(gè)。注意這個(gè)創(chuàng)建之后需要馬上復(fù)制好保存,關(guān)閉彈框之后就看不到了。

四、JavaScript調(diào)用API

直接可以使用js+html開發(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)描述您的需求-支持中文、英語、日本語等</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ò)問題我們需要等待,通常內(nèi)容越長等待越久 如果長時(shí)間沒反應(yīng)請(qǐ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")。

運(yùn)行一下html,看下效果:

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

五、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>

官網(wǎng)鏈接地址:https://platform.openai.com/docs/libraries/community-libraries

(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);

請(qǐng)?zhí)鎿QAPI-KEY。

運(yùn)行程序:

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

我就是我,是顏色不一樣的煙火。

我就是我,是與眾不同的小蘋果。文章來源地址http://www.zghlxwxcb.cn/news/detail-419062.html

到了這里,關(guān)于SpringBoot 整合 ChatGPT API 項(xiàng)目實(shí)戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【項(xiàng)目實(shí)戰(zhàn)】SpringBoot整合Kafka消息隊(duì)列(基于KafkaTemplate和@KafkaListener實(shí)現(xiàn))

    【項(xiàng)目實(shí)戰(zhàn)】SpringBoot整合Kafka消息隊(duì)列(基于KafkaTemplate和@KafkaListener實(shí)現(xiàn))

    Apache Kafka是分布式發(fā)布-訂閱消息系統(tǒng)。 它最初由LinkedIn公司開發(fā),之后成為Apache項(xiàng)目的一部分。 Kafka是一種快速、可擴(kuò)展的、設(shè)計(jì)內(nèi)在就是分布式的,分區(qū)的和可復(fù)制的提交日志服務(wù)。 Apache Kafka與傳統(tǒng)消息系統(tǒng)相比,有以下不同: 它將消息持久化到磁盤,因此可用于批量消

    2023年04月09日
    瀏覽(26)
  • 【Spring實(shí)戰(zhàn)項(xiàng)目】SpringBoot3整合WebSocket+攔截器實(shí)現(xiàn)登錄驗(yàn)證!從原理到實(shí)戰(zhàn)

    【Spring實(shí)戰(zhàn)項(xiàng)目】SpringBoot3整合WebSocket+攔截器實(shí)現(xiàn)登錄驗(yàn)證!從原理到實(shí)戰(zhàn)

    ???? 歡迎光臨,終于等到你啦 ???? ??我是 蘇澤 ,一位對(duì)技術(shù)充滿熱情的探索者和分享者。???? ??持續(xù)更新的專欄 《Spring 狂野之旅:從入門到入魔》 ?? 本專欄帶你從Spring入門到入魔 ? 這是蘇澤的個(gè)人主頁可以看到我其他的內(nèi)容哦???? 努力的蘇澤 http://suzee.blog.

    2024年04月17日
    瀏覽(21)
  • SpringBoot實(shí)戰(zhàn)項(xiàng)目整合RabbitMQ+ElaticSearch實(shí)現(xiàn)SKU上下架功能_尚上優(yōu)選整合es+mq實(shí)現(xiàn)商品上下架(1)

    SpringBoot實(shí)戰(zhàn)項(xiàng)目整合RabbitMQ+ElaticSearch實(shí)現(xiàn)SKU上下架功能_尚上優(yōu)選整合es+mq實(shí)現(xiàn)商品上下架(1)

    文章目錄 前言 1、前置條件 2、搭建service-search模塊 3、開發(fā)功能接口 3.1 添加遠(yuǎn)程調(diào)用方法 3.2、創(chuàng)建遠(yuǎn)程調(diào)用模塊 3.3、開發(fā)service-search 模塊接口 4、RabbitMQ 5、完善SKU管理商品上下架 5.1、商品服務(wù) 5.2、es服務(wù) 6、最終測(cè)試 總結(jié) 最終實(shí)現(xiàn)效果:針對(duì)SKU的上下架 上架效果: 1、后

    2024年04月17日
    瀏覽(29)
  • 7.15 SpringBoot項(xiàng)目實(shí)戰(zhàn) 【學(xué)生入駐】(上):從API接口定義 到 Mybatis查詢 串講

    7.15 SpringBoot項(xiàng)目實(shí)戰(zhàn) 【學(xué)生入駐】(上):從API接口定義 到 Mybatis查詢 串講

    接下來我們實(shí)戰(zhàn)【學(xué)生入駐】,對(duì)于C端學(xué)生端,一切交互開始于知道 當(dāng)前學(xué)生是否入駐 、 是否有借閱資格 ,所以SpringBoot后端需要提供給vue前端的第一個(gè)API是:當(dāng)前登錄的學(xué)生信息(是否入駐、是否有借閱資格)! 所以,本文將使用SpringBoot實(shí)現(xiàn)C端學(xué)生端第一個(gè)接口:查詢

    2024年02月08日
    瀏覽(15)
  • 【Elasticsearch學(xué)習(xí)筆記五】es常用的JAVA API、es整合SpringBoot項(xiàng)目中使用、利用JAVA代碼操作es、RestHighLevelClient客戶端對(duì)象

    目錄 一、Maven項(xiàng)目集成Easticsearch 1)客戶端對(duì)象 2)索引操作 3)文檔操作 4)高級(jí)查詢 二、springboot項(xiàng)目集成Spring Data操作Elasticsearch 1)pom文件 2)yaml 3)數(shù)據(jù)實(shí)體類 4)配置類 5)Dao數(shù)據(jù)訪問對(duì)象 6)索引操作 7)文檔操作 8)文檔搜索 三、springboot項(xiàng)目集成bboss操作elasticsearch

    2023年04月09日
    瀏覽(37)
  • 【SpringBoot篇】SpringBoot整合Mybatis實(shí)戰(zhàn)

    【SpringBoot篇】SpringBoot整合Mybatis實(shí)戰(zhàn)

    ??專欄【SpringBoot】 ??喜歡的詩句:天行健,君子以自強(qiáng)不息。 ??音樂分享【如愿】 ??歡迎并且感謝大家指出小吉的問題?? Spring Boot可以非常方便地集成MyBatis來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問,從而快速搭建項(xiàng)目持久層。如果你也想利用Spring Boot整合MyBatis,本文將為你詳細(xì)講解整合過

    2024年02月05日
    瀏覽(21)
  • Springboot整合mybatisplus實(shí)戰(zhàn)

    Springboot整合mybatisplus實(shí)戰(zhàn)

    Springboot整合mybatisplus,純后端,驗(yàn)證結(jié)果是通過postman調(diào)用的,記錄一下 1、建表語句以及初始化數(shù)據(jù)腳本 2、項(xiàng)目目錄 ?3、pom文件 4、application文件 5、PO類以及VO類 6、Dao層 7、service以及實(shí)現(xiàn)類 8、controller層 9、為了給前端返回統(tǒng)一的值,再加一些優(yōu)化 10、mybatisplus分頁插件配置

    2024年02月10日
    瀏覽(15)
  • SpringBoot整合Swagger-UI實(shí)現(xiàn)在線API文檔

    SpringBoot整合Swagger-UI實(shí)現(xiàn)在線API文檔

    ?作者簡(jiǎn)介:大家好,我是Leo,熱愛Java后端開發(fā)者,一個(gè)想要與大家共同進(jìn)步的男人??????個(gè)人主頁:Leo的博客 ??當(dāng)前專欄: 循序漸進(jìn)學(xué)SpringBoot ?特色專欄: MySQL學(xué)習(xí) ??本文內(nèi)容:SpringBoot整合Swagger-UI實(shí)現(xiàn)在線API文檔 ??個(gè)人知識(shí)庫: Leo知識(shí)庫,歡迎大家訪問

    2024年04月10日
    瀏覽(28)
  • rocketMq消息隊(duì)列原生api使用以及rocketMq整合springboot

    rocketMq消息隊(duì)列原生api使用以及rocketMq整合springboot

    使用RocketMQ的原生API開發(fā)是最簡(jiǎn)單也是目前看來最牢靠的方式。這里用SpringBoot來搭建一系列消息生產(chǎn)者和消息消費(fèi)者,來訪問之前搭建的RocketMQ集群。 首先創(chuàng)建一個(gè)基于Maven的SpringBoot工程,引入如下依賴: RocketMQ的官網(wǎng)上有很多經(jīng)典的測(cè)試代碼,這些代碼雖然依賴的版本比較

    2024年02月12日
    瀏覽(22)
  • 實(shí)戰(zhàn):SpringBoot與RabbitMQ整合

    隨著微服務(wù)架構(gòu)的普及,分布式系統(tǒng)的復(fù)雜性也逐漸增加。在這種架構(gòu)中,消息隊(duì)列成為了一種常見的解決方案,用于解耦服務(wù)之間的通信。RabbitMQ是一種流行的消息隊(duì)列系統(tǒng),它支持多種消息傳輸協(xié)議,如AMQP、MQTT、STOMP等。SpringBoot是一種簡(jiǎn)化Spring應(yīng)用開發(fā)的框架,它提供了

    2024年02月22日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包