關於 ChatGPT 的個人理解和前端實踐
theme: juejin highlight: agate
前言
本篇文章的內容,包括專案都是 ChatGPT 輔助完成的,有很多簡介,專業術語、程式碼實現都是問的 TA,邊問邊寫。
開篇會以 ChatGPT 介紹為主,文末會重點介紹如何搭建專屬行業的數字人(這裡會涉及到前端一個比較有意思的技術點),文末有小程式體驗二維碼
下面某些場景會以“
TA
”來代指ChatGPT
,當然,我相信有一天“TA”會變成“他”和“她”~
ChatGPT 是什麼
TA 是一種基於人工智慧技術的自然語言處理工具,它可以模擬人類的對話方式,實現與人類的互動。TA 的核心技術是GPT(Generative Pre-trained Transformer)模型,TA 是一種基於Transformer
架構的自然語言生成模型,由OpenAI
公司開發。
ChatGPT 的優勢
TA 通過學習大量的語言資料,可以模擬人類的語言表達方式,理解人類的語言意圖,並且可以根據對話上下文生成自然流暢的回覆。
ChatGPT 應用場景
TA 可以應用於多個領域,例如客服機器人、智慧助手、智慧客服甚至能完成撰寫郵件、設計素材、視訊指令碼、文案、翻譯、程式碼,寫論文等任務。 TA 的應用場景非常廣泛,它可以為企業提供高效的客服解決方案,減少客服人員的工作量,提高客戶滿意度。同時,TA 還可以為智慧家居、智慧汽車等領域提供智慧化的語音互動解決方案,讓人們更加方便地使用智慧裝置。
周圍已經很多朋友開始訓練各行業模型了,比如說幫大學生寫論文(當然不推薦),保險行業導師、生成特定圖片素材等等,目前我主要把TA當作工具來用,比如寫文章、寫指令碼和格式化特定資料檔案等。
總之,ChatGpt是一種非常有前景的人工智慧技術,它可以為人們帶來更加智慧化、高效化的語言互動體驗,為企業提供更加優質的客戶服務。
呃~以上官方話術很多是 TA 自己介紹的自己
ChatGPT 如何使用
知乎:只需訪問 chat.openai.com 並建立一個 OpenAI 帳戶即可訪問 ChatGPT。登入後,您就可以開始使用 ChatGPT 聊天了...
當然很扯,看上圖就知道沒那麼簡單了
實際上需要做:
1. 國外伺服器代理
國內是無法直接訪問的(香港🇨🇳伺服器也不行),所以得掛個代理,偽裝在日本、新加坡或者美國,我們租的是日本伺服器
2. 擁有一個美國手機號
接碼平臺註冊:開啟網站:https://sms-activate.org/ 使用郵箱註冊,選擇充值1$,可以用支付寶,充值完畢會隨機分配一個手機號。
我們使用的手機號是之前創業的一個合夥人的手機號,他是定居美國,所以直接用的他的。
3. 註冊 OpenAI
開啟連結 https://beta.openai.com/signup 選擇使用 Google 登入即可,第二步中輸入分配給你的手機號,然後傳送驗證碼,回到剛剛的接碼平臺,就能看到收到的驗證碼了(20min有效)
4. 訪問
重新登入:http://chat.openai.com/auth/login
然後訪問:http://chat.openai.com/chat
和註冊美區 Apple ID 差不多的流程,當然也支援公司賬戶註冊
ChatGPT 怎麼收費?
最新官方定價——每1k個token的價格為0.002美元,比現有的GPT-3.5模型便宜10倍!
沒錯,是按字收費的,中文的話按兩個 token 計算,因為 TA 的成本主要集中在伺服器成本和算力成本,光引數都不到2000億個,可想而知成本是相當大的,這個也是和傳統搜尋引擎相比最大的一個缺點,畢竟搜尋是免費的,所以這些成本會均攤在使用者請求的每個字元上,按 token 計費
註冊賬號後每個賬戶會發放18$的贈送金額,如果用完了是需要付費的
ChatGPT 開發專屬數字人
訓練範圍
那有了賬號之後可以隨時和 TA 進行問答了,但是問題也來了,大家都用一個 TA 問問題,訓練模型,那 TA 聽誰的呢? 舉個例子:
小紅問:乾隆和雍正什麼關係
TA:乾隆是雍正他爹
小紅:啊?應該是雍正是乾隆他爹啊,記住了嗎?
TA:記住了
小明問:乾隆和雍正什麼關係
TA:乾隆是雍正他爹
小明:雍正是乾隆他爺爺,記住了嗎
TA:記住了
這時候小強也問了同樣的問題,那麼 TA 怎麼回答?
答案是:各自回答各自賬號訓練範圍內的答案。
其實不難理解,就像 gitlab
程式碼倉庫管理一樣,TA 也會有一個基座資料,相當於程式碼主倉庫,每個賬戶是基於基座資料 fork
出來的個人倉庫,允許在個人倉庫訓練特定行業資料,但是不允許合併到基座。一句話理解:不能 merge
到基座, 只能 rebase
基座資料到個人倉庫。
基座資料目前只更到2021年,所以需要使用者去手動訓練一些新的資料(如果有需求的話),當然由於 TA 是一個持續更新的模型,資料會隨著時間推移而不斷的更新。
OpenAI API
OpenAI
提供了API介面,通過這個介面,開發者可以使用 chatGPT
等 OpenAI
模型來構建自己的應用程式。
也就是我們可以通過呼叫開源介面來搭建自己的專屬應用,也就是某個行業專屬的數字人。
上下文記錄
體驗過的可能瞭解 TA 是能記錄並且分析上下文的,在 API 中每個請求支援的最大 token 數為 4000,一般會設定回答佔 2000 token,上下文用 2000 token,這樣當你提問的時候 TA 會優先結合儲存的上下文給出 TA 認為最匹配的回答,這也是能進行持續性對話的基礎。
前端er需要搞點什麼
既然有開源介面,那後端需要做的是作為 client 向 server 傳送請求來呼叫開源 API(國外伺服器掛代理的原因)
前端需要做的是實現一個和 TA 有相同功能的 UI 介面(就以聊天對話場景為例):
1. 需要做聊天互動元件
比如說需要支援文字,檔案,視訊,圖片等展示,推薦一個開源 UI 庫:ChatUI
這個是阿里小蜜團隊開源的聊天元件,也就是淘寶裡的機器人客服的 UI
2.服務端推送資料接收-位元組流
體驗過 TA 的聊天方式的人不難看出,TA 在回答問題的時候是逐字逐句
回答的,每一個字或者每一句都有可能停頓,然後再返回,像極了人類在思考或者輸入的狀態,那 TA 是怎麼做的呢?
因為涉及到聊天,所以作為前端來說第一想到的是需要升級 http 協議為 websoket,然後通過服務端廣播,客戶端監聽接收來實現;
然而並不用這麼麻煩!!!重點來了!!!👇
OpenAI API
是一個字一個字生成的邊生成邊輸出,介面返回的是 generator
格式,也就是流式文字資料。
通常來說普通的 http 請求我們會設定 content-type:application/json
,也就是是獲取帶有結構體的 json 資料,如果在這種請求場景下,你讓 TA 寫一篇長篇小說,那得等很久才能看到結果~,因為資料量太大了而且需要計算,等介面返回的時候是所有資料載入完的結果。
如果是 generator
格式,對應的 content-type:application/octet-stream
,那麼通過 ES6 中的 async/await
關鍵字以及 fetch API
來接收 generator
物件並將其迴圈輸出到網頁上即可(下面是 ChatGPT 給出的示例程式碼):
其實流對於前端來說並不陌生,很多檔案的下載都是基於流檔案處理的,但是這種 generator 的結構我是第一次有場景用到,所以感覺還挺有意思的~
簡單放了 generator
的動圖,因為有大小限制所以不太清晰,文末有完整小程式體驗連結碼,感興趣的可以掃碼體驗下
上圖可以看到左側文字一直在輸出,右側介面請求 response
並沒有內容,只是 time
一直在 pendding
3.利用 ChatGPT 寫程式碼
其實對於開發來講,TA 比查文件解決問題的效率高的不是一點半點,註解比某些官方文件寫的都細緻,比如
下面是用python 生成微信 js-sdk 簽名的程式碼示例:
個人覺得比微信文件寫的要清楚多了...
效果演示
ChatGPT 專案體驗
微信小程式搜尋“猿記憶”或者掃下面二維碼即可體驗(入口放到了小程式首頁)👇
上面是一個開放的小程式作為示例體驗,回答的問題可能比較基礎,沒有針對某個行業做單獨訓練,模型比較乾淨👆;朋友公司是保險行業,已經用這個訓練出保險行業的數字人,據說已經訓練了上百萬條資料,期待最近能有好的收穫,但是由於資料比較敏感只能貼幾張圖(已訓練好行業模型的示例)👇。
訓練好的模型已經支援文字、圖片、視訊、檔案等
ChatGPT 發展前景
未來每個行業可能都會需要訓練出一個專屬的模型,來做一些重複性的低級別的工作,來提效降成本,所以所有參與者,開發者未來都會充當一個調參師的角色,所以高效的訓練模型是未來 B 端業務值得做的一件事。
總結
說了這麼多,目前還沒有看到某個行業廣泛使用,基本上都是圖個新鮮在觀望,那原因我分析現在有兩個門檻擺在開發者面前,一個是國內未開放,要接入到國內成本還是比較高的,另外一個是行業資料手動訓練的成本也很高,所以希望百度能夠解決這兩個問題,還是很期待三月份文心一言
的上線,到時候體驗體驗👊
以上都是週末短時間內的個人理解,如有錯誤歡迎評論指正~
本文正在參加 ✍🏻 技術視角深入 ChatGPT 徵文活動