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

基于ChatGPT API的PC端軟件開發(fā)過程遇到的問題的分析

這篇具有很好參考價(jià)值的文章主要介紹了基于ChatGPT API的PC端軟件開發(fā)過程遇到的問題的分析。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

如果喜歡本文章,記得收藏哦!
關(guān)注我,一起學(xué)Java。

一、基于ChatGPT API的PC端軟件開發(fā)過程遇到的問題的分析

最近這個(gè)OpenAI公司推出的GPT-4.0模型真是太火了。當(dāng)然由于OpenAI目前還沒有正式全面對外開放GPT-4.0 API,所以本次使用的是GPT-3.5 API。

首先來看一下效果圖吧!

本客戶端使用的是 JavaFX 開發(fā)的。JavaFX 相比于 Swing 來說,JavaFX 支持 CSS 樣式,如果使用 Java 來開發(fā) GUI 軟件的話,還是推薦使用 JavaFX 的。JavaFX 是 2008 年由 Oracle 公司推出的項(xiàng)目。需要說明的是在高版本的 JDK 中不含有 JavaFX 相關(guān)的 API,所以你需要自己安裝 JavaFX。因?yàn)槲议_發(fā)使用的是 JDK 8 所以無需自己另外安裝 JavaFX,直接就可以調(diào)用 JavaFX API。

上面的圖中我們可以看到使用 JavaFX 編寫的 UI 界面不是太好看,沒辦法 Java 是我的主力編程語言,所以只能用 Java 來編寫 UI 界面了。

主要有四個(gè)功能,分別是:發(fā)送,保存,查看,刪除。其中發(fā)送是最核心的功能。在發(fā)送時(shí)會間接調(diào)用 GPT-3.5 API,這里為什么說是間接調(diào)用而不是直接調(diào)用呢,想必大家都知道,這個(gè) OpenAI 公司是不對我們中國地區(qū)開放的,雖然我們可以直接訪問OpenAI 的官方網(wǎng)站,但是不能訪問 OpenAI 的產(chǎn)品ChatGPT。所以這里我們必須要自己使用一個(gè)國外的服務(wù)器作為中轉(zhuǎn)服務(wù)器。很容易理解為啥使用中轉(zhuǎn)服務(wù)器就可以訪問GPT API,比如你是A,你可以訪問B,但是你無法訪問C,然而B是可以訪問C的,那么你就可以告訴B,讓B把信息傳遞給C。

這里我只講開發(fā)客戶端軟件遇到的問題,不會講解如何編寫接口。

二、遇到的第一個(gè)問題,用戶點(diǎn)擊發(fā)送按鈕后,線程阻塞

這個(gè)問題主要是因?yàn)橛脩酎c(diǎn)擊了發(fā)送按鈕后會調(diào)用 Hutool 工具類中的 HttpRequest.post() 方法將數(shù)據(jù)發(fā)送到自己定義的接口上。代碼如下:

sendButton.setOnAction(e -> sendMessage());
private void sendMessage() {
    // 獲取用戶輸入的消息并將其添加到聊天區(qū)域
    String prompt = inputArea.getText();

    // 獲取當(dāng)前時(shí)間
    String nowTime = getNowTime();
    chatArea.appendText(nowTime + "\n");
    chatArea.appendText("我說:" + prompt + "\n\n");

    // 清空輸入框
    inputArea.setText("");

    // 存儲上下文語境
    messages.add(new Message("user", prompt));

    // 獲取 ChatGPT 的回復(fù)
    String reply = httpRequest(messages);

    // 機(jī)器人回復(fù)時(shí)間
    String replyTime = getNowTime();
    chatArea.appendText(replyTime + "\n");
    // 把內(nèi)容顯示到 UI 界面上
    chatArea.appendText("機(jī)器人說:" + reply + "\n\n");

    messages.add(new Message("assistant", reply));
}

在上面的代碼中,運(yùn)行的時(shí)候給用戶的感覺是不好的,因?yàn)樵谡{(diào)用 httpRequest(messages) 時(shí)會造成線程阻塞。因?yàn)樵诋?dāng)前線程在進(jìn)行網(wǎng)絡(luò)請求時(shí)是非常耗時(shí)的操作,所以整個(gè) main 線程會阻塞,導(dǎo)致應(yīng)用卡頓,如果 ChatGPT 一直沒有響應(yīng)結(jié)果,那么會一直卡在那里。

或許你們想到的是創(chuàng)建一個(gè)新的線程來發(fā)送 http 請求就解決了,其實(shí)不是的,問題的根源在我們點(diǎn)擊“發(fā)送”按鈕,我們應(yīng)該在點(diǎn)擊發(fā)送按鈕的時(shí)候創(chuàng)建新的線程,當(dāng)然這里我在發(fā)送 http 的時(shí)候也是創(chuàng)建了新的線程。代碼如下:

sendButton.setOnAction(e -> {
    Task<Void> task = new Task<Void>() {
        @Override
        protected Void call() throws Exception {
            // 執(zhí)行耗時(shí)操作,例如發(fā)送網(wǎng)絡(luò)請求或執(zhí)行計(jì)算密集型任務(wù)
            sendMessage();
            // 返回null
            return null;
        }
    };

    // 在后臺線程上執(zhí)行Task
    new Thread(task).start();

    // 將操作提交到JavaFX應(yīng)用程序線程隊(duì)列中
    Platform.runLater(() -> {
        // 在此更新UI或執(zhí)行其他需要在JavaFX應(yīng)用程序線程上執(zhí)行的操作
    });
});
private void sendMessage() {
    // 獲取用戶輸入的消息并將其添加到聊天區(qū)域
    String prompt = inputArea.getText();

    // 獲取當(dāng)前時(shí)間
    String nowTime = getNowTime();
    chatArea.appendText(nowTime + "\n");
    chatArea.appendText("我說:" + prompt + "\n\n");

    // 清空輸入框
    inputArea.setText("");

    // 存儲上下文語境
    messages.add(new Message("user", prompt));

    // 獲取 ChatGPT 的回復(fù)
    // String reply = httpRequest(messages);

    // 創(chuàng)建新的線程去發(fā)送 ChatGPT 請求
    FutureTask<String> task = new FutureTask<String>(new Callable<String>() {
        @Override
        public String call() throws Exception {
            return httpRequest(messages);
        }
    });
    new Thread(task).start();
    try {
        String reply = task.get();

        // 機(jī)器人回復(fù)時(shí)間
        String replyTime = getNowTime();
        chatArea.appendText(replyTime + "\n");
        // 把內(nèi)容顯示到 UI 界面上
        chatArea.appendText("機(jī)器人說:" + reply + "\n\n");

        messages.add(new Message("assistant", reply));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

注意:如果想要更新 UI 界面的內(nèi)容,那么可以使用Platform.runLater()。

三、第二個(gè)問題是ChatGPT無法進(jìn)行連續(xù)對話,也就是沒有上下文語境

這個(gè)問題折騰了好久。官方開發(fā)文檔好像也沒有特地說明這一點(diǎn)。我是研究了 GitHub 的代碼,并且網(wǎng)上搜索了別人的想法,然后知道必須要把聊天記錄再次發(fā)送給 ChatGPT API。但是這樣就會消耗更多的資金。因?yàn)?OpenAI 并非真的是 Open。

我們每次把聊天記錄發(fā)送給 ChatGPT 就行。

這里我們使用一個(gè)集合存放聊天記錄,每次把聊天記錄追加到集合里面即可。然后把 List 集合發(fā)送到 ChatGPT API。

// 存放上下文語境
private List<Message> messages = new ArrayList<>();
// 存儲上下文語境
messages.add(new Message("system", "你是一個(gè)助手"));
messages.add(new Message("user", prompt));
messages.add(new Message("assistant", reply));

其中 Message 類代碼如下:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Message {
    private String role;
    private String content;
}

ChatGPT 開發(fā)文檔中說明了 role 有三種值,一個(gè)是 system,表示讓 ChatGPT 充當(dāng)什么角色,第二種取值是 user,表示用戶,第三種是 assistant,表示 ChatGPT。而角色對應(yīng)的內(nèi)容存儲到 content 變量中。這類似于 map 集合,也就是 role 是 key,content 是 value。


有更多問題歡迎訪問博客。文章來源地址http://www.zghlxwxcb.cn/news/detail-401930.html

到了這里,關(guān)于基于ChatGPT API的PC端軟件開發(fā)過程遇到的問題的分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 手機(jī)版ChatGPT軟件開發(fā)

    手機(jī)版ChatGPT軟件開發(fā)

    ? ? 手機(jī)版ChatGPT軟件開發(fā)需要以下步驟: ? ? 確定需求:明確手機(jī)版ChatGPT軟件的功能和特點(diǎn),包括用戶界面、交互方式、語音識別、自然語言處理等方面的要求。 ? ? 設(shè)計(jì)UI界面:根據(jù)需求設(shè)計(jì)手機(jī)版ChatGPT軟件的UI界面,包括首頁、導(dǎo)航欄、對話框等元素的設(shè)計(jì),保證良好

    2024年02月15日
    瀏覽(10)
  • Fpga開發(fā)筆記(二):高云FPGA發(fā)開發(fā)軟件Gowin和高云fpga基本開發(fā)過程

    Fpga開發(fā)筆記(二):高云FPGA發(fā)開發(fā)軟件Gowin和高云fpga基本開發(fā)過程

    若該文為原創(chuàng)文章,轉(zhuǎn)載請注明原文出處 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/135620590 紅胖子網(wǎng)絡(luò)科技博文大全:開發(fā)技術(shù)集合(包含Qt實(shí)用技術(shù)、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機(jī)、軟硬結(jié)合等等)持續(xù)更新中… 上一篇:《Fpga開發(fā)筆記(一):

    2024年01月16日
    瀏覽(24)
  • chatgpt模擬機(jī)器人軟件開發(fā)

    chatgpt模擬機(jī)器人軟件開發(fā)

    ? ? ChatGPT的參數(shù)取決于具體的模型和實(shí)現(xiàn)方式,但以下是一些常見的ChatGPT參數(shù): ? ? 模型深度:指模型中神經(jīng)網(wǎng)絡(luò)的層數(shù)。通常情況下,層數(shù)越多,模型的表達(dá)能力也就越強(qiáng)。 ? ? 隱藏單元大小:指在模型中每個(gè)隱藏層中神經(jīng)元的數(shù)量。通常情況下,隱藏單元數(shù)量越多,模

    2024年02月01日
    瀏覽(27)
  • 盤點(diǎn)好用的API管理軟件,API管理開發(fā)工具Postman

    盤點(diǎn)好用的API管理軟件,API管理開發(fā)工具Postman

    Postman是一款簡單高效的api管理開發(fā)工具,你可以在組織良好的圖形用戶界面中管理,組織和測試API,并加速新應(yīng)用程序的開發(fā)。Postman破解版為您提供了為API創(chuàng)建和組織HTTP請求的可能性,同時(shí)還集成了測試功能。您可以創(chuàng)建自定義方案并以簡化的方式分析API響應(yīng)。而且由于云

    2023年04月08日
    瀏覽(25)
  • 軟件測試/測試開發(fā)丨ChatGPT在軟件測試領(lǐng)域的應(yīng)用

    軟件測試/測試開發(fā)丨ChatGPT在軟件測試領(lǐng)域的應(yīng)用

    隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,軟件已經(jīng)成為現(xiàn)代社會中不可或缺的一部分。而軟件測試作為保障軟件質(zhì)量的關(guān)鍵環(huán)節(jié),也越來越受到人們的關(guān)注。在這個(gè)領(lǐng)域,ChatGPT作為一種新型的人工智能技術(shù),正逐漸應(yīng)用于軟件測試領(lǐng)域,為軟件測試帶來了諸多創(chuàng)新和改進(jìn)。 在軟件測試

    2024年02月14日
    瀏覽(33)
  • 軟件工程:小組開發(fā)過程技術(shù)(VS VSS UNIX C++)

    軟件工程:小組開發(fā)過程技術(shù)(VS VSS UNIX C++)

    ? ? ? ? ( 注:這個(gè)東西是2007年寫的,算是個(gè)緬懷,或是個(gè)吐槽。所有注都是本次發(fā)布新加的。 ) 簡介 ????????本文講述完全沒有軟件工程經(jīng)驗(yàn)的軟件小組如何借助VS VSS等工具為UNIX開發(fā)C++程序,實(shí)現(xiàn)在小組規(guī)模的初級開發(fā)過程。這不是TSPi或者CMM,這比CMM1級(初始級)

    2024年02月07日
    瀏覽(22)
  • openharmony開發(fā)最新4.0版本----介紹openharmony(基于api10 ,華為dev studio 4.0,分享學(xué)習(xí)過程中遇到的難題難點(diǎn)),學(xué)習(xí)筆記,持續(xù)更新

    ????????DevEco Studio(OpenHarmony)使用指南: ????????HUAWEI DevEco Studio For OpenHarmony(以下簡稱DevEco Studio)是基于IntelliJ IDEA Community開源版本打造,面向OpenHarmony全場景多設(shè)備的一站式集成開發(fā)環(huán)境(IDE),為開發(fā)者提供工程模板創(chuàng)建、開發(fā)、編譯、調(diào)試、發(fā)布等E2E的Open

    2024年02月03日
    瀏覽(19)
  • ChatGPT 驅(qū)動軟件開發(fā):AI 在軟件研發(fā)全流程中的革新與實(shí)踐

    ChatGPT 驅(qū)動軟件開發(fā):AI 在軟件研發(fā)全流程中的革新與實(shí)踐

    計(jì)算機(jī)技術(shù)的發(fā)展和互聯(lián)網(wǎng)的普及,使信息處理和傳輸變得更加高效,極大地改變了金融、商業(yè)、教育、娛樂等領(lǐng)域的運(yùn)作方式。數(shù)據(jù)分析、人工智能和云計(jì)算等新興技術(shù),也在不斷地影響和改變著各個(gè)行業(yè)。 如今,我們正在見證人工智能技術(shù)的突破性發(fā)展。以O(shè)penAI的ChatG

    2024年02月08日
    瀏覽(28)
  • 【好書推薦】ChatGPT 驅(qū)動軟件開發(fā):AI 在軟件研發(fā)全流程中的革新與實(shí)踐

    【好書推薦】ChatGPT 驅(qū)動軟件開發(fā):AI 在軟件研發(fā)全流程中的革新與實(shí)踐

    計(jì)算機(jī)技術(shù)的發(fā)展和互聯(lián)網(wǎng)的普及,使信息處理和傳輸變得更加高效,極大地改變了金融、商業(yè)、教育、娛樂等領(lǐng)域的運(yùn)作方式。數(shù)據(jù)分析、人工智能和云計(jì)算等新興技術(shù),也在不斷地影響和改變著各個(gè)行業(yè)。 如今,我們正在見證人工智能技術(shù)的突破性發(fā)展。以O(shè)penAI的ChatG

    2024年02月06日
    瀏覽(245)
  • 軟件測試/測試開發(fā)丨使用ChatGPT自動進(jìn)行需求分析

    軟件測試/測試開發(fā)丨使用ChatGPT自動進(jìn)行需求分析

    在實(shí)際工作過程中,常常需要拿到產(chǎn)品的PRD文檔或者原型圖進(jìn)行需求分析,為產(chǎn)品的功能設(shè)計(jì)和優(yōu)化提供建議。 而使用ChatGPT可以很好地幫助分析和整理用戶需求。 接下來,需要使用ChatGPT 輔助我們完成需求分析的任務(wù) 注意:為了方便展示,所有GPT的回復(fù)都將使用文本格式展

    2024年02月09日
    瀏覽(95)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包