基于開(kāi)源的 ChatGPT Web UI 項(xiàng)目,快速構(gòu)建屬于自己的 ChatGPT 站點(diǎn)
作為一個(gè)技術(shù)博主,了不起比較喜歡各種折騰,之前給大家介紹過(guò) ChatGPT? 接入微信,釘釘和知識(shí)星球(如果沒(méi)看過(guò)的可以翻翻前面的文章),最近再看開(kāi)源項(xiàng)目的時(shí)候,發(fā)現(xiàn)了一個(gè) ChatGPT Web UI 項(xiàng)目。
想著剛好之前沒(méi)有將 ChatGPT? 接入過(guò) Web UI,有了這個(gè)開(kāi)源項(xiàng)目可以拿來(lái)使用,真是不錯(cuò),下面是實(shí)操的安裝步驟,分享給大家。
安裝
官方在 Github? 的項(xiàng)目文檔上提供了很多中的安裝方式,包括手動(dòng)安裝,docker? 部署,以及遠(yuǎn)程部署等方法,了不起在選擇部署方式的時(shí)候,一開(kāi)始為了簡(jiǎn)單想著直接使用 docker? 部署就好,可是誰(shuí)想到在服務(wù)器上面部署好了過(guò)后,在網(wǎng)站設(shè)置登錄賬號(hào)密碼后一直會(huì)Connection errored out 的問(wèn)題。
經(jīng)過(guò)翻閱官方的 issue? ,看到很多人都有一樣的問(wèn)題,根據(jù) issue? 中提供的方式,通過(guò)修改 dockerfile? 最終才解決了這個(gè)問(wèn)題。同時(shí)為了修改一些頁(yè)面的標(biāo)題所以決定 fork 源碼,然后自己重新打包鏡像的方式來(lái)部署。
下載源碼
首先我們將 Github? 中的源碼倉(cāng)庫(kù) fork? 一下,然后再將自己的倉(cāng)庫(kù)克隆下來(lái),git clone https://github.com/自己的 github 賬號(hào)/chatgpt-web.git,
下載完成過(guò)后,我們進(jìn)入到項(xiàng)目的目錄中,然后進(jìn)行依賴(lài)的安裝,命令如下
這一步的時(shí)候我們可能會(huì)出現(xiàn)一些問(wèn)題,如下所示
- pip? 不存在:這種的話(huà)需要先安裝 Python 環(huán)境,這里不過(guò)多介紹;
- ERROR: No matching distribution found for tiktoken (from -r requirements.txt (line 4)):這種是自己的 pip 鏡像中不存在相關(guān)依賴(lài)的包,需要更換鏡像
- 官方提供了一個(gè)常見(jiàn)問(wèn)題的清單,可以參考解決官方提供的一個(gè)常見(jiàn)問(wèn)題列表來(lái)進(jìn)行解決。
正常來(lái)說(shuō)遇到相關(guān)問(wèn)題都可以解決,了不起這邊就遇到了第二個(gè)問(wèn)題,參照更換鏡像的方式解決了,不過(guò)環(huán)境不同遇到的問(wèn)題也不相同,大家可以自己排查一下。
源碼部署
首先我們嘗試一下,在不修改源碼的情況下,使用 docker 在服務(wù)器上面部署,看看會(huì)有什么效果。我們?cè)诜?wù)器上面下載完源碼過(guò)后,進(jìn)入到目錄中,然后進(jìn)行鏡像打包
接著我們通過(guò) docker images? 查看下 docker 的鏡像,如下
接下來(lái)我們通過(guò) docker? 來(lái)運(yùn)行 chatgpt-web 這個(gè)容器,執(zhí)行如下命令
然后我們打開(kāi)瀏覽器,通過(guò) ip 和端口直接訪(fǎng)問(wèn),效果如下,先登錄,輸入上面命令中的賬號(hào)和密碼
然后就可以進(jìn)入到系統(tǒng)內(nèi)部,但是當(dāng)我們嘗試去測(cè)試 ChatGPT 的時(shí)候,會(huì)發(fā)現(xiàn)在右上角報(bào)錯(cuò)了,提示無(wú)法鏈接。
在官方的置頂 issue 里面,我們可以看到有很多小伙伴也遇到了這個(gè)問(wèn)題,
最終后大佬分析出來(lái)是因?yàn)樵趩⒂觅~號(hào)和密碼認(rèn)證的情況下,用 ip 直接訪(fǎng)問(wèn)的時(shí)候獲取到的 token 有錯(cuò)誤,導(dǎo)致無(wú)法使用。
修改源碼
找到問(wèn)題所在過(guò)后,也就可以解決問(wèn)題,在同一個(gè) issue 下面就有人提到如果要在外網(wǎng)部署,要修改的是 Dockerfile? 文件,在里面 CMD 命令前面加上如下一行
RUN sed -i 's/websocket\.cookies\.get("access-token")/websocket.cookies.get("access-token-unsecure")/' /root/.local/lib/python3.9/site-packages/gradio/routes.py
之所以要加上這一行是因?yàn)樵诜?wù)器上面部署的時(shí)候拿不到正確的 token?,而這一行的命令是通過(guò) sed? 命令將 routes.py? 腳本中的 access_token_unsecure? 替換成 access_token? 從而獲取到認(rèn)證的 token。
那么接下來(lái)我們修改一下 Dockerfile ,然后重新構(gòu)建一個(gè)新的鏡像,再進(jìn)行啟動(dòng),觀察是否可以解決。
通過(guò) vim Dockerfile 命令修改,然后再構(gòu)建一個(gè)新的鏡像
可以看到,這里我們有兩個(gè)鏡像了,雖然名子一樣,但是對(duì)應(yīng)的 TAG 是不一樣的,
同樣進(jìn)行登錄過(guò)后,我們會(huì)發(fā)現(xiàn)這次正常了,可以愉快的進(jìn)行玩耍了。
調(diào)戲
首先我們可以在官方的 Prompt 模板中選擇一個(gè)好玩的,里面包含的模板有很多。
比如我們可以讓 ChatGPT? 充當(dāng)一個(gè) SQL? 終端,然后幫我們執(zhí)行 SQL 語(yǔ)句。
怎么樣是不是很神奇?還有很多有趣的模板可以選擇,也可以自己設(shè)定一個(gè)符合自己工作或者學(xué)習(xí)的 Prompt? 來(lái)進(jìn)行 AI 的調(diào)戲。同時(shí)因?yàn)槲覀兪腔谠创a手動(dòng)進(jìn)行構(gòu)建鏡像的,可以把一些內(nèi)容換成自己的,或者自行進(jìn)行一些二次開(kāi)發(fā)都是可以的。
總結(jié)
前面的文章給大家接入了如何接入微信,釘釘以及知識(shí)星球,今天的文章教大家如何構(gòu)建一個(gè)屬于自己的 ChatGPT? 平臺(tái),對(duì)于 ChatGPT 這種劃時(shí)代的產(chǎn)品,在這么短的時(shí)間里面已經(jīng)風(fēng)靡全球了,各種互聯(lián)網(wǎng)公司都投入大模型的研究,更有很多 AI 領(lǐng)域的人都開(kāi)啟了創(chuàng)業(yè)之旅,比如王慧文,李開(kāi)復(fù)等。