利用Github和Railway搭建專屬的ChatGPT
ChatGPT
什么是 ChatGPT
ChatGPT 是一個(gè)基于人工神經(jīng)網(wǎng)絡(luò)技術(shù)的自然語言處理模型,由 OpenAI 開發(fā)。它可以理解和生成自然語言,用于進(jìn)行對(duì)話、翻譯、文本摘要等任務(wù)。ChatGPT 是目前最先進(jìn)的自然語言處理模型之一,它使用了大量的預(yù)訓(xùn)練數(shù)據(jù)和深度學(xué)習(xí)算法來實(shí)現(xiàn)高質(zhì)量的自然語言處理能力。
ChatGPT 的工作原理
ChatGPT 是一個(gè)基于 Transformer 模型的自然語言處理模型,其工作原理可以分為兩個(gè)階段:預(yù)訓(xùn)練和微調(diào)。下面分別對(duì)這兩個(gè)階段進(jìn)行詳細(xì)介紹。
- 預(yù)訓(xùn)練階段
ChatGPT 使用了大量的文本數(shù)據(jù)進(jìn)行無監(jiān)督的預(yù)訓(xùn)練,從而學(xué)習(xí)到了自然語言的表示方式。在這個(gè)階段中,ChatGPT 使用了一種稱為“掩碼語言建模”的技術(shù)來訓(xùn)練模型。具體來說,它會(huì)將輸入的文本中的一些單詞隨機(jī)掩蓋掉,然后讓模型去預(yù)測(cè)這些被掩蓋掉的單詞。這樣的訓(xùn)練方式可以使得模型學(xué)習(xí)到單詞之間的關(guān)系,從而獲得更好的語言表示能力。
- 微調(diào)階段
在預(yù)訓(xùn)練完成后,ChatGPT 可以通過微調(diào)來適應(yīng)特定的任務(wù)。例如,對(duì)于對(duì)話任務(wù),我們可以通過給 ChatGPT 提供一些已知的對(duì)話歷史和當(dāng)前回復(fù)來微調(diào)模型,從而使其能夠更好地生成有意義的回復(fù)。在微調(diào)階段中,ChatGPT 通常會(huì)使用有監(jiān)督的學(xué)習(xí)方法,即使用帶標(biāo)注的數(shù)據(jù)進(jìn)行訓(xùn)練,并通過優(yōu)化損失函數(shù)來更新模型參數(shù)。總之,ChatGPT 的工作原理是通過預(yù)訓(xùn)練和微調(diào)兩個(gè)階段來學(xué)習(xí)自然語言表示,并在特定任務(wù)中使用這些表示來生成有意義的輸出。
ChatGPT 的使用場(chǎng)景
ChatGPT 是一種通用的自然語言處理模型,它的使用場(chǎng)景非常廣泛。以下是一些 ChatGPT 的主要應(yīng)用場(chǎng)景:
- 對(duì)話系統(tǒng):ChatGPT 可以被用來構(gòu)建聊天機(jī)器人、智能客服等對(duì)話系統(tǒng),通過學(xué)習(xí)大量的對(duì)話數(shù)據(jù)來生成自然流暢的回復(fù)。
- 機(jī)器翻譯:ChatGPT 可以被用來進(jìn)行機(jī)器翻譯任務(wù),即將一種語言的文本自動(dòng)翻譯成另一種語言的文本。
- 文本摘要:ChatGPT 可以被用來進(jìn)行文本摘要任務(wù),即從一篇較長(zhǎng)的文章中提取出關(guān)鍵信息,并生成一份簡(jiǎn)潔的摘要。
- 問答系統(tǒng):ChatGPT 可以被用來構(gòu)建問答系統(tǒng),即回答用戶的問題。在這個(gè)場(chǎng)景下,ChatGPT 通常需要閱讀和理解輸入的問題,并通過搜索或推理來生成答案。
- 文本分類:ChatGPT 可以被用來進(jìn)行文本分類任務(wù),例如情感分析、垃圾郵件檢測(cè)等。在這個(gè)場(chǎng)景下,ChatGPT 需要學(xué)習(xí)如何將文本映射到不同的類別。
哎,等等,這不都是說了一些廢話么?到底用在哪呢?
這就看你具體的需求了,比如這篇文章上面的內(nèi)容就是 ChatGPT 寫的。
還比如我叫它幫我寫一個(gè)創(chuàng)建 pipeline 的步驟。
這不比百度香?
下面就帶搭建一個(gè)無需科學(xué)上網(wǎng)的 ChatGPT。
注冊(cè) ChatGPT
注冊(cè)的步驟并不復(fù)雜,主要包含以下幾步:
- 注冊(cè) ChatGPT 賬號(hào)
- 通過短信接碼平臺(tái)[https://sms-activate.org/](https://sms-activate.org/)完成手機(jī)驗(yàn)證。
- 通過[https://chat.openai.com/chat](https://chat.openai.com/chat)登錄使用。
獲取 API Token
賬號(hào)注冊(cè)完成過后,通過https://platform.openai.com/登錄。
然后點(diǎn)擊 Personal 獲取 API Keys。
創(chuàng)建一個(gè)新的 Secret Key 即可。
獲取 Github 代碼
項(xiàng)目自己寫?
不可能!白嫖才香。
將https://github.com/Chanzhaoyu/chatgpt-web項(xiàng)目 fork 到自己的倉(cāng)庫(kù)中。
這不快哉?
開始部署
買服務(wù)器?安裝軟件?安裝 Docker?
No!!!
那樣的成本太高了。這里我們直接用國(guó)外的部署網(wǎng)站,目前比較著名的有:
- fly.io
- render.com
- railway.app
- vercel.com
我們選取 raliway.app 來進(jìn)行我們的部署工作,訪問:https://railway.app/,點(diǎn)擊 Login,選擇 Github 登錄,并進(jìn)行相關(guān)授權(quán):
創(chuàng)建項(xiàng)目
點(diǎn)擊New Project。
然后選擇Deploy from Github repo。
然后選擇 chatgpt-web 項(xiàng)目。
然后點(diǎn)擊Deploy Now即可。
部署過程中,會(huì) Build 鏡像,可以查看具體的日志。
但是現(xiàn)在應(yīng)用是無法正常啟動(dòng)的,因?yàn)槲覀儧]有配置ChatGPT API Key,報(bào)錯(cuò)如下:
添加配置
為了能夠正常啟動(dòng),我們需要添加OPENAI_API_KEY或者OPENAI_ACCESS_TOKEN參數(shù),我這里使用前者,另外還要添加一個(gè)PORT參數(shù),默認(rèn)3002端口。除此之外我還添加了AUTH_SECRET_KEY參數(shù),主要是為我們自己的 GPT 增加一層訪問控制,避免任何人都能使用。
添加完成后如下:
我們?cè)賮砜磻?yīng)用日志,應(yīng)用啟動(dòng)成功。
訪問
1、我們可以在 Settings 處生成一個(gè)隨機(jī)域名,如下:
然后就可以使用隨機(jī)的域名訪問了。
2、使用自定義域名,前提是需要自己準(zhǔn)備一個(gè)可用的域名。
首先,添加一個(gè)自定義域名。
然后,添加一個(gè) CNAME 即可。
然后就可以對(duì)話了。
更新
如果主代碼有更新,我們只需要到 Github 上同步最新的代碼。
然后 Railway 會(huì)自動(dòng)更新。
關(guān)于 Railway
Railway 提供 5 美元,500 個(gè)小時(shí)/月的額度,用完了要么充錢,要么死亡,可以根據(jù)實(shí)際情況來選擇,個(gè)人使用其實(shí)是足夠了,無外乎多搞幾個(gè)賬號(hào)。